diff --git a/.github/workflows/partior-ci.yaml b/.github/workflows/partior-ci.yaml new file mode 100644 index 0000000000..fe69aca95b --- /dev/null +++ b/.github/workflows/partior-ci.yaml @@ -0,0 +1,18 @@ +name: Partior Golang CI +on: + pull_request: + branches: [ main, base/**, release/**, hotfix/** ] + paths-ignore: + - '.github/**' + push: + branches: [ main, base/** ] + paths-ignore: + - '.github/**' + workflow_dispatch: +jobs: + ci-pipeline: + uses: partior-libs/controller-3p-pipelines/.github/workflows/pipeline-template-go-ci-quorum.yaml@main + with: + CONTROLLER-REPO: partior-libs/controller-3p-pipelines + PROJECT-REPO: ${{ github.repository }} + secrets: inherit \ No newline at end of file diff --git a/README.md b/README.md index 42724dd5cf..29f621811e 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ The official docker containers can be found under https://hub.docker.com/u/quoru The following GoQuorum-related libraries/applications have been created by Third Parties and as such are not specifically endorsed by J.P. Morgan. A big thanks to the developers for improving the tooling around GoQuorum! -* [Quorum Blockchain Explorer](https://github.com/web3labs/epirus-free) - a Blockchain Explorer for GoQuorum which supports viewing private transactions +* [Chainlens Blockchain Explorer](https://github.com/web3labs/chainlens-free) - a Blockchain Explorer for GoQuorum which supports viewing private transactions * [Quorum-Genesis](https://github.com/davebryson/quorum-genesis) - A simple CL utility for GoQuorum to help populate the genesis file with voters and makers * [Quorum Maker](https://github.com/synechron-finlabs/quorum-maker/) - a utility to create GoQuorum nodes * [ERC20 REST service](https://github.com/web3labs/erc20-rest-service) - a GoQuorum-supported RESTful service for creating and managing ERC-20 tokens diff --git a/accounts/abi/abi.go b/accounts/abi/abi.go index 5ca7c241db..cd2f4d7978 100644 --- a/accounts/abi/abi.go +++ b/accounts/abi/abi.go @@ -34,6 +34,7 @@ type ABI struct { Constructor Method Methods map[string]Method Events map[string]Event + Errors map[string]Error // Additional "special" functions introduced in solidity v0.6.0. // It's separated from the original default fallback. Each contract @@ -157,12 +158,13 @@ func (abi *ABI) UnmarshalJSON(data []byte) error { } abi.Methods = make(map[string]Method) abi.Events = make(map[string]Event) + abi.Errors = make(map[string]Error) for _, field := range fields { switch field.Type { case "constructor": abi.Constructor = NewMethod("", "", Constructor, field.StateMutability, field.Constant, field.Payable, field.Inputs, nil) case "function": - name := abi.overloadedMethodName(field.Name) + name := overloadedName(field.Name, func(s string) bool { _, ok := abi.Methods[s]; return ok }) abi.Methods[name] = NewMethod(name, field.Name, Function, field.StateMutability, field.Constant, field.Payable, field.Inputs, field.Outputs) case "fallback": // New introduced function type in v0.6.0, check more detail @@ -182,8 +184,10 @@ func (abi *ABI) UnmarshalJSON(data []byte) error { } abi.Receive = NewMethod("", "", Receive, field.StateMutability, field.Constant, field.Payable, nil, nil) case "event": - name := abi.overloadedEventName(field.Name) + name := overloadedName(field.Name, func(s string) bool { _, ok := abi.Events[s]; return ok }) abi.Events[name] = NewEvent(name, field.Name, field.Anonymous, field.Inputs) + case "error": + abi.Errors[field.Name] = NewError(field.Name, field.Inputs) default: return fmt.Errorf("abi: could not recognize type %v of field %v", field.Type, field.Name) } @@ -191,36 +195,6 @@ func (abi *ABI) UnmarshalJSON(data []byte) error { return nil } -// overloadedMethodName returns the next available name for a given function. -// Needed since solidity allows for function overload. -// -// e.g. if the abi contains Methods send, send1 -// overloadedMethodName would return send2 for input send. -func (abi *ABI) overloadedMethodName(rawName string) string { - name := rawName - _, ok := abi.Methods[name] - for idx := 0; ok; idx++ { - name = fmt.Sprintf("%s%d", rawName, idx) - _, ok = abi.Methods[name] - } - return name -} - -// overloadedEventName returns the next available name for a given event. -// Needed since solidity allows for event overload. -// -// e.g. if the abi contains events received, received1 -// overloadedEventName would return received2 for input received. -func (abi *ABI) overloadedEventName(rawName string) string { - name := rawName - _, ok := abi.Events[name] - for idx := 0; ok; idx++ { - name = fmt.Sprintf("%s%d", rawName, idx) - _, ok = abi.Events[name] - } - return name -} - // MethodById looks up a method by the 4-byte id, // returns nil if none found. func (abi *ABI) MethodById(sigdata []byte) (*Method, error) { @@ -277,3 +251,20 @@ func UnpackRevert(data []byte) (string, error) { } return unpacked[0].(string), nil } + +// overloadedName returns the next available name for a given thing. +// Needed since solidity allows for overloading. +// +// e.g. if the abi contains Methods send, send1 +// overloadedName would return send2 for input send. +// +// overloadedName works for methods, events and errors. +func overloadedName(rawName string, isAvail func(string) bool) string { + name := rawName + ok := isAvail(name) + for idx := 0; ok; idx++ { + name = fmt.Sprintf("%s%d", rawName, idx) + ok = isAvail(name) + } + return name +} diff --git a/accounts/abi/abi_test.go b/accounts/abi/abi_test.go index d81638e5e8..8954858d18 100644 --- a/accounts/abi/abi_test.go +++ b/accounts/abi/abi_test.go @@ -296,6 +296,20 @@ func TestOverloadedMethodSignature(t *testing.T) { check("bar0", "bar(uint256,uint256)", false) } +func TestCustomErrors(t *testing.T) { + json := `[{ "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ],"name": "MyError", "type": "error"} ]` + abi, err := JSON(strings.NewReader(json)) + if err != nil { + t.Fatal(err) + } + check := func(name string, expect string) { + if abi.Errors[name].Sig != expect { + t.Fatalf("The signature of overloaded method mismatch, want %s, have %s", expect, abi.Methods[name].Sig) + } + } + check("MyError", "MyError(uint256)") +} + func TestMultiPack(t *testing.T) { abi, err := JSON(strings.NewReader(jsondata)) if err != nil { diff --git a/accounts/abi/bind/base.go b/accounts/abi/bind/base.go index 5d32806a0e..cec4a18cce 100644 --- a/accounts/abi/bind/base.go +++ b/accounts/abi/bind/base.go @@ -21,6 +21,8 @@ import ( "errors" "fmt" "math/big" + "strings" + "sync" "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi" @@ -87,6 +89,29 @@ type WatchOpts struct { Context context.Context // Network context to support cancellation and timeouts (nil = no timeout) } +// MetaData collects all metadata for a bound contract. +type MetaData struct { + mu sync.Mutex + Sigs map[string]string + Bin string + ABI string + ab *abi.ABI +} + +func (m *MetaData) GetAbi() (*abi.ABI, error) { + m.mu.Lock() + defer m.mu.Unlock() + if m.ab != nil { + return m.ab, nil + } + if parsed, err := abi.JSON(strings.NewReader(m.ABI)); err != nil { + return nil, err + } else { + m.ab = &parsed + } + return m.ab, nil +} + // BoundContract is the base wrapper object that reflects a contract on the // Ethereum network. It contains a collection of methods that are used by the // higher level contract bindings to operate. diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go index b0b8853c43..1dcf95f4cd 100644 --- a/accounts/abi/bind/bind_test.go +++ b/accounts/abi/bind/bind_test.go @@ -1785,6 +1785,61 @@ var bindTests = []struct { nil, nil, }, + // Test errors introduced in v0.8.4 + { + `NewErrors`, + ` + pragma solidity >0.8.4; + + contract NewErrors { + error MyError(uint256); + error MyError1(uint256); + error MyError2(uint256, uint256); + error MyError3(uint256 a, uint256 b, uint256 c); + function Error() public pure { + revert MyError3(1,2,3); + } + } + `, + []string{"0x6080604052348015600f57600080fd5b5060998061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063726c638214602d575b600080fd5b60336035565b005b60405163024876cd60e61b815260016004820152600260248201526003604482015260640160405180910390fdfea264697066735822122093f786a1bc60216540cd999fbb4a6109e0fef20abcff6e9107fb2817ca968f3c64736f6c63430008070033"}, + []string{`[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"MyError","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"MyError1","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"MyError2","type":"error"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"},{"internalType":"uint256","name":"c","type":"uint256"}],"name":"MyError3","type":"error"},{"inputs":[],"name":"Error","outputs":[],"stateMutability":"pure","type":"function"}]`}, + ` + "math/big" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/ethconfig" + `, + ` + var ( + key, _ = crypto.GenerateKey() + user, _ = bind.NewKeyedTransactorWithChainID(key, big.NewInt(1337)) + sim = backends.NewSimulatedBackend(core.GenesisAlloc{user.From: {Balance: big.NewInt(1000000000000000000)}}, ethconfig.Defaults.Miner.GasCeil) + ) + defer sim.Close() + + _, tx, contract, err := DeployNewErrors(user, sim) + if err != nil { + t.Fatal(err) + } + sim.Commit() + _, err = bind.WaitDeployed(nil, sim, tx) + if err != nil { + t.Error(err) + } + if err := contract.Error(new(bind.CallOpts)); err == nil { + t.Fatalf("expected contract to throw error") + } + // TODO (MariusVanDerWijden unpack error using abigen + // once that is implemented + `, + nil, + nil, + nil, + nil, + }, } // Tests that packages generated by the binder can be successfully compiled and diff --git a/accounts/abi/bind/template.go b/accounts/abi/bind/template.go index 6087e02f3c..d9101c1c51 100644 --- a/accounts/abi/bind/template.go +++ b/accounts/abi/bind/template.go @@ -90,6 +90,7 @@ package {{.Package}} import ( "math/big" "strings" + "errors" ethereum "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi" @@ -101,6 +102,7 @@ import ( // Reference imports to suppress errors if they are not otherwise used. var ( + _ = errors.New _ = big.NewInt _ = strings.NewReader _ = ethereum.NotFound @@ -120,34 +122,50 @@ var ( {{end}} {{range $contract := .Contracts}} + // {{.Type}}MetaData contains all meta data concerning the {{.Type}} contract. + var {{.Type}}MetaData = &bind.MetaData{ + ABI: "{{.InputABI}}", + {{if $contract.FuncSigs -}} + Sigs: map[string]string{ + {{range $strsig, $binsig := .FuncSigs}}"{{$binsig}}": "{{$strsig}}", + {{end}} + }, + {{end -}} + {{if .InputBin -}} + Bin: "0x{{.InputBin}}", + {{end}} + } // {{.Type}}ABI is the input ABI used to generate the binding from. - const {{.Type}}ABI = "{{.InputABI}}" + // Deprecated: Use {{.Type}}MetaData.ABI instead. + var {{.Type}}ABI = {{.Type}}MetaData.ABI var {{.Type}}ParsedABI, _ = abi.JSON(strings.NewReader({{.Type}}ABI)) {{if $contract.FuncSigs}} + // Deprecated: Use {{.Type}}MetaData.Sigs instead. // {{.Type}}FuncSigs maps the 4-byte function signature to its string representation. - var {{.Type}}FuncSigs = map[string]string{ - {{range $strsig, $binsig := .FuncSigs}}"{{$binsig}}": "{{$strsig}}", - {{end}} - } + var {{.Type}}FuncSigs = {{.Type}}MetaData.Sigs {{end}} {{if .InputBin}} // {{.Type}}Bin is the compiled bytecode used for deploying new contracts. - var {{.Type}}Bin = "0x{{.InputBin}}" + // Deprecated: Use {{.Type}}MetaData.Bin instead. + var {{.Type}}Bin = {{.Type}}MetaData.Bin // Deploy{{.Type}} deploys a new Ethereum contract, binding an instance of {{.Type}} to it. func Deploy{{.Type}}(auth *bind.TransactOpts, backend bind.ContractBackend {{range .Constructor.Inputs}}, {{.Name}} {{bindtype .Type $structs}}{{end}}) (common.Address, *types.Transaction, *{{.Type}}, error) { - parsed, err := abi.JSON(strings.NewReader({{.Type}}ABI)) + parsed, err := {{.Type}}MetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } {{range $pattern, $name := .Libraries}} {{decapitalise $name}}Addr, _, _, _ := Deploy{{capitalise $name}}(auth, backend) {{$contract.Type}}Bin = strings.Replace({{$contract.Type}}Bin, "__${{$pattern}}$__", {{decapitalise $name}}Addr.String()[2:], -1) {{end}} - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex({{.Type}}Bin), backend {{range .Constructor.Inputs}}, {{.Name}}{{end}}) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex({{.Type}}Bin), backend {{range .Constructor.Inputs}}, {{.Name}}{{end}}) if err != nil { return common.Address{}, nil, nil, err } diff --git a/accounts/abi/error.go b/accounts/abi/error.go index 7add707292..3d1a4877dd 100644 --- a/accounts/abi/error.go +++ b/accounts/abi/error.go @@ -1,4 +1,4 @@ -// Copyright 2016 The go-ethereum Authors +// Copyright 2021 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -17,65 +17,75 @@ package abi import ( + "bytes" "errors" "fmt" - "reflect" -) + "strings" -var ( - errBadBool = errors.New("abi: improperly encoded boolean value") + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" ) -// formatSliceString formats the reflection kind with the given slice size -// and returns a formatted string representation. -func formatSliceString(kind reflect.Kind, sliceSize int) string { - if sliceSize == -1 { - return fmt.Sprintf("[]%v", kind) - } - return fmt.Sprintf("[%d]%v", sliceSize, kind) +type Error struct { + Name string + Inputs Arguments + str string + // Sig contains the string signature according to the ABI spec. + // e.g. event foo(uint32 a, int b) = "foo(uint32,int256)" + // Please note that "int" is substitute for its canonical representation "int256" + Sig string + // ID returns the canonical representation of the event's signature used by the + // abi definition to identify event names and types. + ID common.Hash } -// sliceTypeCheck checks that the given slice can by assigned to the reflection -// type in t. -func sliceTypeCheck(t Type, val reflect.Value) error { - if val.Kind() != reflect.Slice && val.Kind() != reflect.Array { - return typeErr(formatSliceString(t.GetType().Kind(), t.Size), val.Type()) +func NewError(name string, inputs Arguments) Error { + // sanitize inputs to remove inputs without names + // and precompute string and sig representation. + names := make([]string, len(inputs)) + types := make([]string, len(inputs)) + for i, input := range inputs { + if input.Name == "" { + inputs[i] = Argument{ + Name: fmt.Sprintf("arg%d", i), + Indexed: input.Indexed, + Type: input.Type, + } + } else { + inputs[i] = input + } + // string representation + names[i] = fmt.Sprintf("%v %v", input.Type, inputs[i].Name) + if input.Indexed { + names[i] = fmt.Sprintf("%v indexed %v", input.Type, inputs[i].Name) + } + // sig representation + types[i] = input.Type.String() } - if t.T == ArrayTy && val.Len() != t.Size { - return typeErr(formatSliceString(t.Elem.GetType().Kind(), t.Size), formatSliceString(val.Type().Elem().Kind(), val.Len())) - } + str := fmt.Sprintf("error %v(%v)", name, strings.Join(names, ", ")) + sig := fmt.Sprintf("%v(%v)", name, strings.Join(types, ",")) + id := common.BytesToHash(crypto.Keccak256([]byte(sig))) - if t.Elem.T == SliceTy || t.Elem.T == ArrayTy { - if val.Len() > 0 { - return sliceTypeCheck(*t.Elem, val.Index(0)) - } + return Error{ + Name: name, + Inputs: inputs, + str: str, + Sig: sig, + ID: id, } +} - if val.Type().Elem().Kind() != t.Elem.GetType().Kind() { - return typeErr(formatSliceString(t.Elem.GetType().Kind(), t.Size), val.Type()) - } - return nil +func (e *Error) String() string { + return e.str } -// typeCheck checks that the given reflection value can be assigned to the reflection -// type in t. -func typeCheck(t Type, value reflect.Value) error { - if t.T == SliceTy || t.T == ArrayTy { - return sliceTypeCheck(t, value) +func (e *Error) Unpack(data []byte) (interface{}, error) { + if len(data) < 4 { + return "", errors.New("invalid data for unpacking") } - - // Check base type validity. Element types will be checked later on. - if t.GetType().Kind() != value.Kind() { - return typeErr(t.GetType().Kind(), value.Kind()) - } else if t.T == FixedBytesTy && t.Size != value.Len() { - return typeErr(t.GetType(), value.Type()) - } else { - return nil + if !bytes.Equal(data[:4], e.ID[:4]) { + return "", errors.New("invalid data for unpacking") } -} - -// typeErr returns a formatted type casting error. -func typeErr(expected, got interface{}) error { - return fmt.Errorf("abi: cannot use %v as type %v as argument", got, expected) + return e.Inputs.Unpack(data[4:]) } diff --git a/accounts/abi/error_handling.go b/accounts/abi/error_handling.go new file mode 100644 index 0000000000..f0f71b6c91 --- /dev/null +++ b/accounts/abi/error_handling.go @@ -0,0 +1,82 @@ +// Copyright 2016 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package abi + +import ( + "errors" + "fmt" + "reflect" +) + +var ( + errBadBool = errors.New("abi: improperly encoded boolean value") +) + +// formatSliceString formats the reflection kind with the given slice size +// and returns a formatted string representation. +func formatSliceString(kind reflect.Kind, sliceSize int) string { + if sliceSize == -1 { + return fmt.Sprintf("[]%v", kind) + } + return fmt.Sprintf("[%d]%v", sliceSize, kind) +} + +// sliceTypeCheck checks that the given slice can by assigned to the reflection +// type in t. +func sliceTypeCheck(t Type, val reflect.Value) error { + if val.Kind() != reflect.Slice && val.Kind() != reflect.Array { + return typeErr(formatSliceString(t.GetType().Kind(), t.Size), val.Type()) + } + + if t.T == ArrayTy && val.Len() != t.Size { + return typeErr(formatSliceString(t.Elem.GetType().Kind(), t.Size), formatSliceString(val.Type().Elem().Kind(), val.Len())) + } + + if t.Elem.T == SliceTy || t.Elem.T == ArrayTy { + if val.Len() > 0 { + return sliceTypeCheck(*t.Elem, val.Index(0)) + } + } + + if val.Type().Elem().Kind() != t.Elem.GetType().Kind() { + return typeErr(formatSliceString(t.Elem.GetType().Kind(), t.Size), val.Type()) + } + return nil +} + +// typeCheck checks that the given reflection value can be assigned to the reflection +// type in t. +func typeCheck(t Type, value reflect.Value) error { + if t.T == SliceTy || t.T == ArrayTy { + return sliceTypeCheck(t, value) + } + + // Check base type validity. Element types will be checked later on. + if t.GetType().Kind() != value.Kind() { + return typeErr(t.GetType().Kind(), value.Kind()) + } else if t.T == FixedBytesTy && t.Size != value.Len() { + return typeErr(t.GetType(), value.Type()) + } else { + return nil + } + +} + +// typeErr returns a formatted type casting error. +func typeErr(expected, got interface{}) error { + return fmt.Errorf("abi: cannot use %v as type %v as argument", got, expected) +} diff --git a/consensus/istanbul/config.go b/consensus/istanbul/config.go index f67048a4a4..ea0af0b0c1 100644 --- a/consensus/istanbul/config.go +++ b/consensus/istanbul/config.go @@ -24,6 +24,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "github.com/naoina/toml" ) @@ -35,6 +36,8 @@ const ( Sticky ) +const MaxValidatorSetInRegistry = 128 // Max number of ValidatorSet in the registry + // ProposerPolicy represents the Validator Proposer Policy type ProposerPolicy struct { Id ProposerPolicyId // Could be RoundRobin or Sticky @@ -111,17 +114,26 @@ func (p *ProposerPolicy) RegisterValidatorSet(valSet ValidatorSet) { p.registry = []ValidatorSet{valSet} } else { p.registry = append(p.registry, valSet) + // Non-validators don't ever call ClearRegistry + // Validators cap the registry to MaxValidatorSetInRegistry length to prevent unexpected leaks + if len(p.registry) > MaxValidatorSetInRegistry { + p.registry = p.registry[1:] + } } + log.Debug("Validator Policy Registry", "length", p.GetRegistrySize()) } // ClearRegistry removes any ValidatorSet from the ProposerPolicy registry func (p *ProposerPolicy) ClearRegistry() { p.registryMU.Lock() defer p.registryMU.Unlock() - p.registry = nil } +func (p *ProposerPolicy) GetRegistrySize() int { + return len(p.registry) +} + type Config struct { RequestTimeout uint64 `toml:",omitempty"` // The timeout for each Istanbul round in milliseconds. BlockPeriod uint64 `toml:",omitempty"` // Default minimum difference between two consecutive block's timestamps in second diff --git a/consensus/istanbul/qbft/core/core.go b/consensus/istanbul/qbft/core/core.go index 20bd1569c3..39e6043ce0 100644 --- a/consensus/istanbul/qbft/core/core.go +++ b/consensus/istanbul/qbft/core/core.go @@ -78,8 +78,9 @@ type core struct { backlogs map[common.Address]*prque.Prque backlogsMu *sync.Mutex - current *roundState - handlerWg *sync.WaitGroup + current *roundState + currentMutex sync.Mutex + handlerWg *sync.WaitGroup roundChangeSet *roundChangeSet roundChangeTimer *time.Timer @@ -116,6 +117,9 @@ func (c *core) IsCurrentProposal(blockHash common.Hash) bool { // startNewRound starts a new round. if round equals to 0, it means to starts a new sequence func (c *core) startNewRound(round *big.Int) { + c.currentMutex.Lock() + defer c.currentMutex.Unlock() + var logger log.Logger if c.current == nil { logger = c.logger.New("old.round", -1, "old.seq", 0) @@ -261,13 +265,32 @@ func (c *core) newRoundChangeTimer() { // set timeout based on the round number baseTimeout := time.Duration(c.config.GetConfig(c.current.Sequence()).RequestTimeout) * time.Millisecond round := c.current.Round().Uint64() - - timeout := baseTimeout * time.Duration(math.Pow(2, float64(round))) - maxRequestTimeout := time.Duration(c.config.GetConfig(c.current.Sequence()).MaxRequestTimeoutSeconds) * time.Second - if maxRequestTimeout > time.Duration(0) && timeout > maxRequestTimeout { - timeout = maxRequestTimeout + // If the upper limit of the request timeout is capped by small maxRequestTimeout, round can be a quite large number, + // which leads to float64 overflow, making its value negative or zero forever after some point. + // In this case we cannot simply use math.Pow and have to implement a safeguard on our own, at the cost of performance (which is not important in this case). + var timeout time.Duration + if maxRequestTimeout > time.Duration(0) { + timeout = baseTimeout + for i := uint64(0); i < round; i++ { + timeout = timeout * 2 + if timeout > maxRequestTimeout { + timeout = maxRequestTimeout + break + } + } + // prevent log storm when unexpected overflow happens + if timeout < baseTimeout { + c.currentLogger(true, nil).Error("QBFT: Possible request timeout overflow detected, setting timeout value to maxRequestTimeout", + "timeout", timeout.Seconds(), + "max_request_timeout", maxRequestTimeout.Seconds(), + ) + timeout = maxRequestTimeout + } + } else { + // effectively impossible to observe overflow happen when maxRequestTimeout is disabled + timeout = baseTimeout * time.Duration(math.Pow(2, float64(round))) } c.currentLogger(true, nil).Trace("QBFT: start new ROUND-CHANGE timer", "timeout", timeout.Seconds()) diff --git a/consensus/istanbul/qbft/core/preprepare.go b/consensus/istanbul/qbft/core/preprepare.go index 31305ec5aa..098a37c417 100644 --- a/consensus/istanbul/qbft/core/preprepare.go +++ b/consensus/istanbul/qbft/core/preprepare.go @@ -34,6 +34,11 @@ import ( // - extends PRE-PREPARE message with ROUND-CHANGE and PREPARE justification // - broadcast PRE-PREPARE message to other validators func (c *core) sendPreprepareMsg(request *Request) { + // c.current and c.valSet (checked in IsProposer()) is updated asynchronously in startNewRound(), + // need to prevent race condition with mutex + c.currentMutex.Lock() + defer c.currentMutex.Unlock() + logger := c.currentLogger(true, nil) // If I'm the proposer and I have the same sequence with the proposal diff --git a/consensus/istanbul/validator/proposerpolicy_test.go b/consensus/istanbul/validator/proposerpolicy_test.go index 0159787bfa..1883b2d7ba 100644 --- a/consensus/istanbul/validator/proposerpolicy_test.go +++ b/consensus/istanbul/validator/proposerpolicy_test.go @@ -24,15 +24,19 @@ import ( "github.com/stretchr/testify/assert" ) +var ( + addr1 = common.HexToAddress("0xc53f2189bf6d7bf56722731787127f90d319e112") + addr2 = common.HexToAddress("0xed2d479591fe2c5626ce09bca4ed2a62e00e5bc2") + addr3 = common.HexToAddress("0xc8417f834995aaeb35f342a67a4961e19cd4735c") + addr4 = common.HexToAddress("0x784ae51f5013b51c8360afdf91c6bc5a16f586ea") + addr5 = common.HexToAddress("0xecf0974e6f0630fd91ea4da8399cdb3f59e5220f") + addr6 = common.HexToAddress("0x411c4d11acd714b82a5242667e36de14b9e1d10b") + addr7 = common.HexToAddress("0x681381b3D0DaaC179d95aCc9e22E23da2DA670f6") + addrSet = []common.Address{addr1, addr2, addr3, addr4, addr5, addr6} + addrSet2 = []common.Address{addr7, addr1, addr2, addr3, addr4, addr5} +) + func TestProposerPolicy(t *testing.T) { - addr1 := common.HexToAddress("0xc53f2189bf6d7bf56722731787127f90d319e112") - addr2 := common.HexToAddress("0xed2d479591fe2c5626ce09bca4ed2a62e00e5bc2") - addr3 := common.HexToAddress("0xc8417f834995aaeb35f342a67a4961e19cd4735c") - addr4 := common.HexToAddress("0x784ae51f5013b51c8360afdf91c6bc5a16f586ea") - addr5 := common.HexToAddress("0xecf0974e6f0630fd91ea4da8399cdb3f59e5220f") - addr6 := common.HexToAddress("0x411c4d11acd714b82a5242667e36de14b9e1d10b") - - addrSet := []common.Address{addr1, addr2, addr3, addr4, addr5, addr6} addressSortedByByte := []common.Address{addr6, addr4, addr1, addr3, addr5, addr2} addressSortedByString := []common.Address{addr6, addr4, addr1, addr2, addr5, addr3} @@ -51,3 +55,17 @@ func TestProposerPolicy(t *testing.T) { assert.Equal(t, addressSortedByString[i].Hex(), valList[i].String(), "validatorSet not string sorted") } } + +func TestProposerPolicyRegistration(t *testing.T) { + // test that registration can't go beyond MaxValidatorSetInRegistry limit + pp := istanbul.NewRoundRobinProposerPolicy() + pp2 := istanbul.NewRoundRobinProposerPolicy() + valSet := NewSet(addrSet, pp) + valSet2 := NewSet(addrSet2, pp2) + + for i := 0; i < istanbul.MaxValidatorSetInRegistry+100; i++ { + pp.RegisterValidatorSet(valSet) + } + pp.RegisterValidatorSet(valSet2) + assert.Equal(t, istanbul.MaxValidatorSetInRegistry, pp.GetRegistrySize(), "validator set not dropped") +} diff --git a/console/console.go b/console/console.go index 75ab38fd27..732d31e5fd 100644 --- a/console/console.go +++ b/console/console.go @@ -17,7 +17,6 @@ package console import ( - "context" "fmt" "io" "io/ioutil" @@ -354,25 +353,19 @@ func (c *Console) Welcome() { // Get the consensus mechanism that is in use func (c *Console) getConsensus() string { - var nodeInfo struct { - Protocols struct { - Eth struct { // only partial of eth/handler.go#NodeInfo - Consensus string - } - Istanbul struct { // a bit different from others - Consensus string - } + if apis, err := c.client.SupportedModules(); err == nil { + _, raft := apis["raft"] + if raft { + return "raft" } + _, ibft := apis["istanbul"] + if ibft { + return "istanbul" + } + return "ethhash" } - - if err := c.client.CallContext(context.Background(), &nodeInfo, "admin_nodeInfo"); err != nil { - _, _ = fmt.Fprintf(c.printer, "WARNING: call to admin.getNodeInfo() failed, unable to determine consensus mechanism\n") - return "unknown" - } - if nodeInfo.Protocols.Istanbul.Consensus != "" { - return nodeInfo.Protocols.Istanbul.Consensus - } - return nodeInfo.Protocols.Eth.Consensus + _, _ = fmt.Fprintf(c.printer, "WARNING: call to rpc_modules() failed, unable to determine consensus mechanism\n") + return "unknown" } // Evaluate executes code and pretty prints the result to the specified output diff --git a/core/state_transition_pmh.go b/core/state_transition_pmh.go index 0dd65d92ac..731f0240b2 100644 --- a/core/state_transition_pmh.go +++ b/core/state_transition_pmh.go @@ -7,6 +7,7 @@ import ( "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/permission/core" "github.com/ethereum/go-ethereum/private/engine" ) @@ -86,6 +87,10 @@ func (pmh *privateMessageHandler) verify(vmerr error) (bool, error) { log.Trace("Verify hashes of affected contracts", "expectedHashes", pmh.receivedPrivacyMetadata.ACHashes, "numberOfAffectedAddresses", len(actualACAddresses)) privacyFlag := pmh.receivedPrivacyMetadata.PrivacyFlag for _, addr := range actualACAddresses { + if core.ContractWhitelistMap != nil && core.ContractWhitelistMap.GetContractWhitelistByAddress(addr) { + // introduce a whitelist to allow whitelisting of contracts for EP simulation skips + continue + } // GetPrivacyMetadata is invoked on the privateState (as the tx is private) and it returns: // 1. public contacts: privacyMetadata = nil, err = nil // 2. private contracts of type: diff --git a/core/tx_list.go b/core/tx_list.go index 894640d570..44018cf35b 100644 --- a/core/tx_list.go +++ b/core/tx_list.go @@ -21,6 +21,8 @@ import ( "math" "math/big" "sort" + "sync" + "sync/atomic" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" @@ -442,9 +444,11 @@ func (h *priceHeap) Pop() interface{} { // in txpool but only interested in the remote part. It means only remote transactions // will be considered for tracking, sorting, eviction, etc. type txPricedList struct { - all *txLookup // Pointer to the map of all transactions - remotes *priceHeap // Heap of prices of all the stored **remote** transactions - stales int // Number of stale price points to (re-heap trigger) + all *txLookup // Pointer to the map of all transactions + remotes *priceHeap // Heap of prices of all the stored **remote** transactions + stales int64 // Number of stale price points to (re-heap trigger) + reheapMu sync.Mutex // Mutex asserts that only one routine is reheaping the list + } // newTxPricedList creates a new price-sorted transaction heap. @@ -468,8 +472,8 @@ func (l *txPricedList) Put(tx *types.Transaction, local bool) { // the heap if a large enough ratio of transactions go stale. func (l *txPricedList) Removed(count int) { // Bump the stale counter, but exit if still too low (< 25%) - l.stales += count - if l.stales <= len(*l.remotes)/4 { + stales := atomic.AddInt64(&l.stales, int64(count)) + if int(stales) <= len(*l.remotes)/4 { return } // Seems we've reached a critical number of stale transactions, reheap @@ -487,7 +491,7 @@ func (l *txPricedList) Cap(threshold *big.Int) types.Transactions { cheapest := (*l.remotes)[0] if l.all.GetRemote(cheapest.Hash()) == nil { // Removed or migrated heap.Pop(l.remotes) - l.stales-- + atomic.AddInt64(&l.stales, -1) continue } // Stop the discards if we've reached the threshold @@ -507,7 +511,7 @@ func (l *txPricedList) Underpriced(tx *types.Transaction) bool { for len(*l.remotes) > 0 { head := []*types.Transaction(*l.remotes)[0] if l.all.GetRemote(head.Hash()) == nil { // Removed or migrated - l.stales-- + atomic.AddInt64(&l.stales, -1) heap.Pop(l.remotes) continue } @@ -533,7 +537,7 @@ func (l *txPricedList) Discard(slots int, force bool) (types.Transactions, bool) // Discard stale transactions if found during cleanup tx := heap.Pop(l.remotes).(*types.Transaction) if l.all.GetRemote(tx.Hash()) == nil { // Removed or migrated - l.stales-- + atomic.AddInt64(&l.stales, -1) continue } // Non stale transaction found, discard it @@ -552,9 +556,11 @@ func (l *txPricedList) Discard(slots int, force bool) (types.Transactions, bool) // Reheap forcibly rebuilds the heap based on the current remote transaction set. func (l *txPricedList) Reheap() { + l.reheapMu.Lock() + defer l.reheapMu.Unlock() reheap := make(priceHeap, 0, l.all.RemoteCount()) - - l.stales, l.remotes = 0, &reheap + atomic.StoreInt64(&l.stales, 0) + l.remotes = &reheap l.all.Range(func(hash common.Hash, tx *types.Transaction, local bool) bool { *l.remotes = append(*l.remotes, tx) return true diff --git a/core/tx_pool.go b/core/tx_pool.go index 8a681cfdde..3f49e24d5d 100644 --- a/core/tx_pool.go +++ b/core/tx_pool.go @@ -22,6 +22,7 @@ import ( "math/big" "sort" "sync" + "sync/atomic" "time" "github.com/ethereum/go-ethereum/common" @@ -265,6 +266,7 @@ type TxPool struct { reorgDoneCh chan chan struct{} reorgShutdownCh chan struct{} // requests shutdown of scheduleReorgLoop wg sync.WaitGroup // tracks loop, scheduleReorgLoop + initDoneCh chan struct{} // is closed once the pool is initialized (for tests) } type txpoolResetRequest struct { @@ -293,6 +295,7 @@ func NewTxPool(config TxPoolConfig, chainconfig *params.ChainConfig, chain block queueTxEventCh: make(chan *types.Transaction), reorgDoneCh: make(chan chan struct{}), reorgShutdownCh: make(chan struct{}), + initDoneCh: make(chan struct{}), gasPrice: new(big.Int).SetUint64(config.PriceLimit), } pool.locals = newAccountSet(pool.signer) @@ -346,6 +349,8 @@ func (pool *TxPool) loop() { defer evict.Stop() defer journal.Stop() + // Notify tests that the init phase is done + close(pool.initDoneCh) for { select { // Handle ChainHeadEvent @@ -364,8 +369,8 @@ func (pool *TxPool) loop() { case <-report.C: pool.mu.RLock() pending, queued := pool.stats() - stales := pool.priced.stales pool.mu.RUnlock() + stales := int(atomic.LoadInt64(&pool.priced.stales)) if pending != prevPending || queued != prevQueued || stales != prevStales { log.Debug("Transaction pool status report", "executable", pending, "queued", queued, "stales", stales) diff --git a/core/tx_pool_test.go b/core/tx_pool_test.go index e2828274ec..d5118a361b 100644 --- a/core/tx_pool_test.go +++ b/core/tx_pool_test.go @@ -25,6 +25,7 @@ import ( "math/rand" "os" "reflect" + "sync/atomic" "testing" "time" @@ -57,7 +58,7 @@ type testBlockChain struct { func (bc *testBlockChain) CurrentBlock() *types.Block { return types.NewBlock(&types.Header{ - GasLimit: bc.gasLimit, + GasLimit: atomic.LoadUint64(&bc.gasLimit), }, nil, nil, nil, trie.NewStackTrie(nil)) } @@ -98,6 +99,8 @@ func setupTxPoolWithConfig(config *params.ChainConfig) (*TxPool, *ecdsa.PrivateK key, _ := crypto.GenerateKey() pool := NewTxPool(testTxPoolConfig, config, blockchain) + // wait for the pool to initialize + <-pool.initDoneCh return pool, key } @@ -686,7 +689,7 @@ func TestTransactionDropping(t *testing.T) { t.Errorf("total transaction mismatch: have %d, want %d", pool.all.Count(), 4) } // Reduce the block gas limit, check that invalidated transactions are dropped - pool.chain.(*testBlockChain).gasLimit = 100 + atomic.StoreUint64(&pool.chain.(*testBlockChain).gasLimit, 100) <-pool.requestReset(nil, nil) if _, ok := pool.pending[account].txs.items[tx0.Nonce()]; !ok { diff --git a/crypto/signature_nocgo.go b/crypto/signature_nocgo.go index 200c15ac09..f28d63518a 100644 --- a/crypto/signature_nocgo.go +++ b/crypto/signature_nocgo.go @@ -24,37 +24,48 @@ import ( "crypto/elliptic" "errors" "fmt" - "math/big" - "github.com/btcsuite/btcd/btcec" + "github.com/btcsuite/btcd/btcec/v2" + btc_ecdsa "github.com/btcsuite/btcd/btcec/v2/ecdsa" ) // Ecrecover returns the uncompressed public key that created the given signature. func Ecrecover(hash, sig []byte) ([]byte, error) { - pub, err := SigToPub(hash, sig) + pub, err := sigToPub(hash, sig) if err != nil { return nil, err } - bytes := (*btcec.PublicKey)(pub).SerializeUncompressed() + bytes := pub.SerializeUncompressed() return bytes, err } -// SigToPub returns the public key that created the given signature. -func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error) { +func sigToPub(hash, sig []byte) (*btcec.PublicKey, error) { + if len(sig) != SignatureLength { + return nil, errors.New("invalid signature") + } // Convert to btcec input format with 'recovery id' v at the beginning. btcsig := make([]byte, SignatureLength) - btcsig[0] = sig[64] + 27 + btcsig[0] = sig[RecoveryIDOffset] + 27 copy(btcsig[1:], sig) - pub, _, err := btcec.RecoverCompact(btcec.S256(), btcsig, hash) - return (*ecdsa.PublicKey)(pub), err + pub, _, err := btc_ecdsa.RecoverCompact(btcsig, hash) + return pub, err +} + +// SigToPub returns the public key that created the given signature. +func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error) { + pub, err := sigToPub(hash, sig) + if err != nil { + return nil, err + } + return pub.ToECDSA(), nil } // Sign calculates an ECDSA signature. // // This function is susceptible to chosen plaintext attacks that can leak // information about the private key that is used for signing. Callers must -// be aware that the given hash cannot be chosen by an adversery. Common +// be aware that the given hash cannot be chosen by an adversary. Common // solution is to hash any input before calculating the signature. // // The produced signature is in the [R || S || V] format where V is 0 or 1. @@ -65,14 +76,20 @@ func Sign(hash []byte, prv *ecdsa.PrivateKey) ([]byte, error) { if prv.Curve != btcec.S256() { return nil, fmt.Errorf("private key curve is not secp256k1") } - sig, err := btcec.SignCompact(btcec.S256(), (*btcec.PrivateKey)(prv), hash, false) + // ecdsa.PrivateKey -> btcec.PrivateKey + var priv btcec.PrivateKey + if overflow := priv.Key.SetByteSlice(prv.D.Bytes()); overflow || priv.Key.IsZero() { + return nil, fmt.Errorf("invalid private key") + } + defer priv.Zero() + sig, err := btc_ecdsa.SignCompact(&priv, hash, false) // ref uncompressed pubkey if err != nil { return nil, err } // Convert to Ethereum signature format with 'recovery id' v at the end. v := sig[0] - 27 copy(sig, sig[1:]) - sig[64] = v + sig[RecoveryIDOffset] = v return sig, nil } @@ -83,13 +100,20 @@ func VerifySignature(pubkey, hash, signature []byte) bool { if len(signature) != 64 { return false } - sig := &btcec.Signature{R: new(big.Int).SetBytes(signature[:32]), S: new(big.Int).SetBytes(signature[32:])} - key, err := btcec.ParsePubKey(pubkey, btcec.S256()) + var r, s btcec.ModNScalar + if r.SetByteSlice(signature[:32]) { + return false // overflow + } + if s.SetByteSlice(signature[32:]) { + return false + } + sig := btc_ecdsa.NewSignature(&r, &s) + key, err := btcec.ParsePubKey(pubkey) if err != nil { return false } // Reject malleable signatures. libsecp256k1 does this check but btcec doesn't. - if sig.S.Cmp(secp256k1halfN) > 0 { + if s.IsOverHalfOrder() { return false } return sig.Verify(hash, key) @@ -100,16 +124,26 @@ func DecompressPubkey(pubkey []byte) (*ecdsa.PublicKey, error) { if len(pubkey) != 33 { return nil, errors.New("invalid compressed public key length") } - key, err := btcec.ParsePubKey(pubkey, btcec.S256()) + key, err := btcec.ParsePubKey(pubkey) if err != nil { return nil, err } return key.ToECDSA(), nil } -// CompressPubkey encodes a public key to the 33-byte compressed format. +// CompressPubkey encodes a public key to the 33-byte compressed format. The +// provided PublicKey must be valid. Namely, the coordinates must not be larger +// than 32 bytes each, they must be less than the field prime, and it must be a +// point on the secp256k1 curve. This is the case for a PublicKey constructed by +// elliptic.Unmarshal (see UnmarshalPubkey), or by ToECDSA and ecdsa.GenerateKey +// when constructing a PrivateKey. func CompressPubkey(pubkey *ecdsa.PublicKey) []byte { - return (*btcec.PublicKey)(pubkey).SerializeCompressed() + // NOTE: the coordinates may be validated with + // btcec.ParsePubKey(FromECDSAPub(pubkey)) + var x, y btcec.FieldVal + x.SetByteSlice(pubkey.X.Bytes()) + y.SetByteSlice(pubkey.Y.Bytes()) + return btcec.NewPublicKey(&x, &y).SerializeCompressed() } // S256 returns an instance of the secp256k1 curve. diff --git a/eth/tracers/api.go b/eth/tracers/api.go index 61e5591fb4..c61952fe73 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -23,6 +23,7 @@ import ( "errors" "fmt" "io/ioutil" + "math/big" "os" "runtime" "sync" @@ -910,10 +911,21 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.CallArgs, blockNrOrHa Reexec: config.Reexec, } } - res, err := api.traceTx(ctx, msg, new(txTraceContext), vmctx, statedb, privateStateDb, privateStateRepo, noTracerConfig) // test private with no config - if exeRes, ok := res.(*ethapi.ExecutionResult); ok && err == nil && len(exeRes.StructLogs) > 0 { // check there is a result + + // create a mock private context + emptyTx := types.NewTransaction( + 0, + common.Address{}, + big.NewInt(0), 0, big.NewInt(0), + nil, + ) + emptyTx.SetPrivate() + traceContext := &txTraceContext{tx: emptyTx} + + res, err := api.traceTx(ctx, msg, traceContext, vmctx, statedb, privateStateDb, privateStateRepo, noTracerConfig) // test private with no config + if exeRes, ok := res.(*ethapi.ExecutionResult); ok && err == nil && len(exeRes.StructLogs) > 0 { // check there is a result if config != nil && config.Tracer != nil { // re-run the private call with the custom JS tracer - return api.traceTx(ctx, msg, new(txTraceContext), vmctx, statedb, privateStateDb, privateStateRepo, traceConfig) // re-run with trace + return api.traceTx(ctx, msg, traceContext, vmctx, statedb, privateStateDb, privateStateRepo, traceConfig) // re-run with trace } return res, err // return private result with no tracer } else if err == nil && !ok { diff --git a/extension/api.go b/extension/api.go index 17aaa1a289..f791b2ef0d 100644 --- a/extension/api.go +++ b/extension/api.go @@ -158,11 +158,6 @@ func (api *PrivateExtensionAPI) GenerateExtensionApprovalUuid(ctx context.Contex txa.PrivateFor = append(txa.PrivateFor, participants...) } - txArgs, err := api.privacyService.GenerateTransactOptions(txa) - if err != nil { - return "", err - } - psiManagementContractClient := api.privacyService.managementContract(psi) defer psiManagementContractClient.Close() voterList, err := psiManagementContractClient.GetAllVoters(addressToVoteOn) @@ -176,7 +171,7 @@ func (api *PrivateExtensionAPI) GenerateExtensionApprovalUuid(ctx context.Contex if api.checkAlreadyVoted(addressToVoteOn, externalSignerAddress, psi) { return "", errors.New("already voted") } - uuid, err := generateUuid(addressToVoteOn, txArgs.PrivateFrom, txArgs.PrivateFor, api.privacyService.ptm) + uuid, err := generateUuid(addressToVoteOn, txa.PrivateFrom, txa.PrivateFor, api.privacyService.ptm) if err != nil { return "", err } diff --git a/go.mod b/go.mod index ace412f412..83d4249654 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/ethereum/go-ethereum -go 1.15 +go 1.19 // Quorum - Replace Go modules that use modifications done by us replace github.com/coreos/etcd => github.com/Consensys/etcd v3.3.13-quorum197+incompatible @@ -9,42 +9,33 @@ replace github.com/coreos/etcd => github.com/Consensys/etcd v3.3.13-quorum197+in require ( github.com/Azure/azure-storage-blob-go v0.7.0 - github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect github.com/BurntSushi/toml v0.3.1 github.com/ConsenSys/quorum-qlight-token-manager-plugin-sdk-go v0.0.0-20220427130631-ecd75caa6e73 - github.com/StackExchange/wmi v1.2.1 // indirect github.com/VictoriaMetrics/fastcache v1.5.7 github.com/aws/aws-sdk-go-v2 v1.2.0 github.com/aws/aws-sdk-go-v2/config v1.1.1 github.com/aws/aws-sdk-go-v2/credentials v1.1.1 github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1 - github.com/btcsuite/btcd v0.20.1-beta + github.com/btcsuite/btcd/btcec/v2 v2.1.2 github.com/cespare/cp v0.1.0 github.com/cloudflare/cloudflare-go v0.14.0 - github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f + github.com/consensys/gnark-crypto v0.12.1 github.com/coreos/etcd v3.3.20+incompatible - github.com/coreos/go-semver v0.3.0 // indirect - github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf // indirect - github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea - github.com/dlclark/regexp2 v1.7.0 // indirect - github.com/docker/docker v20.10.12+incompatible + github.com/docker/docker v25.0.3+incompatible github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498 github.com/eapache/channels v1.1.0 - github.com/eapache/queue v1.1.0 // indirect github.com/edsrzf/mmap-go v1.0.0 github.com/fatih/color v1.7.0 github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff - github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/go-stack/stack v1.8.1 - github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/mock v1.6.0 - github.com/golang/protobuf v1.5.2 + github.com/golang/protobuf v1.5.3 github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa - github.com/google/uuid v1.1.5 + github.com/google/uuid v1.3.0 github.com/gorilla/websocket v1.5.0 github.com/graph-gophers/graphql-go v1.3.0 github.com/hashicorp/go-hclog v1.1.0 @@ -59,16 +50,12 @@ require ( github.com/jpmorganchase/quorum-account-plugin-sdk-go v0.0.0-20200714175524-662195b38a5e github.com/jpmorganchase/quorum-hello-world-plugin-sdk-go v0.0.0-20200210211148-57f99f69eeb3 github.com/jpmorganchase/quorum-security-plugin-sdk-go v0.0.0-20200714173835-22a319bb78ce - github.com/julienschmidt/httprouter v1.2.0 + github.com/julienschmidt/httprouter v1.3.0 github.com/karalabe/usb v0.0.2 - github.com/kylelemons/godebug v1.1.0 // indirect github.com/mattn/go-colorable v0.1.4 github.com/mattn/go-isatty v0.0.14 - github.com/mitchellh/go-testing-interface v1.0.0 // indirect - github.com/naoina/go-stringutil v0.1.0 // indirect github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 github.com/olekukonko/tablewriter v0.0.5 - github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222 github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 @@ -77,24 +64,72 @@ require ( github.com/rs/cors v1.7.0 github.com/shirou/gopsutil v2.20.5+incompatible github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 - github.com/stretchr/testify v1.7.0 + github.com/stretchr/testify v1.8.2 github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954 github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef - github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 - golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 - golang.org/x/text v0.3.7 + golang.org/x/crypto v0.17.0 + golang.org/x/sync v0.3.0 + golang.org/x/sys v0.15.0 + golang.org/x/term v0.15.0 + golang.org/x/text v0.14.0 golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 - google.golang.org/grpc v1.46.0 + google.golang.org/grpc v1.58.3 + google.golang.org/protobuf v1.31.0 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c gopkg.in/karalabe/cookiejar.v2 v2.0.0-20150724131613-8dcd6a7f4951 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6 gopkg.in/oleiade/lane.v1 v1.0.0 gopkg.in/urfave/cli.v1 v1.20.0 - gopkg.in/yaml.v2 v2.4.0 // indirect +) + +require ( + github.com/Azure/azure-pipeline-go v0.2.1 // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.1.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.1.1 // indirect + github.com/aws/smithy-go v1.1.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bits-and-blooms/bitset v1.7.0 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/coreos/go-semver v0.3.0 // indirect + github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf // indirect + github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect + github.com/dlclark/regexp2 v1.7.0 // indirect + github.com/eapache/queue v1.1.0 // indirect + github.com/go-ole/go-ole v1.2.5 // indirect + github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect + github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/mitchellh/go-testing-interface v1.0.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/naoina/go-stringutil v0.1.0 // indirect + github.com/oklog/run v1.0.0 // indirect + github.com/opentracing/opentracing-go v1.2.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.11.1 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.26.0 // indirect + github.com/prometheus/procfs v0.6.0 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect + github.com/stretchr/objx v0.5.0 // indirect + github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect + golang.org/x/net v0.17.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.1.0 // indirect + rsc.io/tmplfunc v0.0.3 // indirect ) diff --git a/go.sum b/go.sum index 13f1803377..39ead9d1c9 100644 --- a/go.sum +++ b/go.sum @@ -28,7 +28,6 @@ github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxsh github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U= github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= @@ -47,10 +46,12 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.5.7 h1:4y6y0G8PRzszQUYIQHHssv/jgPHAb5qQuuDNdCbyAgw= github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= @@ -75,27 +76,24 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxq github.com/aws/smithy-go v1.1.0 h1:D6CSsM3gdxaGaqXnPgOBCeL6Mophqzu7KJOu7zW78sU= github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bits-and-blooms/bitset v1.7.0 h1:YjAGVd3XmtK9ktAbX8Zg2g2PwLIMjGREZJHlV4j7NEo= +github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/btcsuite/btcd/btcec/v2 v2.1.2 h1:YoYoC9J0jwfukodSBMzZYUVQ8PTiYg4BnOWiJVzTmLs= +github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0 h1:MSskdM4/xJYcFzy0altH/C/xHopifpWzHUi1JeVI34Q= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -109,9 +107,10 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= -github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f h1:C43yEtQ6NIf4ftFXD/V55gnGFgPbMQobd//YlnLjUJ8= -github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU= @@ -119,20 +118,24 @@ github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X6GqbFowYdYdI0L9bwxL07jyPZIdepyZ0= github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/docker/docker v20.10.12+incompatible h1:CEeNmFM0QZIsJCZKMkZx0ZcahTiewkrgiwfYD+dfl1U= -github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v25.0.3+incompatible h1:D5fy/lYmY7bvZa0XTZ5/UJPljor41F+vdyJG5luQLfQ= +github.com/docker/docker v25.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498 h1:Y9vTBSsV4hSwPSj4bacAU/eSnV3dAxVpepaghAdhGoQ= github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= github.com/eapache/channels v1.1.0 h1:F1taHcn7/F0i8DYqKXJnyhJcVpp2kgFcNePxXtnyu4k= @@ -164,11 +167,14 @@ github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= @@ -208,8 +214,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 h1:ur2rms48b3Ep1dxh7aUV2FZEQ8jEVO2F6ILKx8ofkAg= @@ -225,8 +232,9 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -234,9 +242,10 @@ github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OI github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.5 h1:kxhtnfFVi+rYdOALN0B3k9UT86zVJKfBimRaciULW4I= -github.com/google/uuid v1.1.5/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -279,25 +288,27 @@ github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458 h1:6OvNmYgJye github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e h1:UvSe12bq+Uj2hWd8aOlwPmoZ+CITRFrdit+sDGfAg8U= github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jpmorganchase/quorum-account-plugin-sdk-go v0.0.0-20200714175524-662195b38a5e h1:aE+TcHdEop381e8gMBWw/7Nw5aOdXdVmVrVP7ZrKrq4= github.com/jpmorganchase/quorum-account-plugin-sdk-go v0.0.0-20200714175524-662195b38a5e/go.mod h1:clocsx5vZHANnLM+SmcJJDKY6VVxxcdRUCKe5Y+roQ0= github.com/jpmorganchase/quorum-hello-world-plugin-sdk-go v0.0.0-20200210211148-57f99f69eeb3 h1:vaXIQlaE9ELd0V5NjwMHD8hlAPeC2A1Zu1i2TxKdpVY= github.com/jpmorganchase/quorum-hello-world-plugin-sdk-go v0.0.0-20200210211148-57f99f69eeb3/go.mod h1:xZOd/PmBeJkF1X+VLaIkCsQq1nqlr2DiekzGMpBDZq0= github.com/jpmorganchase/quorum-security-plugin-sdk-go v0.0.0-20200714173835-22a319bb78ce h1:N0BFCITB+CS2fwTlnYuwr9KslnVWxpz7rs8xyyhS1xA= github.com/jpmorganchase/quorum-security-plugin-sdk-go v0.0.0-20200714173835-22a319bb78ce/go.mod h1:Zq2sOjX+LZrNoV+cyvS/4Xsy69v8HOFKHtCLkiXQ3Kk= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+9HbQbYf7g= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= github.com/karalabe/usb v0.0.2 h1:M6QQBNxF+CQ8OFvxrT90BA0qBOXymndZnk5q235mFc4= @@ -305,24 +316,24 @@ github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= @@ -344,10 +355,16 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 h1:shk/vn9oCoOTmwcouEdwIeOtOGA/ELRUw/GwvxwfT+0= @@ -360,11 +377,9 @@ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= @@ -383,6 +398,7 @@ github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQm github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -391,19 +407,26 @@ github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUI github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0 h1:kRhiuYSXR3+uv2IbVbZhUxK5zVD/2pp3Gd2PpvPkpEo= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= @@ -411,6 +434,8 @@ github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -421,6 +446,8 @@ github.com/shirou/gopsutil v2.20.5+incompatible h1:tYH07UPoQt0OCQdgWWMgYHy3/a9bc github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -430,15 +457,20 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 h1:Gb2Tyox57NRNuZ2d3rmvB3pcmbu7O1RS3m8WRx7ilrg= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954 h1:xQdMZ1WLrgkkvOZ/LDQxjVxMLdby7osSh4ZEVa5sIjs= github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= @@ -461,7 +493,6 @@ go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqe go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -469,9 +500,9 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -520,15 +551,16 @@ golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 h1:HVyaeDAYux4pnY+D/SiwmLOR36ewZ4iGQIIrtnuCjFA= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -542,8 +574,10 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -554,6 +588,7 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -566,25 +601,31 @@ golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 h1:xHms4gcpe1YE7A3yIllJXP16CMAGuqwO2lX1mTyyRRc= golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -592,8 +633,9 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE= @@ -669,8 +711,9 @@ google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20220426171045-31bebdecfb46 h1:G1IeWbjrqEq9ChWxEuRPJu6laA67+XgTFHVSAvepr38= google.golang.org/genproto v0.0.0-20220426171045-31bebdecfb46/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -685,8 +728,9 @@ google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0 h1:oCjezcn6g6A75TGoKYBPgKmVBLexhYLM6MebdrPApP8= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -699,11 +743,13 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -724,12 +770,13 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.1.0 h1:rVV8Tcg/8jHUkPUorwjaMTtemIMVXfIPKiOqnhEhakk= gotest.tools/v3 v3.1.0/go.mod h1:fHy7eyTmJFO5bQbUsEGQ1v4m2J3Jz9eWL54TP2/ZuYQ= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -738,6 +785,7 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/internal/web3ext/web3ext.go b/internal/web3ext/web3ext.go index ee4ca56a8c..3d188d7098 100644 --- a/internal/web3ext/web3ext.go +++ b/internal/web3ext/web3ext.go @@ -1004,6 +1004,24 @@ web3._extend({ params: 3, inputFormatter: [null, web3._extend.formatters.inputAddressFormatter,web3._extend.formatters.inputTransactionFormatter] }), + new web3._extend.Method({ + name: 'getContractWhitelistByAddress', + call: 'quorumPermission_getContractWhitelistByAddress', + params: 1, + inputFormatter: [web3._extend.formatters.inputAddressFormatter] + }), + new web3._extend.Method({ + name: 'addContractWhitelist', + call: 'quorumPermission_addContractWhitelist', + params: 2, + inputFormatter: [web3._extend.formatters.inputAddressFormatter,web3._extend.formatters.inputTransactionFormatter] + }), + new web3._extend.Method({ + name: 'revokeContractWhitelist', + call: 'quorumPermission_revokeContractWhitelist', + params: 2, + inputFormatter: [web3._extend.formatters.inputAddressFormatter,web3._extend.formatters.inputTransactionFormatter] + }), new web3._extend.Method({ name: 'addNewRole', call: 'quorumPermission_addNewRole', @@ -1096,6 +1114,10 @@ web3._extend({ name: 'acctList', getter: 'quorumPermission_acctList' }), + new web3._extend.Property({ + name: 'contractWhitelist', + getter: 'quorumPermission_contractWhitelist' + }), ] }) ` @@ -1254,7 +1276,7 @@ web3._extend({ new web3._extend.Method({ name: 'generateExtensionApprovalUuid', call: 'quorumExtension_generateExtensionApprovalUuid', - params: 2, + params: 3, inputFormatter: [web3._extend.formatters.inputAddressFormatter, web3._extend.formatters.inputAddressFormatter, web3._extend.formatters.inputTransactionFormatter] }), new web3._extend.Method({ diff --git a/permission/api.go b/permission/api.go index 543cb83ede..01c8bca79c 100644 --- a/permission/api.go +++ b/permission/api.go @@ -44,6 +44,8 @@ const ( InitiateAccountRecovery ApproveNodeRecovery ApproveAccountRecovery + AddContractWhitelist + RevokeContractWhitelist ) type AccountUpdateAction int @@ -106,6 +108,14 @@ func (q *QuorumControlsAPI) AcctList() []core.AccountInfo { return core.AcctInfoMap.GetAcctList() } +func (q *QuorumControlsAPI) ContractWhitelist() []common.Address { + return core.ContractWhitelistMap.GetContractWhitelist() +} + +func (q *QuorumControlsAPI) GetContractWhitelistByAddress(contractAddress common.Address) bool { + return core.ContractWhitelistMap.GetContractWhitelistByAddress(contractAddress) +} + func (q *QuorumControlsAPI) GetOrgDetails(orgId string) (core.OrgDetailInfo, error) { o, err := core.OrgInfoMap.GetOrg(orgId) if err != nil { @@ -330,6 +340,40 @@ func (q *QuorumControlsAPI) AddNewRole(orgId string, roleId string, access uint8 return actionSuccess, nil } +func (q *QuorumControlsAPI) AddContractWhitelist(contractAddress common.Address, txa ethapi.SendTxArgs) (string, error) { + contractWhitelistService, err := q.permCtrl.NewPermissionContractWhitelistService(txa) + if err != nil { + return "", err + } + args := ptype.TxArgs{ContractAddress: contractAddress, Txa: txa} + if err := q.valAddContractWhitelist(args); err != nil { + return "", err + } + tx, err := contractWhitelistService.AddWhitelist(args) + if err != nil { + return reportExecError(AddContractWhitelist, err) + } + log.Debug("executed permission action", "action", AddContractWhitelist, "tx", tx) + return actionSuccess, nil +} + +func (q *QuorumControlsAPI) RevokeContractWhitelist(contractAddress common.Address, txa ethapi.SendTxArgs) (string, error) { + contractWhitelistService, err := q.permCtrl.NewPermissionContractWhitelistService(txa) + if err != nil { + return "", err + } + args := ptype.TxArgs{ContractAddress: contractAddress, Txa: txa} + if err := q.valRevokeContractWhitelist(args); err != nil { + return "", err + } + tx, err := contractWhitelistService.RevokeWhitelistByAddress(args) + if err != nil { + return reportExecError(RevokeContractWhitelist, err) + } + log.Debug("executed permission action", "action", RevokeContractWhitelist, "tx", tx) + return actionSuccess, nil +} + func (q *QuorumControlsAPI) RemoveRole(orgId string, roleId string, txa ethapi.SendTxArgs) (string, error) { roleService, err := q.permCtrl.NewPermissionRoleService(txa) if err != nil { @@ -955,6 +999,28 @@ func (q *QuorumControlsAPI) valApproveAdminRole(args ptype.TxArgs) error { return nil } +func (q *QuorumControlsAPI) valAddContractWhitelist(args ptype.TxArgs) error { + if args.ContractAddress == (common.Address{}) { + return ptype.ErrInvalidInput + } + // check if caller is network admin + if !q.isNetworkAdmin(args.Txa.From) { + return ptype.ErrNotNetworkAdmin + } + return nil +} + +func (q *QuorumControlsAPI) valRevokeContractWhitelist(args ptype.TxArgs) error { + if args.ContractAddress == (common.Address{}) { + return ptype.ErrInvalidInput + } + // check if caller is network admin + if !q.isNetworkAdmin(args.Txa.From) { + return ptype.ErrNotNetworkAdmin + } + return nil +} + func (q *QuorumControlsAPI) valAddNewRole(args ptype.TxArgs) error { if args.RoleId == "" { return ptype.ErrInvalidInput diff --git a/permission/backend.go b/permission/backend.go index b93c35f1a8..7a7bb1507d 100644 --- a/permission/backend.go +++ b/permission/backend.go @@ -147,6 +147,14 @@ func NewPermissionContractService(ethClnt bind.ContractBackend, permissionV2 boo } } +func (p *PermissionCtrl) NewPermissionContractWhitelistService(txa ethapi.SendTxArgs) (ptype.ContractWhitelistService, error) { + transactOpts, err := p.getTxParams(txa) + if err != nil { + return nil, err + } + return p.backend.GetContractWhitelistService(transactOpts, p.getContractBackend()) +} + func (p *PermissionCtrl) NewPermissionRoleService(txa ethapi.SendTxArgs) (ptype.RoleService, error) { transactOpts, err := p.getTxParams(txa) if err != nil { diff --git a/permission/core/cache.go b/permission/core/cache.go index cdee4412a8..892effb9c0 100644 --- a/permission/core/cache.go +++ b/permission/core/cache.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "math/big" + "reflect" "strings" "sync" "sync/atomic" @@ -140,10 +141,11 @@ var orgAdminRole string var PermissionModel = Default var PermissionTransactionAllowedFunc func(_sender common.Address, _target common.Address, _value *big.Int, _gasPrice *big.Int, _gasLimit *big.Int, _payload []byte, _transactionType TransactionType) error var ( - OrgInfoMap *OrgCache - NodeInfoMap *NodeCache - RoleInfoMap *RoleCache - AcctInfoMap *AcctCache + OrgInfoMap *OrgCache + NodeInfoMap *NodeCache + RoleInfoMap *RoleCache + AcctInfoMap *AcctCache + ContractWhitelistMap *ContractWhitelistCache ) type OrgKey struct { @@ -247,6 +249,16 @@ func NewAcctCache(cacheSize int) *AcctCache { return &acctCache } +type ContractWhitelistCache struct { + c map[common.Address]bool // address to bool +} + +func NewContractWhitelistCache() *ContractWhitelistCache { + // we don't use a lru here since the entire whitelist should always be in memory + contractWhitelistCache := ContractWhitelistCache{c: make(map[common.Address]bool)} + return &contractWhitelistCache +} + func SetSyncStatus() { syncStarted = true } @@ -366,7 +378,7 @@ func (o *OrgCache) GetOrg(orgId string) (*OrgInfo, error) { //return the record return orgRec, nil } - return nil, errors.New("Org does not exist") + return nil, errors.New("org does not exist") } func (o *OrgCache) GetOrgList() []OrgInfo { @@ -406,7 +418,7 @@ func (n *NodeCache) GetNodeByUrl(url string) (*NodeInfo, error) { //return the record return nodeRec, err } - return nil, errors.New("Node does not exist") + return nil, errors.New("node does not exist") } func (n *NodeCache) getSourceList() []*NodeInfo { @@ -516,7 +528,7 @@ func (r *RoleCache) GetRole(orgId string, roleId string) (*RoleInfo, error) { //return the record return roleRec, nil } - return nil, errors.New("Invalid role") + return nil, errors.New("invalid role") } func (r *RoleCache) GetRoleList() []RoleInfo { @@ -594,6 +606,28 @@ func CheckIfAdminAccount(acctId common.Address) bool { return false } +func (c *ContractWhitelistCache) GetContractWhitelist() []common.Address { + keysReflect := reflect.ValueOf(c.c).MapKeys() + keys := make([]common.Address, len(keysReflect)) + for i, v := range keysReflect { + keys[i] = v.Interface().(common.Address) + } + return keys +} + +func (c *ContractWhitelistCache) AddContractWhitelist(contract common.Address) { + c.c[contract] = true +} + +func (c *ContractWhitelistCache) RemoveContractWhitelist(contract common.Address) { + delete(c.c, contract) +} + +func (c *ContractWhitelistCache) GetContractWhitelistByAddress(contractAddress common.Address) bool { + _, ok := c.c[contractAddress] + return ok +} + // validates if the account can transact from the current node func ValidateNodeForTxn(nodeId enode.ID, from common.Address) bool { if !PermissionsEnabled() || nodeId == (enode.ID{}) { diff --git a/permission/core/types/backend.go b/permission/core/types/backend.go index 2269e1f3d5..4bc46e7832 100644 --- a/permission/core/types/backend.go +++ b/permission/core/types/backend.go @@ -30,18 +30,19 @@ const ( // permission config for bootstrapping type PermissionConfig struct { - PermissionsModel string `json:"permissionModel"` - UpgrdAddress common.Address `json:"upgrdableAddress"` - InterfAddress common.Address `json:"interfaceAddress"` - ImplAddress common.Address `json:"implAddress"` - NodeAddress common.Address `json:"nodeMgrAddress"` - AccountAddress common.Address `json:"accountMgrAddress"` - RoleAddress common.Address `json:"roleMgrAddress"` - VoterAddress common.Address `json:"voterMgrAddress"` - OrgAddress common.Address `json:"orgMgrAddress"` - NwAdminOrg string `json:"nwAdminOrg"` - NwAdminRole string `json:"nwAdminRole"` - OrgAdminRole string `json:"orgAdminRole"` + PermissionsModel string `json:"permissionModel"` + UpgrdAddress common.Address `json:"upgrdableAddress"` + InterfAddress common.Address `json:"interfaceAddress"` + ImplAddress common.Address `json:"implAddress"` + NodeAddress common.Address `json:"nodeMgrAddress"` + AccountAddress common.Address `json:"accountMgrAddress"` + RoleAddress common.Address `json:"roleMgrAddress"` + VoterAddress common.Address `json:"voterMgrAddress"` + OrgAddress common.Address `json:"orgMgrAddress"` + ContractWhitelistAddress common.Address `json:"contractWhitelistMgrAddress"` + NwAdminOrg string `json:"nwAdminOrg"` + NwAdminRole string `json:"nwAdminRole"` + OrgAdminRole string `json:"orgAdminRole"` Accounts []common.Address `json:"accounts"` //initial list of account that need full access SubOrgDepth *big.Int `json:"subOrgDepth"` @@ -139,6 +140,8 @@ type Backend interface { GetAuditService(auditBackend ContractBackend) (AuditService, error) // control service for account management service GetControlService(controlBackend ContractBackend) (ControlService, error) + // contract whitelist service for enhanced privacy contract whitelisting service + GetContractWhitelistService(transactOpts *bind.TransactOpts, roleBackend ContractBackend) (ContractWhitelistService, error) // Monitors account access related events and updates the cache accordingly ManageAccountPermissions() error // Monitors Node management events and updates cache accordingly @@ -148,7 +151,8 @@ type Backend interface { ManageOrgPermissions() error // monitors role management related events and updated cache ManageRolePermissions() error - + // monitors contract whitelist management related events and updates cache accordingly + ManageContractWhitelistPermissions() error // monitors for network boot up complete event MonitorNetworkBootUp() error } diff --git a/permission/core/types/contract.go b/permission/core/types/contract.go index 8022f847d2..bd33329059 100644 --- a/permission/core/types/contract.go +++ b/permission/core/types/contract.go @@ -14,16 +14,17 @@ import ( // TxArgs holds arguments required for execute functions type TxArgs struct { - OrgId string - POrgId string - Url string - RoleId string - IsVoter bool - IsAdmin bool - AcctId common.Address - AccessType uint8 - Action uint8 - Txa ethapi.SendTxArgs + OrgId string + POrgId string + Url string + RoleId string + IsVoter bool + IsAdmin bool + AcctId common.Address + AccessType uint8 + Action uint8 + ContractAddress common.Address + Txa ethapi.SendTxArgs } type ContractBackend struct { @@ -35,6 +36,11 @@ type ContractBackend struct { ChainID *big.Int } +type ContractWhitelistService interface { + AddWhitelist(_args TxArgs) (*types.Transaction, error) + RevokeWhitelistByAddress(_args TxArgs) (*types.Transaction, error) +} + type RoleService interface { AddNewRole(_args TxArgs) (*types.Transaction, error) RemoveRole(_args TxArgs) (*types.Transaction, error) @@ -92,6 +98,8 @@ type InitService interface { GetNumberOfAccounts() (*big.Int, error) GetAccountDetails(_account common.Address) (common.Address, string, string, *big.Int, bool, error) + GetWhitelistedContracts() ([]common.Address, error) + GetRoleDetailsFromIndex(_rIndex *big.Int) (struct { RoleId string OrgId string diff --git a/permission/permission.go b/permission/permission.go index c43a0a86c6..4697b78bf1 100644 --- a/permission/permission.go +++ b/permission/permission.go @@ -30,7 +30,7 @@ func (p *PermissionCtrl) AfterStart() error { return fmt.Errorf("populateInitPermissions failed to bind contracts: %v", err) } - // populate the initial list of permissioned nodes and account accesses + // populate the initial list of permissioned nodes, account accesses and contract whitelist if err := p.populateInitPermissions(params.DEFAULT_ORGCACHE_SIZE, params.DEFAULT_ROLECACHE_SIZE, params.DEFAULT_NODECACHE_SIZE, params.DEFAULT_ACCOUNTCACHE_SIZE); err != nil { return fmt.Errorf("populateInitPermissions failed: %v", err) @@ -43,11 +43,12 @@ func (p *PermissionCtrl) AfterStart() error { // set the default access to ReadOnly pcore.SetDefaults(p.permConfig.NwAdminRole, p.permConfig.OrgAdminRole, p.IsV2Permission()) for _, f := range []func() error{ - p.monitorQIP714Block, // monitor block number to activate new permissions controls - p.backend.ManageOrgPermissions, // monitor org management related events - p.backend.ManageNodePermissions, // monitor org level Node management events - p.backend.ManageRolePermissions, // monitor org level role management events - p.backend.ManageAccountPermissions, // monitor org level account management events + p.monitorQIP714Block, // monitor block number to activate new permissions controls + p.backend.ManageOrgPermissions, // monitor org management related events + p.backend.ManageNodePermissions, // monitor org level Node management events + p.backend.ManageRolePermissions, // monitor org level role management events + p.backend.ManageAccountPermissions, // monitor org level account management events + p.backend.ManageContractWhitelistPermissions, // monitor contract whitelist events } { if err := f(); err != nil { return err @@ -153,6 +154,8 @@ func (p *PermissionCtrl) instantiateCache(orgCacheSize, roleCacheSize, nodeCache pcore.AcctInfoMap = pcore.NewAcctCache(accountCacheSize) pcore.AcctInfoMap.PopulateCacheFunc(p.populateAccountToCache) + + pcore.ContractWhitelistMap = pcore.NewContractWhitelistCache() } // Thus function checks if the initial network boot up status and if no @@ -178,6 +181,7 @@ func (p *PermissionCtrl) populateInitPermissions(orgCacheSize, roleCacheSize, no p.populateNodesFromContract, p.populateRolesFromContract, p.populateAccountsFromContract, + p.populateContractWhitelistFromContract, } { if err := f(); err != nil { return err @@ -233,6 +237,18 @@ func (p *PermissionCtrl) populateAccountsFromContract() error { return nil } +// populates the contract whitelist details from contract into cache +func (p *PermissionCtrl) populateContractWhitelistFromContract() error { + if whitelistedContracts, err := p.contract.GetWhitelistedContracts(); err == nil { + for _, addr := range whitelistedContracts { + pcore.ContractWhitelistMap.AddContractWhitelist(addr) + } + } else { + return err + } + return nil +} + // populates the role details from contract into cache func (p *PermissionCtrl) populateRolesFromContract() error { if numberOfRoles, err := p.contract.GetNumberOfRoles(); err == nil { diff --git a/permission/permission_test.go b/permission/permission_test.go index beba97c9ce..06c278ff55 100644 --- a/permission/permission_test.go +++ b/permission/permission_test.go @@ -70,7 +70,7 @@ var ( v2Flag bool permUpgrAddress, permInterfaceAddress, permImplAddress, voterManagerAddress, - nodeManagerAddress, roleManagerAddress, accountManagerAddress, orgManagerAddress common.Address + nodeManagerAddress, roleManagerAddress, accountManagerAddress, orgManagerAddress, contractWhitelistManagerAddress common.Address ) func TestMain(m *testing.M) { @@ -144,39 +144,88 @@ func setup() { var permUpgrInstance *v1bind.PermUpgr var permUpgrInstanceE *v2bind.PermUpgr + var permInterfaceInstance *v2bind.PermInterface + var nodeManagerInstance *v2bind.NodeManager + var roleManagerInstance *v2bind.RoleManager + var acctManagerInstance *v2bind.AcctManager + var orgManagerInstance *v2bind.OrgManager + var voterManagerInstance *v2bind.VoterManager + var contractWhitelistManagerInstance *v2bind.ContractWhitelistManager + var permImplInstance *v2bind.PermImpl guardianTransactor, _ := bind.NewKeyedTransactorWithChainID(guardianKey, ethereum.BlockChain().Config().ChainID) if v2Flag { - permUpgrAddress, _, permUpgrInstanceE, err = v2bind.DeployPermUpgr(guardianTransactor, contrBackend, guardianAddress) + permUpgrAddress, _, permUpgrInstanceE, err = v2bind.DeployPermUpgr(guardianTransactor, contrBackend) if err != nil { t.Fatal(err) } - permInterfaceAddress, _, _, err = v2bind.DeployPermInterface(guardianTransactor, contrBackend, permUpgrAddress) + permInterfaceAddress, _, permInterfaceInstance, err = v2bind.DeployPermInterface(guardianTransactor, contrBackend) if err != nil { t.Fatal(err) } - nodeManagerAddress, _, _, err = v2bind.DeployNodeManager(guardianTransactor, contrBackend, permUpgrAddress) + nodeManagerAddress, _, nodeManagerInstance, err = v2bind.DeployNodeManager(guardianTransactor, contrBackend) if err != nil { t.Fatal(err) } - roleManagerAddress, _, _, err = v2bind.DeployRoleManager(guardianTransactor, contrBackend, permUpgrAddress) + roleManagerAddress, _, roleManagerInstance, err = v2bind.DeployRoleManager(guardianTransactor, contrBackend) if err != nil { t.Fatal(err) } - accountManagerAddress, _, _, err = v2bind.DeployAcctManager(guardianTransactor, contrBackend, permUpgrAddress) + accountManagerAddress, _, acctManagerInstance, err = v2bind.DeployAcctManager(guardianTransactor, contrBackend) if err != nil { t.Fatal(err) } - orgManagerAddress, _, _, err = v2bind.DeployOrgManager(guardianTransactor, contrBackend, permUpgrAddress) + orgManagerAddress, _, orgManagerInstance, err = v2bind.DeployOrgManager(guardianTransactor, contrBackend) if err != nil { t.Fatal(err) } - voterManagerAddress, _, _, err = v2bind.DeployVoterManager(guardianTransactor, contrBackend, permUpgrAddress) + voterManagerAddress, _, voterManagerInstance, err = v2bind.DeployVoterManager(guardianTransactor, contrBackend) if err != nil { t.Fatal(err) } - permImplAddress, _, _, err = v2bind.DeployPermImpl(guardianTransactor, contrBackend, permUpgrAddress, orgManagerAddress, roleManagerAddress, accountManagerAddress, voterManagerAddress, nodeManagerAddress) + contractWhitelistManagerAddress, _, contractWhitelistManagerInstance, err = v2bind.DeployContractWhitelistManager(guardianTransactor, contrBackend) + if err != nil { + t.Fatal(err) + } + permImplAddress, _, permImplInstance, err = v2bind.DeployPermImpl(guardianTransactor, contrBackend) + if err != nil { + t.Fatal(err) + } + // call initialize + _, err := permUpgrInstanceE.Initialize(guardianTransactor, guardianAddress) + if err != nil { + t.Fatal(err) + } + _, err = permInterfaceInstance.Initialize(guardianTransactor, permUpgrAddress) + if err != nil { + t.Fatal(err) + } + _, err = nodeManagerInstance.Initialize(guardianTransactor, permUpgrAddress) + if err != nil { + t.Fatal(err) + } + _, err = roleManagerInstance.Initialize(guardianTransactor, permUpgrAddress) + if err != nil { + t.Fatal(err) + } + _, err = acctManagerInstance.Initialize(guardianTransactor, permUpgrAddress) + if err != nil { + t.Fatal(err) + } + _, err = orgManagerInstance.Initialize(guardianTransactor, permUpgrAddress) + if err != nil { + t.Fatal(err) + } + _, err = voterManagerInstance.Initialize(guardianTransactor, permUpgrAddress) + if err != nil { + t.Fatal(err) + } + _, err = contractWhitelistManagerInstance.Initialize(guardianTransactor, permUpgrAddress) + if err != nil { + t.Fatal(err) + } + _, err = permImplInstance.Initialize(guardianTransactor, permUpgrAddress, orgManagerAddress, roleManagerAddress, accountManagerAddress, voterManagerAddress, nodeManagerAddress, contractWhitelistManagerAddress) if err != nil { t.Fatal(err) } @@ -241,6 +290,7 @@ func TestPermissionCtrl_AfterStart(t *testing.T) { assert.NotNil(t, contract.PermAcct) assert.NotNil(t, contract.PermInterf) assert.NotNil(t, contract.PermUpgr) + assert.NotNil(t, contract.PermCtrWhitelist) } else { var contract *v1.Init contract, _ = testObject.contract.(*v1.Init) @@ -316,7 +366,7 @@ func TestQuorumControlsAPI_ListAPIs(t *testing.T) { assert.Equal(t, orgDetails.RoleList[0].RoleId, arbitraryNetworkAdminRole) orgDetails, err = testObject.GetOrgDetails("XYZ") - assert.Equal(t, err, errors.New("Org does not exist")) + assert.Equal(t, err, errors.New("org does not exist")) // test NodeList assert.Equal(t, len(testObject.NodeList()), 0) @@ -326,6 +376,8 @@ func TestQuorumControlsAPI_ListAPIs(t *testing.T) { assert.True(t, len(testObject.OrgList()) > 0, "expected non zero org list") // test RoleList assert.True(t, len(testObject.RoleList()) > 0, "expected non zero org list") + // test ContractWhitelist + assert.Equal(t, len(testObject.ContractWhitelist()), 0) } func TestQuorumControlsAPI_OrgAPIs(t *testing.T) { @@ -830,6 +882,7 @@ func TestParsePermissionConfig(t *testing.T) { tmpPermCofig.RoleAddress = common.Address{} tmpPermCofig.OrgAddress = common.Address{} tmpPermCofig.NodeAddress = common.Address{} + tmpPermCofig.ContractWhitelistAddress = common.Address{} tmpPermCofig.SubOrgBreadth = new(big.Int) tmpPermCofig.SubOrgDepth = new(big.Int) diff --git a/permission/v1/backend.go b/permission/v1/backend.go index 4964a11d39..1ded37bc51 100644 --- a/permission/v1/backend.go +++ b/permission/v1/backend.go @@ -16,6 +16,10 @@ type Backend struct { Contr *Init } +func (b *Backend) ManageContractWhitelistPermissions() error { + return nil // contract whitelist is only supported for v2 permission +} + func (b *Backend) ManageAccountPermissions() error { chAccessModified := make(chan *pb.AcctManagerAccountAccessModified) chAccessRevoked := make(chan *pb.AcctManagerAccountAccessRevoked) @@ -350,6 +354,10 @@ func (b *Backend) GetAccountService(transactOpts *bind.TransactOpts, accountBack return &Account{Backend: backEnd}, nil } +func (b *Backend) GetContractWhitelistService(transactOpts *bind.TransactOpts, contractWhitelistBackend ptype.ContractBackend) (ptype.ContractWhitelistService, error) { + return &ContractWhitelist{}, nil +} + func (b *Backend) GetAuditService(auditBackend ptype.ContractBackend) (ptype.AuditService, error) { backEnd, err := getBackend(auditBackend) if err != nil { diff --git a/permission/v1/contract.go b/permission/v1/contract.go index 9e2d6ba614..b140fb5723 100644 --- a/permission/v1/contract.go +++ b/permission/v1/contract.go @@ -43,6 +43,10 @@ type Account struct { Backend *PermissionModelV1 } +type ContractWhitelist struct { + Backend *PermissionModelV1 +} + type Init struct { Backend ptype.ContractBackend @@ -71,6 +75,10 @@ func (i *Init) GetNumberOfAccounts() (*big.Int, error) { return i.permAcctSession.GetNumberOfAccounts() } +func (i *Init) GetWhitelistedContracts() ([]common.Address, error) { + return []common.Address{}, nil +} + func (i *Init) GetRoleDetailsFromIndex(_rIndex *big.Int) (struct { RoleId string OrgId string @@ -271,6 +279,14 @@ func (a *Account) AssignAdminRole(_args ptype.TxArgs) (*types.Transaction, error return a.Backend.PermInterfSession.AssignAdminRole(_args.OrgId, _args.AcctId, _args.RoleId) } +func (i *ContractWhitelist) AddWhitelist(_args ptype.TxArgs) (*types.Transaction, error) { + return nil, fmt.Errorf("contract whitelist not supported in enhanced permissioning v1") +} + +func (i *ContractWhitelist) RevokeWhitelistByAddress(_args ptype.TxArgs) (*types.Transaction, error) { + return nil, fmt.Errorf("contract whitelist not supported in enhanced permissioning v1") +} + // This is to make sure all Contr instances are ready and initialized // // Required to be call after standard service start lifecycle diff --git a/permission/v2/backend.go b/permission/v2/backend.go index 10de2206f7..ea3cce5721 100644 --- a/permission/v2/backend.go +++ b/permission/v2/backend.go @@ -16,6 +16,40 @@ type Backend struct { Contr *Init } +func (b *Backend) ManageContractWhitelistPermissions() error { + chContractWhitelistAdded := make(chan *eb.ContractWhitelistManagerContractWhitelistAdded) + chContractWhitelistRevoked := make(chan *eb.ContractWhitelistManagerContractWhitelistRevoked) + + opts := &bind.WatchOpts{} + var blockNumber uint64 = 1 + opts.Start = &blockNumber + + if _, err := b.Contr.PermCtrWhitelist.ContractWhitelistManagerFilterer.WatchContractWhitelistAdded(opts, chContractWhitelistAdded, nil); err != nil { + return fmt.Errorf("failed watching on ContractWhitelistAdded event: %v", err) + } + if _, err := b.Contr.PermCtrWhitelist.ContractWhitelistManagerFilterer.WatchContractWhitelistRevoked(opts, chContractWhitelistRevoked, nil); err != nil { + return fmt.Errorf("failed watching on ContractWhitelistRevoked event: %v", err) + } + go func() { + stopChan, stopSubscription := ptype.SubscribeStopEvent() + defer stopSubscription.Unsubscribe() + for { + select { + case evtWhitelistAdded := <-chContractWhitelistAdded: + core.ContractWhitelistMap.AddContractWhitelist(evtWhitelistAdded.ContractAddr) + + case evtWhitelistRevoked := <-chContractWhitelistRevoked: + core.ContractWhitelistMap.RemoveContractWhitelist(evtWhitelistRevoked.ContractAddr) + + case <-stopChan: + log.Info("quit whitelist contract watch") + return + } + } + }() + return nil +} + func (b *Backend) ManageAccountPermissions() error { chAccessModified := make(chan *eb.AcctManagerAccountAccessModified) chAccessRevoked := make(chan *eb.AcctManagerAccountAccessRevoked) @@ -294,6 +328,14 @@ func getInterfaceContractSession(permInterfaceInstance *eb.PermInterface, contra return ps, nil } +func (b *Backend) GetContractWhitelistService(transactOpts *bind.TransactOpts, contractWhitelistBackend ptype.ContractBackend) (ptype.ContractWhitelistService, error) { + backEnd, err := getBackendWithTransactOpts(contractWhitelistBackend, transactOpts) + if err != nil { + return nil, err + } + return &ContractWhitelist{Backend: backEnd}, nil +} + func (b *Backend) GetRoleService(transactOpts *bind.TransactOpts, roleBackend ptype.ContractBackend) (ptype.RoleService, error) { backEnd, err := getBackendWithTransactOpts(roleBackend, transactOpts) if err != nil { diff --git a/permission/v2/bind/accounts.go b/permission/v2/bind/accounts.go index 4c572d2d18..529c8820a9 100644 --- a/permission/v2/bind/accounts.go +++ b/permission/v2/bind/accounts.go @@ -4,6 +4,7 @@ package bind import ( + "errors" "math/big" "strings" @@ -17,6 +18,7 @@ import ( // Reference imports to suppress errors if they are not otherwise used. var ( + _ = errors.New _ = big.NewInt _ = strings.NewReader _ = ethereum.NotFound @@ -26,22 +28,33 @@ var ( _ = event.NewSubscription ) +// AcctManagerMetaData contains all meta data concerning the AcctManager contract. +var AcctManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_orgAdmin\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"AccountAccessModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_orgAdmin\",\"type\":\"bool\"}],\"name\":\"AccountAccessRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"AccountStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addNewAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"voterUpdate\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"_adminRole\",\"type\":\"bool\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"assignAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"checkOrgAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountDetails\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_aIndex\",\"type\":\"uint256\"}],\"name\":\"getAccountDetailsFromIndex\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountOrgRole\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountRole\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfAccounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"orgAdminExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeExistingAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"voterUpdate\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setDefaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateAccountStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"validateAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506142558061001d5f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c8063950145cf11610095578063cef7f6af11610064578063cef7f6af146102fe578063e3483a9d1461031a578063e8b42bf414610336578063fd4fa05a14610366576100fe565b8063950145cf1461024e578063b20185681461027e578063c214e5e5146102b2578063c4d66de8146102e2576100fe565b80636acee5fd116100d15780636acee5fd146101a15780636b568d76146101d257806381d66b231461020257806384b7a84a14610232576100fe565b8063143a5604146101025780631d09dc931461011e5780632aceb5341461014f578063309e36ef14610183575b5f80fd5b61011c60048036038101906101179190612cb4565b610396565b005b61013860048036038101906101339190612d57565b610637565b604051610146929190612dc0565b60405180910390f35b61016960048036038101906101649190612de7565b610a2c565b60405161017a959493929190612eb4565b60405180910390f35b61018b610ce2565b6040516101989190612f13565b60405180910390f35b6101bb60048036038101906101b69190612de7565b610cee565b6040516101c9929190612f2c565b60405180910390f35b6101ec60048036038101906101e79190612f61565b610ef4565b6040516101f99190612fbe565b60405180910390f35b61021c60048036038101906102179190612de7565b610fcc565b6040516102299190612fd7565b60405180910390f35b61024c60048036038101906102479190613021565b611176565b005b610268600480360381019061026391906131ba565b6117cd565b6040516102759190612fbe565b60405180910390f35b61029860048036038101906102939190613201565b6118ce565b6040516102a9959493929190612eb4565b60405180910390f35b6102cc60048036038101906102c7919061322c565b611ad7565b6040516102d99190612fbe565b60405180910390f35b6102fc60048036038101906102f79190612de7565b611e85565b005b61031860048036038101906103139190613289565b6120aa565b005b610334600480360381019061032f9190613307565b6121cd565b005b610350600480360381019061034b91906133aa565b61244c565b60405161035d9190612fbe565b60405180910390f35b610380600480360381019061037b9190612de7565b6126c1565b60405161038d9190612f13565b60405180910390f35b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104229190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461048f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610486906134bb565b60405180910390fd5b60046040516020016104a191906135c9565b6040516020818303038152906040528051906020012083836040516020016104ca929190613615565b604051602081830303815290604052805190602001201415801561055c575060056040516020016104fb91906135c9565b604051602081830303815290604052805190602001208383604051602001610524929190613615565b6040516020818303038152906040526040516020016105439190613689565b6040516020818303038152906040528051906020012014155b61059b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059290613719565b60405180910390fd5b61062f8686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050600285612747565b505050505050565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c59190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610729906134bb565b60405180910390fd5b61077e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506117cd565b15610a1e575f6107e560065f878760405160200161079d929190613615565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612acd565b90506006600182815481106107fd576107fc613737565b5b905f5260205f209060050201600301819055505f6001828154811061082557610824613737565b5b905f5260205f2090600502016004015f6101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7766001828154811061087f5761087e613737565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600183815481106108c1576108c0613737565b5b905f5260205f209060050201600101600184815481106108e4576108e3613737565b5b905f5260205f2090600502016002016001858154811061090757610906613737565b5b905f5260205f2090600502016004015f9054906101000a900460ff166001868154811061093757610936613737565b5b905f5260205f20906005020160030154604051610958959493929190613764565b60405180910390a1600460405160200161097291906135c9565b604051602081830303815290604052805190602001206001828154811061099c5761099b613737565b5b905f5260205f2090600502016002016040516020016109bb91906135c9565b6040516020818303038152906040528051906020012014600182815481106109e6576109e5613737565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250925050610a25565b5f80915091505b9250929050565b5f6060805f805f60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610ad157855f806040518060400160405280600481526020017f4e4f4e4500000000000000000000000000000000000000000000000000000000815250919060405180602001604052805f815250919094509450945094509450610cd9565b5f610adb87612acd565b905060018181548110610af157610af0613737565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018281548110610b3357610b32613737565b5b905f5260205f20906005020160010160018381548110610b5657610b55613737565b5b905f5260205f20906005020160020160018481548110610b7957610b78613737565b5b905f5260205f2090600502016003015460018581548110610b9d57610b9c613737565b5b905f5260205f2090600502016004015f9054906101000a900460ff16838054610bc590613506565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf190613506565b8015610c3c5780601f10610c1357610100808354040283529160200191610c3c565b820191905f5260205f20905b815481529060010190602001808311610c1f57829003601f168201915b50505050509350828054610c4f90613506565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7b90613506565b8015610cc65780601f10610c9d57610100808354040283529160200191610cc6565b820191905f5260205f20905b815481529060010190602001808311610ca957829003601f168201915b5050505050925095509550955095509550505b91939590929450565b5f600180549050905090565b6060805f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610d83576040518060400160405280600481526020017f4e4f4e450000000000000000000000000000000000000000000000000000000081525060405180602001604052805f81525091509150610eef565b5f610d8d84612acd565b905060018181548110610da357610da2613737565b5b905f5260205f20906005020160010160018281548110610dc657610dc5613737565b5b905f5260205f209060050201600201818054610de190613506565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0d90613506565b8015610e585780601f10610e2f57610100808354040283529160200191610e58565b820191905f5260205f20905b815481529060010190602001808311610e3b57829003601f168201915b50505050509150808054610e6b90613506565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9790613506565b8015610ee25780601f10610eb957610100808354040283529160200191610ee2565b820191905f5260205f20905b815481529060010190602001808311610ec557829003601f168201915b5050505050905092509250505b915091565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610f425760019050610fc5565b5f610f4c85612acd565b90508383604051602001610f61929190613615565b6040516020818303038152906040528051906020012060018281548110610f8b57610f8a613737565b5b905f5260205f209060050201600101604051602001610faa91906135c9565b60405160208183030381529060405280519060200120149150505b9392505050565b60605f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361104f576040518060400160405280600481526020017f4e4f4e45000000000000000000000000000000000000000000000000000000008152509050611171565b5f61105983612acd565b90505f600182815481106110705761106f613737565b5b905f5260205f2090600502016003015414611137576001818154811061109957611098613737565b5b905f5260205f20906005020160020180546110b390613506565b80601f01602080910402602001604051908101604052809291908181526020018280546110df90613506565b801561112a5780601f106111015761010080835404028352916020019161112a565b820191905f5260205f20905b81548152906001019060200180831161110d57829003601f168201915b5050505050915050611171565b6040518060400160405280600481526020017f4e4f4e45000000000000000000000000000000000000000000000000000000008152509150505b919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112029190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611266906134bb565b60405180910390fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050825f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a9061380d565b60405180910390fd5b816040516020016113449190612fd7565b60405160208183030381529060405280519060200120600161136583612acd565b8154811061137657611375613737565b5b905f5260205f20906005020160010160405160200161139591906135c9565b60405160208183030381529060405280519060200120146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290613875565b60405180910390fd5b5f831180156113fa5750600683105b611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906138dd565b60405180910390fd5b600115156114998588888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505060405180602001604052805f81525061244c565b1515036114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061396b565b60405180910390fd5b5f6001840361155b57600260016114f187612acd565b8154811061150257611501613737565b5b905f5260205f2090600502016003015414611552576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611549906139f9565b60405180910390fd5b60049050611757565b600284036115da576004600161157087612acd565b8154811061158157611580613737565b5b905f5260205f20906005020160030154146115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c890613a87565b60405180910390fd5b60029050611756565b6003840361165957600560016115ef87612acd565b81548110611600576115ff613737565b5b905f5260205f2090600502016003015403611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790613b15565b60405180910390fd5b60059050611755565b600484036116d8576005600161166e87612acd565b8154811061167f5761167e613737565b5b905f5260205f20906005020160030154146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690613ba3565b60405180910390fd5b60079050611754565b6005840361175357600760016116ed87612acd565b815481106116fe576116fd613737565b5b905f5260205f209060050201600301541461174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590613c31565b60405180910390fd5b600290505b5b5b5b5b80600161176387612acd565b8154811061177457611773613737565b5b905f5260205f209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b25858888846040516117bc9493929190613c4f565b60405180910390a150505050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660065f846040516020016117f99190612fd7565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c5575f60065f8460405160200161186c9190612fd7565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060026118bc826126c1565b149150506118c9565b5f90505b919050565b5f6060805f80600186815481106118e8576118e7613737565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001878154811061192a57611929613737565b5b905f5260205f2090600502016001016001888154811061194d5761194c613737565b5b905f5260205f209060050201600201600189815481106119705761196f613737565b5b905f5260205f2090600502016003015460018a8154811061199457611993613737565b5b905f5260205f2090600502016004015f9054906101000a900460ff168380546119bc90613506565b80601f01602080910402602001604051908101604052809291908181526020018280546119e890613506565b8015611a335780601f10611a0a57610100808354040283529160200191611a33565b820191905f5260205f20905b815481529060010190602001808311611a1657829003601f168201915b50505050509350828054611a4690613506565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7290613506565b8015611abd5780601f10611a9457610100808354040283529160200191611abd565b820191905f5260205f20905b815481529060010190602001808311611aa057829003601f168201915b505050505092509450945094509450945091939590929450565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b659190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc9906134bb565b60405180910390fd5b5f611bdc83610fcc565b90505f611be8846126c1565b90505f611bf485612acd565b90506005604051602001611c0891906135c9565b6040516020818303038152906040528051906020012083604051602001611c2f9190612fd7565b60405160208183030381529060405280519060200120148015611c525750600182145b15611ccf578460065f8989604051602001611c6e929190613615565b6040516020818303038152906040528051906020012081526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600260018281548110611ce557611ce4613737565b5b905f5260205f209060050201600301819055506001808281548110611d0d57611d0c613737565b5b905f5260205f2090600502016004015f6101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768560018381548110611d6857611d67613737565b5b905f5260205f20906005020160010160018481548110611d8b57611d8a613737565b5b905f5260205f20906005020160020160018581548110611dae57611dad613737565b5b905f5260205f2090600502016004015f9054906101000a900460ff1660018681548110611dde57611ddd613737565b5b905f5260205f20906005020160030154604051611dff959493929190613764565b60405180910390a16004604051602001611e1991906135c9565b6040516020818303038152906040528051906020012060018281548110611e4357611e42613737565b5b905f5260205f209060050201600201604051602001611e6291906135c9565b604051602081830303815290604052805190602001201493505050509392505050565b5f611e8e612b8c565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff16148015611ed65750825b90505f60018367ffffffffffffffff16148015611f0957505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611f17575080155b15611f4e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611f9b576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090613cd7565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083156120a2575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516120999190613d4a565b60405180910390a15b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015612112573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121369190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a906134bb565b60405180910390fd5b8383600491826121b4929190613eef565b508181600591826121c6929190613eef565b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015612235573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122599190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd906134bb565b60405180910390fd5b60056040516020016122d891906135c9565b604051602081830303815290604052805190602001208383604051602001612301929190613615565b6040516020818303038152906040528051906020012014806123715750600460405160200161233091906135c9565b604051602081830303815290604052805190602001208383604051602001612359929190613615565b60405160208183030381529060405280519060200120145b6123b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a79061402c565b60405180910390fd5b6124448686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050846001612747565b505050505050565b5f600460405160200161245f91906135c9565b6040516020818303038152906040528051906020012061247e85610fcc565b60405160200161248e9190612fd7565b60405160208183030381529060405280519060200120036125a6575f6124b385612acd565b9050836040516020016124c69190612fd7565b60405160208183030381529060405280519060200120600182815481106124f0576124ef613737565b5b905f5260205f20906005020160010160405160200161250f91906135c9565b60405160208183030381529060405280519060200120148061259e57508260405160200161253d9190612fd7565b604051602081830303815290604052805190602001206001828154811061256757612566613737565b5b905f5260205f20906005020160010160405160200161258691906135c9565b60405160208183030381529060405280519060200120145b9150506126ba565b8373ffffffffffffffffffffffffffffffffffffffff1660065f856040516020016125d19190612fd7565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806126b757508373ffffffffffffffffffffffffffffffffffffffff1660065f8460405160200161265c9190612fd7565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b90505b9392505050565b5f8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361270e575f9050612742565b5f61271883612acd565b90506001818154811061272e5761272d613737565b5b905f5260205f209060050201600301549150505b919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d39190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612840576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612837906134bb565b60405180910390fd5b5f61284a86612acd565b90505f60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146129285783600182815481106128a5576128a4613737565b5b905f5260205f20906005020160020190816128c0919061404a565b5082600182815481106128d6576128d5613737565b5b905f5260205f2090600502016003018190555081600182815481106128fe576128fd613737565b5b905f5260205f2090600502016004015f6101000a81548160ff021916908315150217905550612a86565b60035f81548092919061293a90614146565b919050555060035460025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060016040518060a001604052808873ffffffffffffffffffffffffffffffffffffffff168152602001878152602001868152602001858152602001841515815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019081612a43919061404a565b506040820151816002019081612a59919061404a565b50606082015181600301556080820151816004015f6101000a81548160ff02191690831515021790555050505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768686868587604051612abd95949392919061418d565b60405180910390a1505050505050565b5f8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403612b3a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050612b87565b600160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b8491906141ec565b90505b919050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bed82612bc4565b9050919050565b612bfd81612be3565b8114612c07575f80fd5b50565b5f81359050612c1881612bf4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c3f57612c3e612c1e565b5b8235905067ffffffffffffffff811115612c5c57612c5b612c22565b5b602083019150836001820283011115612c7857612c77612c26565b5b9250929050565b5f8115159050919050565b612c9381612c7f565b8114612c9d575f80fd5b50565b5f81359050612cae81612c8a565b92915050565b5f805f805f8060808789031215612cce57612ccd612bbc565b5b5f612cdb89828a01612c0a565b965050602087013567ffffffffffffffff811115612cfc57612cfb612bc0565b5b612d0889828a01612c2a565b9550955050604087013567ffffffffffffffff811115612d2b57612d2a612bc0565b5b612d3789828a01612c2a565b93509350506060612d4a89828a01612ca0565b9150509295509295509295565b5f8060208385031215612d6d57612d6c612bbc565b5b5f83013567ffffffffffffffff811115612d8a57612d89612bc0565b5b612d9685828601612c2a565b92509250509250929050565b612dab81612c7f565b82525050565b612dba81612be3565b82525050565b5f604082019050612dd35f830185612da2565b612de06020830184612db1565b9392505050565b5f60208284031215612dfc57612dfb612bbc565b5b5f612e0984828501612c0a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e49578082015181840152602081019050612e2e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e6e82612e12565b612e788185612e1c565b9350612e88818560208601612e2c565b612e9181612e54565b840191505092915050565b5f819050919050565b612eae81612e9c565b82525050565b5f60a082019050612ec75f830188612db1565b8181036020830152612ed98187612e64565b90508181036040830152612eed8186612e64565b9050612efc6060830185612ea5565b612f096080830184612da2565b9695505050505050565b5f602082019050612f265f830184612ea5565b92915050565b5f6040820190508181035f830152612f448185612e64565b90508181036020830152612f588184612e64565b90509392505050565b5f805f60408486031215612f7857612f77612bbc565b5b5f612f8586828701612c0a565b935050602084013567ffffffffffffffff811115612fa657612fa5612bc0565b5b612fb286828701612c2a565b92509250509250925092565b5f602082019050612fd15f830184612da2565b92915050565b5f6020820190508181035f830152612fef8184612e64565b905092915050565b61300081612e9c565b811461300a575f80fd5b50565b5f8135905061301b81612ff7565b92915050565b5f805f806060858703121561303957613038612bbc565b5b5f85013567ffffffffffffffff81111561305657613055612bc0565b5b61306287828801612c2a565b9450945050602061307587828801612c0a565b92505060406130868782880161300d565b91505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6130cc82612e54565b810181811067ffffffffffffffff821117156130eb576130ea613096565b5b80604052505050565b5f6130fd612bb3565b905061310982826130c3565b919050565b5f67ffffffffffffffff82111561312857613127613096565b5b61313182612e54565b9050602081019050919050565b828183375f83830152505050565b5f61315e6131598461310e565b6130f4565b90508281526020810184848401111561317a57613179613092565b5b61318584828561313e565b509392505050565b5f82601f8301126131a1576131a0612c1e565b5b81356131b184826020860161314c565b91505092915050565b5f602082840312156131cf576131ce612bbc565b5b5f82013567ffffffffffffffff8111156131ec576131eb612bc0565b5b6131f88482850161318d565b91505092915050565b5f6020828403121561321657613215612bbc565b5b5f6132238482850161300d565b91505092915050565b5f805f6040848603121561324357613242612bbc565b5b5f84013567ffffffffffffffff8111156132605761325f612bc0565b5b61326c86828701612c2a565b9350935050602061327f86828701612c0a565b9150509250925092565b5f805f80604085870312156132a1576132a0612bbc565b5b5f85013567ffffffffffffffff8111156132be576132bd612bc0565b5b6132ca87828801612c2a565b9450945050602085013567ffffffffffffffff8111156132ed576132ec612bc0565b5b6132f987828801612c2a565b925092505092959194509250565b5f805f805f806080878903121561332157613320612bbc565b5b5f61332e89828a01612c0a565b965050602087013567ffffffffffffffff81111561334f5761334e612bc0565b5b61335b89828a01612c2a565b9550955050604087013567ffffffffffffffff81111561337e5761337d612bc0565b5b61338a89828a01612c2a565b9350935050606061339d89828a0161300d565b9150509295509295509295565b5f805f606084860312156133c1576133c0612bbc565b5b5f6133ce86828701612c0a565b935050602084013567ffffffffffffffff8111156133ef576133ee612bc0565b5b6133fb8682870161318d565b925050604084013567ffffffffffffffff81111561341c5761341b612bc0565b5b6134288682870161318d565b9150509250925092565b5f8151905061344081612bf4565b92915050565b5f6020828403121561345b5761345a612bbc565b5b5f61346884828501613432565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f6134a5600e83612e1c565b91506134b082613471565b602082019050919050565b5f6020820190508181035f8301526134d281613499565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061351d57607f821691505b6020821081036135305761352f6134d9565b5b50919050565b5f819050815f5260205f209050919050565b5f815461355481613506565b61355e8186612e1c565b9450600182165f8114613578576001811461358e576135c0565b60ff1983168652811515602002860193506135c0565b61359785613536565b5f5b838110156135b857815481890152600182019150602081019050613599565b808801955050505b50505092915050565b5f6020820190508181035f8301526135e18184613548565b905092915050565b5f6135f48385612e1c565b935061360183858461313e565b61360a83612e54565b840190509392505050565b5f6020820190508181035f83015261362e8184866135e9565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f61365b82613637565b6136658185613641565b9350613675818560208601612e2c565b61367e81612e54565b840191505092915050565b5f6020820190508181035f8301526136a18184613651565b905092915050565b7f63616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f5f8201527f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c6573602082015250565b5f613703604083612e1c565b915061370e826136a9565b604082019050919050565b5f6020820190508181035f830152613730816136f7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820190506137775f830188612db1565b81810360208301526137898187613548565b9050818103604083015261379d8186613548565b90506137ac6060830185612da2565b6137b96080830184612ea5565b9695505050505050565b7f6163636f756e7420646f6573206e6f74206578697374730000000000000000005f82015250565b5f6137f7601783612e1c565b9150613802826137c3565b602082019050919050565b5f6020820190508181035f830152613824816137eb565b9050919050565b7f6163636f756e7420696e20646966666572656e74206f726700000000000000005f82015250565b5f61385f601883612e1c565b915061386a8261382b565b602082019050919050565b5f6020820190508181035f83015261388c81613853565b9050919050565b7f696e76616c696420737461747573206368616e676520726571756573740000005f82015250565b5f6138c7601d83612e1c565b91506138d282613893565b602082019050919050565b5f6020820190508181035f8301526138f4816138bb565b9050919050565b7f737461747573206368616e6765206e6f7420706f737369626c6520666f72206f5f8201527f72672061646d696e206163636f756e7473000000000000000000000000000000602082015250565b5f613955603183612e1c565b9150613960826138fb565b604082019050919050565b5f6020820190508181035f83015261398281613949565b9050919050565b7f6163636f756e74206973206e6f7420696e20616374697665207374617475732e5f8201527f206f7065726174696f6e2063616e6e6f7420626520646f6e6500000000000000602082015250565b5f6139e3603983612e1c565b91506139ee82613989565b604082019050919050565b5f6020820190508181035f830152613a10816139d7565b9050919050565b7f6163636f756e74206973206e6f7420696e2073757370656e64656420737461745f8201527f75732e206f7065726174696f6e2063616e6e6f7420626520646f6e6500000000602082015250565b5f613a71603c83612e1c565b9150613a7c82613a17565b604082019050919050565b5f6020820190508181035f830152613a9e81613a65565b9050919050565b7f6163636f756e7420697320616c726561647920626c61636b6c69737465642e205f8201527f6f7065726174696f6e2063616e6e6f7420626520646f6e650000000000000000602082015250565b5f613aff603883612e1c565b9150613b0a82613aa5565b604082019050919050565b5f6020820190508181035f830152613b2c81613af3565b9050919050565b7f6163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065725f8201527f6174696f6e2063616e6e6f7420626520646f6e65000000000000000000000000602082015250565b5f613b8d603483612e1c565b9150613b9882613b33565b604082019050919050565b5f6020820190508181035f830152613bba81613b81565b9050919050565b7f6163636f756e74207265636f76657279206e6f7420696e697469617465642e205f8201527f6f7065726174696f6e2063616e6e6f7420626520646f6e650000000000000000602082015250565b5f613c1b603883612e1c565b9150613c2682613bc1565b604082019050919050565b5f6020820190508181035f830152613c4881613c0f565b9050919050565b5f606082019050613c625f830187612db1565b8181036020830152613c758185876135e9565b9050613c846040830184612ea5565b95945050505050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f613cc1601b83612e1c565b9150613ccc82613c8d565b602082019050919050565b5f6020820190508181035f830152613cee81613cb5565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f613d34613d2f613d2a84613cf5565b613d11565b613cfe565b9050919050565b613d4481613d1a565b82525050565b5f602082019050613d5d5f830184613d3b565b92915050565b5f82905092915050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613db77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613d7c565b613dc18683613d7c565b95508019841693508086168417925050509392505050565b5f613df3613dee613de984612e9c565b613d11565b612e9c565b9050919050565b5f819050919050565b613e0c83613dd9565b613e20613e1882613dfa565b848454613d88565b825550505050565b5f90565b613e34613e28565b613e3f818484613e03565b505050565b5b81811015613e6257613e575f82613e2c565b600181019050613e45565b5050565b601f821115613ea757613e7881613536565b613e8184613d6d565b81016020851015613e90578190505b613ea4613e9c85613d6d565b830182613e44565b50505b505050565b5f82821c905092915050565b5f613ec75f1984600802613eac565b1980831691505092915050565b5f613edf8383613eb8565b9150826002028217905092915050565b613ef98383613d63565b67ffffffffffffffff811115613f1257613f11613096565b5b613f1c8254613506565b613f27828285613e66565b5f601f831160018114613f54575f8415613f42578287013590505b613f4c8582613ed4565b865550613fb3565b601f198416613f6286613536565b5f5b82811015613f8957848901358255600182019150602085019450602081019050613f64565b86831015613fa65784890135613fa2601f891682613eb8565b8355505b6001600288020188555050505b50505050505050565b7f63616e2062652063616c6c656420746f2061737369676e2061646d696e20726f5f8201527f6c6573206f6e6c79000000000000000000000000000000000000000000000000602082015250565b5f614016602883612e1c565b915061402182613fbc565b604082019050919050565b5f6020820190508181035f8301526140438161400a565b9050919050565b61405382612e12565b67ffffffffffffffff81111561406c5761406b613096565b5b6140768254613506565b614081828285613e66565b5f60209050601f8311600181146140b2575f84156140a0578287015190505b6140aa8582613ed4565b865550614111565b601f1984166140c086613536565b5f5b828110156140e7578489015182556001820191506020850194506020810190506140c2565b868310156141045784890151614100601f891682613eb8565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61415082612e9c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361418257614181614119565b5b600182019050919050565b5f60a0820190506141a05f830188612db1565b81810360208301526141b28187612e64565b905081810360408301526141c68186612e64565b90506141d56060830185612da2565b6141e26080830184612ea5565b9695505050505050565b5f6141f682612e9c565b915061420183612e9c565b925082820390508181111561421957614218614119565b5b9291505056fea26469706673582212202cef138f82e19f90de9d093c50398963432e847188f642a862ba2cee0339b03d64736f6c63430008180033", +} + // AcctManagerABI is the input ABI used to generate the binding from. -const AcctManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_adminRole\",\"type\":\"bool\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeExistingAdmin\",\"outputs\":[{\"name\":\"voterUpdate\",\"type\":\"bool\"},{\"name\":\"account\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfAccounts\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountOrgRole\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"validateAccount\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountRole\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateAccountStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"orgAdminExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_aIndex\",\"type\":\"uint256\"}],\"name\":\"getAccountDetailsFromIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addNewAdmin\",\"outputs\":[{\"name\":\"voterUpdate\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setDefaults\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"assignAdminRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"checkOrgAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgAdmin\",\"type\":\"bool\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"AccountAccessModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgAdmin\",\"type\":\"bool\"}],\"name\":\"AccountAccessRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"AccountStatusChanged\",\"type\":\"event\"}]" +// Deprecated: Use AcctManagerMetaData.ABI instead. +var AcctManagerABI = AcctManagerMetaData.ABI var AcctManagerParsedABI, _ = abi.JSON(strings.NewReader(AcctManagerABI)) // AcctManagerBin is the compiled bytecode used for deploying new contracts. -var AcctManagerBin = "0x608060405234801561001057600080fd5b50604051602080613d2d8339810180604052602081101561003057600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055613ccb806100626000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806384b7a84a11610097578063cef7f6af11610066578063cef7f6af1461078c578063e3483a9d1461084a578063e8b42bf414610918578063fd4fa05a14610a51576100f5565b806384b7a84a146105d7578063950145cf14610654578063b2018568146106f8578063c214e5e514610715576100f5565b8063309e36ef116100d3578063309e36ef1461038c5780636acee5fd146103a65780636b568d76146104aa57806381d66b231461053c576100f5565b8063143a5604146100fa5780631d09dc93146101cc5780632aceb5341461025d575b600080fd5b6101ca6004803603608081101561011057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561013a57600080fd5b82018360208201111561014c57600080fd5b803590602001918460018302840111600160201b8311171561016d57600080fd5b919390929091602081019035600160201b81111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111600160201b831117156101bd57600080fd5b9193509150351515610a77565b005b61023a600480360360208110156101e257600080fd5b810190602081018135600160201b8111156101fc57600080fd5b82018360208201111561020e57600080fd5b803590602001918460018302840111600160201b8311171561022f57600080fd5b509092509050610e75565b6040805192151583526001600160a01b0390911660208301528051918290030190f35b6102836004803603602081101561027357600080fd5b50356001600160a01b0316611401565b60405180866001600160a01b03166001600160a01b03168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156102ec5781810151838201526020016102d4565b50505050905090810190601f1680156103195780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561034c578181015183820152602001610334565b50505050905090810190601f1680156103795780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b610394611659565b60408051918252519081900360200190f35b6103cc600480360360208110156103bc57600080fd5b50356001600160a01b0316611660565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561040d5781810151838201526020016103f5565b50505050905090810190601f16801561043a5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561046d578181015183820152602001610455565b50505050905090810190601f16801561049a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610528600480360360408110156104c057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460018302840111600160201b8311171561051d57600080fd5b509092509050611831565b604080519115158252519081900360200190f35b6105626004803603602081101561055257600080fd5b50356001600160a01b031661198c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561059c578181015183820152602001610584565b50505050905090810190601f1680156105c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ca600480360360608110156105ed57600080fd5b810190602081018135600160201b81111561060757600080fd5b82018360208201111561061957600080fd5b803590602001918460018302840111600160201b8311171561063a57600080fd5b91935091506001600160a01b038135169060200135611ae2565b6105286004803603602081101561066a57600080fd5b810190602081018135600160201b81111561068457600080fd5b82018360208201111561069657600080fd5b803590602001918460018302840111600160201b831117156106b757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612215945050505050565b6102836004803603602081101561070e57600080fd5b5035612390565b6105286004803603604081101561072b57600080fd5b810190602081018135600160201b81111561074557600080fd5b82018360208201111561075757600080fd5b803590602001918460018302840111600160201b8311171561077857600080fd5b9193509150356001600160a01b031661257a565b6101ca600480360360408110156107a257600080fd5b810190602081018135600160201b8111156107bc57600080fd5b8201836020820111156107ce57600080fd5b803590602001918460018302840111600160201b831117156107ef57600080fd5b919390929091602081019035600160201b81111561080c57600080fd5b82018360208201111561081e57600080fd5b803590602001918460018302840111600160201b8311171561083f57600080fd5b509092509050612bcc565b6101ca6004803603608081101561086057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561088a57600080fd5b82018360208201111561089c57600080fd5b803590602001918460018302840111600160201b831117156108bd57600080fd5b919390929091602081019035600160201b8111156108da57600080fd5b8201836020820111156108ec57600080fd5b803590602001918460018302840111600160201b8311171561090d57600080fd5b919350915035612cb8565b6105286004803603606081101561092e57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561095857600080fd5b82018360208201111561096a57600080fd5b803590602001918460018302840111600160201b8311171561098b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156109dd57600080fd5b8201836020820111156109ef57600080fd5b803590602001918460018302840111600160201b83111715610a1057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061302a945050505050565b61039460048036036020811015610a6757600080fd5b50356001600160a01b0316613591565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d6020811015610aee57600080fd5b50516001600160a01b03163314610b435760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b6040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015610db457506040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015610cc15780601f10610c9657610100808354040283529160200191610cc1565b820191906000526020600020905b815481529060010190602001808311610ca457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610d69578181015183820152602001610d51565b50505050905090810190601f168015610d965780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b1515610df457604051600160e51b62461bcd028152600401808060200182810382526040815260200180613bfb6040913960400191505060405180910390fd5b610e6d8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250600292508791506135ee9050565b505050505050565b6000805460408051600160e41b62e32cf9028152905183926001600160a01b031691630e32cf90916004808301926020929190829003018186803b158015610ebc57600080fd5b505afa158015610ed0573d6000803e3d6000fd5b505050506040513d6020811015610ee657600080fd5b50516001600160a01b03163314610f3b5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b610f7a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061221592505050565b156113f357600061100260066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a90046001600160a01b03166139c8565b9050600660018281548110151561101557fe5b906000526020600020906005020160030181905550600060018281548110151561103b57fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77660018281548110151561109357fe5b6000918252602090912060059091020154600180546001600160a01b0390921691849081106110be57fe5b90600052602060002090600502016001016001848154811015156110de57fe5b90600052602060002090600502016002016001858154811015156110fe57fe5b60009182526020909120600460059092020101546001805460ff909216918790811061112657fe5b600091825260209182902060036005909202010154604080516001600160a01b038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156111d95780601f106111ae576101008083540402835291602001916111d9565b820191906000526020600020905b8154815290600101906020018083116111bc57829003601f168201915b505083810382528654600260001961010060018416150201909116048082526020909101908790801561124d5780601f106112225761010080835404028352916020019161124d565b820191906000526020600020905b81548152906001019060200180831161123057829003601f168201915b505097505050505050505060405180910390a160408051602080820190815260048054600260001961010060018416150201909116049383018490529290918291606090910190849080156112e35780601f106112b8576101008083540402835291602001916112e3565b820191906000526020600020905b8154815290600101906020018083116112c657829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561130e57fe5b6000918252602091829020604080518085019485526002600590940290920183018054600019610100600183161502011693909304908201819052919291829160600190849080156113a15780601f10611376576101008083540402835291602001916113a1565b820191906000526020600020905b81548152906001019060200180831161138457829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156113cd57fe5b60009182526020909120600590910201549093506001600160a01b031691506113fa9050565b5060009050805b9250929050565b6001600160a01b038116600090815260026020526040812054606090819083908190151561146857505060408051808201825260048152600160e01b634e4f4e45026020808301919091528251908101909252600080835286955090935090915080611650565b6000611473876139c8565b905060018181548110151561148457fe5b6000918252602090912060059091020154600180546001600160a01b0390921691839081106114af57fe5b90600052602060002090600502016001016001838154811015156114cf57fe5b90600052602060002090600502016002016001848154811015156114ef57fe5b90600052602060002090600502016003015460018581548110151561151057fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156115af5780601f10611584576101008083540402835291602001916115af565b820191906000526020600020905b81548152906001019060200180831161159257829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561163d5780601f106116125761010080835404028352916020019161163d565b820191906000526020600020905b81548152906001019060200180831161162057829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6001545b90565b6001600160a01b038116600090815260026020526040902054606090819015156116bd57604051806040016040528060048152602001600160e01b634e4f4e4502815250604051806020016040528060008152509150915061182c565b60006116c8846139c8565b90506001818154811015156116d957fe5b90600052602060002090600502016001016001828154811015156116f957fe5b6000918252602091829020835460408051601f600260001961010060018716150201909416849004908101879004870282018701909252818152600590940290920101928491908301828280156117915780601f1061176657610100808354040283529160200191611791565b820191906000526020600020905b81548152906001019060200180831161177457829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529597508694509250840190508282801561181f5780601f106117f45761010080835404028352916020019161181f565b820191906000526020600020905b81548152906001019060200180831161180257829003601f168201915b5050505050905092509250505b915091565b6001600160a01b038316600090815260026020526040812054151561185857506001611985565b6000611863856139c8565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001206001828154811015156118c757fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156119645780601f1061193957610100808354040283529160200191611964565b820191906000526020600020905b81548152906001019060200180831161194757829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b6001600160a01b03811660009081526002602052604090205460609015156119d257506040805180820190915260048152600160e01b634e4f4e45026020820152611add565b60006119dd836139c8565b90506001818154811015156119ee57fe5b9060005260206000209060050201600301546000141515611abc576001805482908110611a1757fe5b600091825260209182902060026005909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611aaf5780601f10611a8457610100808354040283529160200191611aaf565b820191906000526020600020905b815481529060010190602001808311611a9257829003601f168201915b5050505050915050611add565b50506040805180820190915260048152600160e01b634e4f4e450260208201525b919050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2f57600080fd5b505afa158015611b43573d6000803e3d6000fd5b505050506040513d6020811015611b5957600080fd5b50516001600160a01b03163314611bae5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506001600160a01b03871681526002602052604090205486935015159150611c5390505760408051600160e51b62461bcd02815260206004820152601760248201527f6163636f756e7420646f6573206e6f7420657869737473000000000000000000604482015290519081900360640190fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611c94578181015183820152602001611c7c565b50505050905090810190601f168015611cc15780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611ce7836139c8565b81548110611cf157fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611d8e5780601f10611d6357610100808354040283529160200191611d8e565b820191906000526020600020905b815481529060010190602001808311611d7157829003601f168201915b50509250505060405160208183030381529060405280519060200120141515611e015760408051600160e51b62461bcd02815260206004820152601860248201527f6163636f756e7420696e20646966666572656e74206f72670000000000000000604482015290519081900360640190fd5b600083118015611e115750600683105b1515611e675760408051600160e51b62461bcd02815260206004820152601d60248201527f696e76616c696420737461747573206368616e67652072657175657374000000604482015290519081900360640190fd5b611eb58487878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152925061302a915050565b151560011415611ef957604051600160e51b62461bcd028152600401808060200182810382526031815260200180613c6f6031913960400191505060405180910390fd5b60008360011415611f76576001611f0f866139c8565b81548110611f1957fe5b9060005260206000209060050201600301546002141515611f6e57604051600160e51b62461bcd028152600401808060200182810382526039815260200180613b9a6039913960400191505060405180910390fd5b50600461215f565b8360021415611ff1576001611f8a866139c8565b81548110611f9457fe5b9060005260206000209060050201600301546004141515611fe957604051600160e51b62461bcd02815260040180806020018281038252603c815260200180613b5e603c913960400191505060405180910390fd5b50600261215f565b836003141561206d576001612005866139c8565b8154811061200f57fe5b90600052602060002090600502016003015460051415151561206557604051600160e51b62461bcd028152600401808060200182810382526038815260200180613b266038913960400191505060405180910390fd5b50600561215f565b83600414156120e8576001612081866139c8565b8154811061208b57fe5b90600052602060002090600502016003015460051415156120e057604051600160e51b62461bcd028152600401808060200182810382526034815260200180613c3b6034913960400191505060405180910390fd5b50600761215f565b836005141561215f5760016120fc866139c8565b8154811061210657fe5b906000526020600020906005020160030154600714151561215b57604051600160e51b62461bcd028152600401808060200182810382526038815260200180613aee6038913960400191505060405180910390fd5b5060025b80600161216b876139c8565b8154811061217557fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b258588888460405180856001600160a01b03166001600160a01b03168152602001806020018381526020018281038252858582818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a150505050505050565b6000806001600160a01b031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561226657818101518382015260200161224e565b50505050905090810190601f1680156122935780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020546001600160a01b03161461238857600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156123125781810151838201526020016122fa565b50505050905090810190601f16801561233f5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020546001600160a01b0316905061237d81613591565b600214915050611add565b506000919050565b60006060806000806001868154811015156123a757fe5b6000918252602090912060059091020154600180546001600160a01b0390921691889081106123d257fe5b90600052602060002090600502016001016001888154811015156123f257fe5b906000526020600020906005020160020160018981548110151561241257fe5b90600052602060002090600502016003015460018a81548110151561243357fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156124d25780601f106124a7576101008083540402835291602001916124d2565b820191906000526020600020905b8154815290600101906020018083116124b557829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156125605780601f1061253557610100808354040283529160200191612560565b820191906000526020600020905b81548152906001019060200180831161254357829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c957600080fd5b505afa1580156125dd573d6000803e3d6000fd5b505050506040513d60208110156125f357600080fd5b50516001600160a01b031633146126485760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60606126538361198c565b9050600061266084613591565b9050600061266d856139c8565b604080516020808201908152600580546002600019610100600184161502019091160493830184905293945091829160600190849080156126ef5780601f106126c4576101008083540402835291602001916126ef565b820191906000526020600020905b8154815290600101906020018083116126d257829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561274c578181015183820152602001612734565b50505050905090810190601f1680156127795780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201480156127a15750816001145b15612831578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600260018281548110151561284257fe5b9060005260206000209060050201600301819055506001808281548110151561286757fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776856001838154811015156128c057fe5b90600052602060002090600502016001016001848154811015156128e057fe5b906000526020600020906005020160020160018581548110151561290057fe5b60009182526020909120600460059092020101546001805460ff909216918790811061292857fe5b600091825260209182902060036005909202010154604080516001600160a01b038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156129db5780601f106129b0576101008083540402835291602001916129db565b820191906000526020600020905b8154815290600101906020018083116129be57829003601f168201915b5050838103825286546002600019610100600184161502019091160480825260209091019087908015612a4f5780601f10612a2457610100808354040283529160200191612a4f565b820191906000526020600020905b815481529060010190602001808311612a3257829003601f168201915b505097505050505050505060405180910390a16040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612ae55780601f10612aba57610100808354040283529160200191612ae5565b820191906000526020600020905b815481529060010190602001808311612ac857829003601f168201915b50509250505060405160208183030381529060405280519060200120600182815481101515612b1057fe5b600091825260209182902060408051808501948552600260059094029092018301805460001961010060018316150201169390930490820181905291929182916060019084908015612ba35780601f10612b7857610100808354040283529160200191612ba3565b820191906000526020600020905b815481529060010190602001808311612b8657829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1957600080fd5b505afa158015612c2d573d6000803e3d6000fd5b505050506040513d6020811015612c4357600080fd5b50516001600160a01b03163314612c985760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b612ca4600485856139e7565b50612cb1600583836139e7565b5050505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015612d0557600080fd5b505afa158015612d19573d6000803e3d6000fd5b505050506040513d6020811015612d2f57600080fd5b50516001600160a01b03163314612d845760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b6040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015612e075780601f10612ddc57610100808354040283529160200191612e07565b820191906000526020600020905b815481529060010190602001808311612dea57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001201480612f7157506040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612f005780601f10612ed557610100808354040283529160200191612f00565b820191906000526020600020905b815481529060010190602001808311612ee357829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515612fb157604051600160e51b62461bcd028152600401808060200182810382526028815260200180613bd36028913960400191505060405180910390fd5b610e6d8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250600191506135ee9050565b604080516020808201908152600480546002600019610100600184161502019091160493830184905260009390928291606090910190849080156130af5780601f10613084576101008083540402835291602001916130af565b820191906000526020600020905b81548152906001019060200180831161309257829003601f168201915b505092505050604051602081830303815290604052805190602001206130d48561198c565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131145781810151838201526020016130fc565b50505050905090810190601f1680156131415780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120141561342257600061316d856139c8565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131b0578181015183820152602001613198565b50505050905090810190601f1680156131dd5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012060018281548110151561320757fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156132a45780601f10613279576101008083540402835291602001916132a4565b820191906000526020600020905b81548152906001019060200180831161328757829003601f168201915b50509250505060405160208183030381529060405280519060200120148061341a5750826040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156133085781810151838201526020016132f0565b50505050905090810190601f1680156133355780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012060018281548110151561335f57fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156133fc5780601f106133d1576101008083540402835291602001916133fc565b820191906000526020600020905b8154815290600101906020018083116133df57829003601f168201915b50509250505060405160208183030381529060405280519060200120145b915050611985565b836001600160a01b031660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613471578181015183820152602001613459565b50505050905090810190601f16801561349e5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020546001600160a01b031614806135895750836001600160a01b031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561352757818101518382015260200161350f565b50505050905090810190601f1680156135545780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020546001600160a01b0316145b949350505050565b6001600160a01b03811660009081526002602052604081205415156135b857506000611add565b60006135c3836139c8565b90506001818154811015156135d457fe5b906000526020600020906005020160030154915050919050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561363b57600080fd5b505afa15801561364f573d6000803e3d6000fd5b505050506040513d602081101561366557600080fd5b50516001600160a01b031633146136ba5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60006136c5866139c8565b6001600160a01b0387166000908152600260205260409020549091501561377757836001828154811015156136f657fe5b9060005260206000209060050201600201908051906020019061371a929190613a65565b508260018281548110151561372b57fe5b9060005260206000209060050201600301819055508160018281548110151561375057fe5b60009182526020909120600590910201600401805460ff1916911515919091179055613892565b600380546001908101918290556001600160a01b03888116600081815260026020908152604080832096909655855160a0810187529283528281018b81529583018a905260608301899052871515608084015284548086018087559590925282517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6600590930292830180546001600160a01b03191691909516178455945180519495929461384f937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf7909301929190910190613a65565b506040820151805161386b916002840191602090910190613a65565b50606082015160038201556080909101516004909101805460ff1916911515919091179055505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776868686858760405180866001600160a01b03166001600160a01b03168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015613921578181015183820152602001613909565b50505050905090810190601f16801561394e5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015613981578181015183820152602001613969565b50505050905090810190601f1680156139ae5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b6001600160a01b03166000908152600260205260409020546000190190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a285782800160ff19823516178555613a55565b82800160010185558215613a55579182015b82811115613a55578235825591602001919060010190613a3a565b50613a61929150613ad3565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613aa657805160ff1916838001178555613a55565b82800160010185558215613a55579182015b82811115613a55578251825591602001919060010190613ab8565b61165d91905b80821115613a615760008155600101613ad956fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a72305820f5cf4f43c37e9dae763b0a301bd310a91d3b733b1642aabb6208a69fcc6a272d0029" +// Deprecated: Use AcctManagerMetaData.Bin instead. +var AcctManagerBin = AcctManagerMetaData.Bin // DeployAcctManager deploys a new Ethereum contract, binding an instance of AcctManager to it. -func DeployAcctManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *AcctManager, error) { - parsed, err := abi.JSON(strings.NewReader(AcctManagerABI)) +func DeployAcctManager(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *AcctManager, error) { + parsed, err := AcctManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AcctManagerBin), backend, _permUpgradable) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AcctManagerBin), backend) if err != nil { return common.Address{}, nil, nil, err } @@ -541,6 +554,27 @@ func (_AcctManager *AcctManagerTransactorSession) AssignAdminRole(_account commo return _AcctManager.Contract.AssignAdminRole(&_AcctManager.TransactOpts, _account, _orgId, _roleId, _status) } +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_AcctManager *AcctManagerTransactor) Initialize(opts *bind.TransactOpts, _permUpgradable common.Address) (*types.Transaction, error) { + return _AcctManager.contract.Transact(opts, "initialize", _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_AcctManager *AcctManagerSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _AcctManager.Contract.Initialize(&_AcctManager.TransactOpts, _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_AcctManager *AcctManagerTransactorSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _AcctManager.Contract.Initialize(&_AcctManager.TransactOpts, _permUpgradable) +} + // RemoveExistingAdmin is a paid mutator transaction binding the contract method 0x1d09dc93. // // Solidity: function removeExistingAdmin(string _orgId) returns(bool voterUpdate, address account) @@ -740,6 +774,7 @@ func (_AcctManager *AcctManagerFilterer) ParseAccountAccessModified(log types.Lo if err := _AcctManager.contract.UnpackLog(event, "AccountAccessModified", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -878,6 +913,7 @@ func (_AcctManager *AcctManagerFilterer) ParseAccountAccessRevoked(log types.Log if err := _AcctManager.contract.UnpackLog(event, "AccountAccessRevoked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1015,5 +1051,142 @@ func (_AcctManager *AcctManagerFilterer) ParseAccountStatusChanged(log types.Log if err := _AcctManager.contract.UnpackLog(event, "AccountStatusChanged", log); err != nil { return nil, err } + event.Raw = log + return event, nil +} + +// AcctManagerInitializedAccsIterator is returned from FilterInitializedAccs and is used to iterate over the raw logs and unpacked data for InitializedAccs events raised by the AcctManager contract. +type AcctManagerInitializedAccsIterator struct { + Event *AcctManagerInitializedAccs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AcctManagerInitializedAccsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AcctManagerInitializedAccs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AcctManagerInitializedAccs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AcctManagerInitializedAccsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AcctManagerInitializedAccsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AcctManagerInitializedAccs represents a InitializedAccs event raised by the AcctManager contract. +type AcctManagerInitializedAccs struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitializedAccs is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_AcctManager *AcctManagerFilterer) FilterInitializedAccs(opts *bind.FilterOpts) (*AcctManagerInitializedAccsIterator, error) { + + logs, sub, err := _AcctManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &AcctManagerInitializedAccsIterator{contract: _AcctManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +var InitializedAccsTopicHash = "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + +// WatchInitializedAccs is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_AcctManager *AcctManagerFilterer) WatchInitializedAccs(opts *bind.WatchOpts, sink chan<- *AcctManagerInitializedAccs) (event.Subscription, error) { + + logs, sub, err := _AcctManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AcctManagerInitializedAccs) + if err := _AcctManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitializedAccs is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_AcctManager *AcctManagerFilterer) ParseInitializedAccs(log types.Log) (*AcctManagerInitializedAccs, error) { + event := new(AcctManagerInitializedAccs) + if err := _AcctManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log return event, nil } diff --git a/permission/v2/bind/nodes.go b/permission/v2/bind/nodes.go index d48e39f515..f94ff713f0 100644 --- a/permission/v2/bind/nodes.go +++ b/permission/v2/bind/nodes.go @@ -4,6 +4,7 @@ package bind import ( + "errors" "math/big" "strings" @@ -17,6 +18,7 @@ import ( // Reference imports to suppress errors if they are not otherwise used. var ( + _ = errors.New _ = big.NewInt _ = strings.NewReader _ = ethereum.NotFound @@ -26,22 +28,33 @@ var ( _ = event.NewSubscription ) +// NodeManagerMetaData contains all meta data concerning the NodeManager contract. +var NodeManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryInitiated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addAdminNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrgNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"}],\"name\":\"connectionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"enodeId\",\"type\":\"string\"}],\"name\":\"getNodeDetails\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nodeIndex\",\"type\":\"uint256\"}],\"name\":\"getNodeDetailsFromIndex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfNodes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isIpValidationEnabled\",\"type\":\"bool\"}],\"name\":\"setIpValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052600160055f6101000a81548160ff021916908315150217905550348015610029575f80fd5b506133df806100375f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c8063549583df1161006f578063549583df1461016457806397c07a9b146101805780639fc666b2146101b5578063b81c806a146101d1578063c4d66de8146101ef578063f82e08ac1461020b576100a7565b806337d50b27146100ab5780633f0e0e47146100c75780634530abe1146100fc57806345a59e5b146101185780634c57331114610148575b5f80fd5b6100c560048036038101906100c0919061248c565b610227565b005b6100e160048036038101906100dc91906125c6565b6108d9565b6040516100f3969594939291906126a9565b60405180910390f35b6101166004803603810190610111919061271d565b610c5d565b005b610132600480360381019061012d91906127e8565b610f5b565b60405161013f919061288a565b60405180910390f35b610162600480360381019061015d919061271d565b61117a565b005b61017e6004803603810190610179919061271d565b611478565b005b61019a600480360381019061019591906128a3565b611776565b6040516101ac969594939291906126a9565b60405180910390f35b6101cf60048036038101906101ca91906128f8565b611a20565b005b6101d9611b35565b6040516101e69190612923565b60405180910390f35b61020960048036038101906102049190612996565b611b3e565b005b6102256004803603810190610220919061271d565b611d63565b005b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa15801561028f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b391906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031790612a4a565b60405180910390fd5b855f60035f836040516020016103369190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f20540361039a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039190612ad2565b60405180910390fd5b6103a4878461212f565b6103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da90612b60565b60405180910390fd5b60018214806103f25750600282145b806103fd5750600382145b806104085750600482145b806104135750600582145b610452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044990612bee565b60405180910390fd5b5f61045c886121b1565b90508660405160200161046f9190612a68565b604051602081830303815290604052805190602001206001828154811061049957610498612c0c565b5b905f5260205f2090600502016001016040516020016104b89190612d29565b6040516020818303038152906040528051906020012014158061051357508561ffff16600182815481106104ef576104ee612c0c565b5b905f5260205f2090600502016002015f9054906101000a900461ffff1661ffff1614155b8061055757508461ffff166001828154811061053257610531612c0c565b5b905f5260205f20906005020160020160029054906101000a900461ffff1661ffff1614155b1561056257506108d0565b6001830361062257600261057589612233565b146105b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ac90612d93565b60405180910390fd5b6003600182815481106105cb576105ca612c0c565b5b905f5260205f209060050201600401819055507ff631019be71bc682c59150635d714061185232e98e60de8bdd87bbee239cc5c88888888888604051610615959493929190612db1565b60405180910390a16108ce565b600283036106e257600361063589612233565b14610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066c90612d93565b60405180910390fd5b60026001828154811061068b5761068a612c0c565b5b905f5260205f209060050201600401819055507ffb98f62dea866f0c373574c8523f611d0db1d8f19cc1b95d07a221d36a6a45de88888888886040516106d5959493929190612db1565b60405180910390a16108cd565b6003830361075757600460018281548110610700576106ff612c0c565b5b905f5260205f209060050201600401819055507f25300d4d785e654bc9b7979700cfa0fdc9ace890a46841fecfce661fd2c41a33888888888860405161074a959493929190612db1565b60405180910390a16108cc565b6004830361081757600461076a89612233565b146107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a190612d93565b60405180910390fd5b6005600182815481106107c0576107bf612c0c565b5b905f5260205f209060050201600401819055507f72779f66ea90e28bae76fbfe03eaef5ae01699976c7493f93186ab9560ccfaa4888888888860405161080a959493929190612db1565b60405180910390a16108cb565b600561082289612233565b14610862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085990612d93565b60405180910390fd5b60026001828154811061087857610877612c0c565b5b905f5260205f209060050201600401819055507f60aac8c36efdaabf125dc9ec2124bde8b3ceafe5c8b4fc8063fc4ac9017eb0be88888888886040516108c2959493929190612db1565b60405180910390a15b5b5b5b505b50505050505050565b60608060605f805f8060025f876040516020016108f69190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f205403610969575f805f60405180602001604052805f81525092919060405180602001604052805f81525092919060405180602001604052805f815250929190955095509550955095509550610c53565b5f6109b689898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506121b1565b9050600181815481106109cc576109cb612c0c565b5b905f5260205f209060050201600301600182815481106109ef576109ee612c0c565b5b905f5260205f2090600502015f0160018381548110610a1157610a10612c0c565b5b905f5260205f20906005020160010160018481548110610a3457610a33612c0c565b5b905f5260205f2090600502016002015f9054906101000a900461ffff1660018581548110610a6557610a64612c0c565b5b905f5260205f20906005020160020160029054906101000a900461ffff1660018681548110610a9757610a96612c0c565b5b905f5260205f20906005020160040154858054610ab390612c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610adf90612c66565b8015610b2a5780601f10610b0157610100808354040283529160200191610b2a565b820191905f5260205f20905b815481529060010190602001808311610b0d57829003601f168201915b50505050509550848054610b3d90612c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6990612c66565b8015610bb45780601f10610b8b57610100808354040283529160200191610bb4565b820191905f5260205f20905b815481529060010190602001808311610b9757829003601f168201915b50505050509450838054610bc790612c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf390612c66565b8015610c3e5780601f10610c1557610100808354040283529160200191610c3e565b820191905f5260205f20905b815481529060010190602001808311610c2157829003601f168201915b50505050509350965096509650965096509650505b9295509295509295565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce991906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4d90612a4a565b60405180910390fd5b845f60035f83604051602001610d6c9190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f205414610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790612e61565b60405180910390fd5b60045f815480929190610de290612eac565b919050555060045460035f88604051602001610dfe9190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f208190555060016040518060c001604052808881526020018781526020018661ffff1681526020018561ffff1681526020018481526020016002815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f019081610e96919061307e565b506020820151816001019081610eac919061307e565b506040820151816002015f6101000a81548161ffff021916908361ffff16021790555060608201518160020160026101000a81548161ffff021916908361ffff1602179055506080820151816003019081610f07919061307e565b5060a0820151816004015550507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d8686868686604051610f4b959493929190612db1565b60405180910390a1505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe991906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612a4a565b60405180910390fd5b5f60035f8660405160200161106b9190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f20540361109c575f9050611173565b5f6110a6856121b1565b90506002600182815481106110be576110bd612c0c565b5b905f5260205f2090600502016004015414801561115f575060055f9054906101000a900460ff16158061115e5750836040516020016110fd9190612a68565b604051602081830303815290604052805190602001206001828154811061112757611126612c0c565b5b905f5260205f2090600502016001016040516020016111469190612d29565b60405160208183030381529060405280519060200120145b5b1561116e576001915050611173565b5f9150505b9392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120691906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a90612a4a565b60405180910390fd5b845f60035f836040516020016112899190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f2054146112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490612e61565b60405180910390fd5b60045f8154809291906112ff90612eac565b919050555060045460035f8860405160200161131b9190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f208190555060016040518060c001604052808881526020018781526020018661ffff1681526020018561ffff1681526020018481526020016002815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f0190816113b3919061307e565b5060208201518160010190816113c9919061307e565b506040820151816002015f6101000a81548161ffff021916908361ffff16021790555060608201518160020160026101000a81548161ffff021916908361ffff1602179055506080820151816003019081611424919061307e565b5060a0820151816004015550507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d8686868686604051611468959493929190612db1565b60405180910390a1505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150491906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890612a4a565b60405180910390fd5b845f60035f836040516020016115879190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f2054146115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e290612e61565b60405180910390fd5b60045f8154809291906115fd90612eac565b919050555060045460035f886040516020016116199190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f208190555060016040518060c001604052808881526020018781526020018661ffff1681526020018561ffff1681526020018481526020016001815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f0190816116b1919061307e565b5060208201518160010190816116c7919061307e565b506040820151816002015f6101000a81548161ffff021916908361ffff16021790555060608201518160020160026101000a81548161ffff021916908361ffff1602179055506080820151816003019081611722919061307e565b5060a0820151816004015550507ff9bad9f8a2dccc52fad61273a7fd673335b420319506c19b87df9ce7a19732da8686868686604051611766959493929190612db1565b60405180910390a1505050505050565b60608060605f805f6001878154811061179257611791612c0c565b5b905f5260205f209060050201600301600188815481106117b5576117b4612c0c565b5b905f5260205f2090600502015f01600189815481106117d7576117d6612c0c565b5b905f5260205f20906005020160010160018a815481106117fa576117f9612c0c565b5b905f5260205f2090600502016002015f9054906101000a900461ffff1660018b8154811061182b5761182a612c0c565b5b905f5260205f20906005020160020160029054906101000a900461ffff1660018c8154811061185d5761185c612c0c565b5b905f5260205f2090600502016004015485805461187990612c66565b80601f01602080910402602001604051908101604052809291908181526020018280546118a590612c66565b80156118f05780601f106118c7576101008083540402835291602001916118f0565b820191905f5260205f20905b8154815290600101906020018083116118d357829003601f168201915b5050505050955084805461190390612c66565b80601f016020809104026020016040519081016040528092919081815260200182805461192f90612c66565b801561197a5780601f106119515761010080835404028352916020019161197a565b820191905f5260205f20905b81548152906001019060200180831161195d57829003601f168201915b5050505050945083805461198d90612c66565b80601f01602080910402602001604051908101604052809291908181526020018280546119b990612c66565b8015611a045780601f106119db57610100808354040283529160200191611a04565b820191905f5260205f20905b8154815290600101906020018083116119e757829003601f168201915b5050505050935095509550955095509550955091939550919395565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aac91906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1090612a4a565b60405180910390fd5b8060055f6101000a81548160ff02191690831515021790555050565b5f600454905090565b5f611b476122ae565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff16148015611b8f5750825b90505f60018367ffffffffffffffff16148015611bc257505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611bd0575080155b15611c07576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611c54576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb990613197565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315611d5b575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611d529190613201565b60405180910390a15b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611def91906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390612a4a565b60405180910390fd5b845f60035f83604051602001611e729190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f205403611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd90612ad2565b60405180910390fd5b611ee0868361212f565b611f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f169061328a565b60405180910390fd5b6001611f2a87612233565b14611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f61906132f2565b60405180910390fd5b5f611f74876121b1565b905085604051602001611f879190612a68565b6040516020818303038152906040528051906020012060018281548110611fb157611fb0612c0c565b5b905f5260205f209060050201600101604051602001611fd09190612d29565b6040516020818303038152906040528051906020012014158061202b57508461ffff166001828154811061200757612006612c0c565b5b905f5260205f2090600502016002015f9054906101000a900461ffff1661ffff1614155b8061206f57508361ffff166001828154811061204a57612049612c0c565b5b905f5260205f20906005020160020160029054906101000a900461ffff1661ffff1614155b1561207a5750612127565b6002600182815481106120905761208f612c0c565b5b905f5260205f209060050201600401819055507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d600182815481106120d8576120d7612c0c565b5b905f5260205f2090600502015f01878787600186815481106120fd576120fc612c0c565b5b905f5260205f20906005020160030160405161211d959493929190613310565b60405180910390a1505b505050505050565b5f816040516020016121419190612a68565b604051602081830303815290604052805190602001206001612162856121b1565b8154811061217357612172612c0c565b5b905f5260205f2090600502016003016040516020016121929190612d29565b6040516020818303038152906040528051906020012014905092915050565b5f8060035f846040516020016121c79190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f205490505f810361221d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91505061222e565b60018161222a9190613376565b9150505b919050565b5f8060035f846040516020016122499190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f20540361227a575f90506122a9565b6001612285836121b1565b8154811061229657612295612c0c565b5b905f5260205f2090600502016004015490505b919050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612334826122ee565b810181811067ffffffffffffffff82111715612353576123526122fe565b5b80604052505050565b5f6123656122d5565b9050612371828261232b565b919050565b5f67ffffffffffffffff8211156123905761238f6122fe565b5b612399826122ee565b9050602081019050919050565b828183375f83830152505050565b5f6123c66123c184612376565b61235c565b9050828152602081018484840111156123e2576123e16122ea565b5b6123ed8482856123a6565b509392505050565b5f82601f830112612409576124086122e6565b5b81356124198482602086016123b4565b91505092915050565b5f61ffff82169050919050565b61243881612422565b8114612442575f80fd5b50565b5f813590506124538161242f565b92915050565b5f819050919050565b61246b81612459565b8114612475575f80fd5b50565b5f8135905061248681612462565b92915050565b5f805f805f8060c087890312156124a6576124a56122de565b5b5f87013567ffffffffffffffff8111156124c3576124c26122e2565b5b6124cf89828a016123f5565b965050602087013567ffffffffffffffff8111156124f0576124ef6122e2565b5b6124fc89828a016123f5565b955050604061250d89828a01612445565b945050606061251e89828a01612445565b935050608087013567ffffffffffffffff81111561253f5761253e6122e2565b5b61254b89828a016123f5565b92505060a061255c89828a01612478565b9150509295509295509295565b5f80fd5b5f80fd5b5f8083601f840112612586576125856122e6565b5b8235905067ffffffffffffffff8111156125a3576125a2612569565b5b6020830191508360018202830111156125bf576125be61256d565b5b9250929050565b5f80602083850312156125dc576125db6122de565b5b5f83013567ffffffffffffffff8111156125f9576125f86122e2565b5b61260585828601612571565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561264857808201518184015260208101905061262d565b5f8484015250505050565b5f61265d82612611565b612667818561261b565b935061267781856020860161262b565b612680816122ee565b840191505092915050565b61269481612422565b82525050565b6126a381612459565b82525050565b5f60c0820190508181035f8301526126c18189612653565b905081810360208301526126d58188612653565b905081810360408301526126e98187612653565b90506126f8606083018661268b565b612705608083018561268b565b61271260a083018461269a565b979650505050505050565b5f805f805f60a08688031215612736576127356122de565b5b5f86013567ffffffffffffffff811115612753576127526122e2565b5b61275f888289016123f5565b955050602086013567ffffffffffffffff8111156127805761277f6122e2565b5b61278c888289016123f5565b945050604061279d88828901612445565b93505060606127ae88828901612445565b925050608086013567ffffffffffffffff8111156127cf576127ce6122e2565b5b6127db888289016123f5565b9150509295509295909350565b5f805f606084860312156127ff576127fe6122de565b5b5f84013567ffffffffffffffff81111561281c5761281b6122e2565b5b612828868287016123f5565b935050602084013567ffffffffffffffff811115612849576128486122e2565b5b612855868287016123f5565b925050604061286686828701612445565b9150509250925092565b5f8115159050919050565b61288481612870565b82525050565b5f60208201905061289d5f83018461287b565b92915050565b5f602082840312156128b8576128b76122de565b5b5f6128c584828501612478565b91505092915050565b6128d781612870565b81146128e1575f80fd5b50565b5f813590506128f2816128ce565b92915050565b5f6020828403121561290d5761290c6122de565b5b5f61291a848285016128e4565b91505092915050565b5f6020820190506129365f83018461269a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129658261293c565b9050919050565b6129758161295b565b811461297f575f80fd5b50565b5f813590506129908161296c565b92915050565b5f602082840312156129ab576129aa6122de565b5b5f6129b884828501612982565b91505092915050565b5f815190506129cf8161296c565b92915050565b5f602082840312156129ea576129e96122de565b5b5f6129f7848285016129c1565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f612a34600e8361261b565b9150612a3f82612a00565b602082019050919050565b5f6020820190508181035f830152612a6181612a28565b9050919050565b5f6020820190508181035f830152612a808184612653565b905092915050565b7f70617373656420656e6f646520696420646f6573206e6f7420657869737400005f82015250565b5f612abc601e8361261b565b9150612ac782612a88565b602082019050919050565b5f6020820190508181035f830152612ae981612ab0565b9050919050565b7f656e6f646520696420646f6573206e6f742062656c6f6e6720746f20746865205f8201527f706173736564206f726700000000000000000000000000000000000000000000602082015250565b5f612b4a602a8361261b565b9150612b5582612af0565b604082019050919050565b5f6020820190508181035f830152612b7781612b3e565b9050919050565b7f696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e205f8201527f7061737365640000000000000000000000000000000000000000000000000000602082015250565b5f612bd860268361261b565b9150612be382612b7e565b604082019050919050565b5f6020820190508181035f830152612c0581612bcc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c7d57607f821691505b602082108103612c9057612c8f612c39565b5b50919050565b5f819050815f5260205f209050919050565b5f8154612cb481612c66565b612cbe818661261b565b9450600182165f8114612cd85760018114612cee57612d20565b60ff198316865281151560200286019350612d20565b612cf785612c96565b5f5b83811015612d1857815481890152600182019150602081019050612cf9565b808801955050505b50505092915050565b5f6020820190508181035f830152612d418184612ca8565b905092915050565b7f6f7065726174696f6e2063616e6e6f7420626520706572666f726d65640000005f82015250565b5f612d7d601d8361261b565b9150612d8882612d49565b602082019050919050565b5f6020820190508181035f830152612daa81612d71565b9050919050565b5f60a0820190508181035f830152612dc98188612653565b90508181036020830152612ddd8187612653565b9050612dec604083018661268b565b612df9606083018561268b565b8181036080830152612e0b8184612653565b90509695505050505050565b7f70617373656420656e6f646520696420657869737473000000000000000000005f82015250565b5f612e4b60168361261b565b9150612e5682612e17565b602082019050919050565b5f6020820190508181035f830152612e7881612e3f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612eb682612459565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee857612ee7612e7f565b5b600182019050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612f3d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612f02565b612f478683612f02565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612f82612f7d612f7884612459565b612f5f565b612459565b9050919050565b5f819050919050565b612f9b83612f68565b612faf612fa782612f89565b848454612f0e565b825550505050565b5f90565b612fc3612fb7565b612fce818484612f92565b505050565b5b81811015612ff157612fe65f82612fbb565b600181019050612fd4565b5050565b601f8211156130365761300781612c96565b61301084612ef3565b8101602085101561301f578190505b61303361302b85612ef3565b830182612fd3565b50505b505050565b5f82821c905092915050565b5f6130565f198460080261303b565b1980831691505092915050565b5f61306e8383613047565b9150826002028217905092915050565b61308782612611565b67ffffffffffffffff8111156130a05761309f6122fe565b5b6130aa8254612c66565b6130b5828285612ff5565b5f60209050601f8311600181146130e6575f84156130d4578287015190505b6130de8582613063565b865550613145565b601f1984166130f486612c96565b5f5b8281101561311b578489015182556001820191506020850194506020810190506130f6565b868310156131385784890151613134601f891682613047565b8355505b6001600288020188555050505b505050505050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f613181601b8361261b565b915061318c8261314d565b602082019050919050565b5f6020820190508181035f8301526131ae81613175565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6131eb6131e66131e1846131b5565b612f5f565b6131be565b9050919050565b6131fb816131d1565b82525050565b5f6020820190506132145f8301846131f2565b92915050565b7f656e6f646520696420646f6573206e6f742062656c6f6e6720746f20746865205f8201527f706173736564206f726720696400000000000000000000000000000000000000602082015250565b5f613274602d8361261b565b915061327f8261321a565b604082019050919050565b5f6020820190508181035f8301526132a181613268565b9050919050565b7f6e6f7468696e672070656e64696e6720666f7220617070726f76616c000000005f82015250565b5f6132dc601c8361261b565b91506132e7826132a8565b602082019050919050565b5f6020820190508181035f830152613309816132d0565b9050919050565b5f60a0820190508181035f8301526133288188612ca8565b9050818103602083015261333c8187612653565b905061334b604083018661268b565b613358606083018561268b565b818103608083015261336a8184612ca8565b90509695505050505050565b5f61338082612459565b915061338b83612459565b92508282039050818111156133a3576133a2612e7f565b5b9291505056fea26469706673582212209b35d46a158ea89445b3fccdd4b23084fec2200fc8b6c2c792a37bcca3c0db9364736f6c63430008180033", +} + // NodeManagerABI is the input ABI used to generate the binding from. -const NodeManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"enodeId\",\"type\":\"string\"}],\"name\":\"getNodeDetails\",\"outputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addAdminNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"}],\"name\":\"connectionAllowed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrgNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_nodeIndex\",\"type\":\"uint256\"}],\"name\":\"getNodeDetailsFromIndex\",\"outputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfNodes\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryCompleted\",\"type\":\"event\"}]" +// Deprecated: Use NodeManagerMetaData.ABI instead. +var NodeManagerABI = NodeManagerMetaData.ABI var NodeManagerParsedABI, _ = abi.JSON(strings.NewReader(NodeManagerABI)) // NodeManagerBin is the compiled bytecode used for deploying new contracts. -var NodeManagerBin = "0x608060405234801561001057600080fd5b5060405160208061338f8339810180604052602081101561003057600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561332d806100626000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80634c573311116100665780634c5733111461042b578063549583df1461073057806397c07a9b146108f2578063b81c806a1461090f578063f82e08ac1461092957610093565b806337d50b27146100985780633f0e0e471461025e5780634530abe11461042b57806345a59e5b146105ed575b600080fd5b61025c600480360360c08110156100ae57600080fd5b810190602081018135600160201b8111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111600160201b831117156100fb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561014d57600080fd5b82018360208201111561015f57600080fd5b803590602001918460018302840111600160201b8311171561018057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b8111156101e657600080fd5b8201836020820111156101f857600080fd5b803590602001918460018302840111600160201b8311171561021957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610aeb915050565b005b6102cc6004803603602081101561027457600080fd5b810190602081018135600160201b81111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460018302840111600160201b831117156102c157600080fd5b50909250905061160a565b6040805161ffff80861660608301528416608082015260a0810183905260c080825288519082015287519091829160208084019284019160e08501918c019080838360005b83811015610329578181015183820152602001610311565b50505050905090810190601f1680156103565780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b83811015610389578181015183820152602001610371565b50505050905090810190601f1680156103b65780820380516001836020036101000a031916815260200191505b5084810382528851815288516020918201918a019080838360005b838110156103e95781810151838201526020016103d1565b50505050905090810190601f1680156104165780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b61025c600480360360a081101561044157600080fd5b810190602081018135600160201b81111561045b57600080fd5b82018360208201111561046d57600080fd5b803590602001918460018302840111600160201b8311171561048e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104e057600080fd5b8201836020820111156104f257600080fd5b803590602001918460018302840111600160201b8311171561051357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b81111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460018302840111600160201b831117156105ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506119d1945050505050565b61071c6004803603606081101561060357600080fd5b810190602081018135600160201b81111561061d57600080fd5b82018360208201111561062f57600080fd5b803590602001918460018302840111600160201b8311171561065057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106a257600080fd5b8201836020820111156106b457600080fd5b803590602001918460018302840111600160201b831117156106d557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903561ffff169150611ec79050565b604080519115158252519081900360200190f35b61025c600480360360a081101561074657600080fd5b810190602081018135600160201b81111561076057600080fd5b82018360208201111561077257600080fd5b803590602001918460018302840111600160201b8311171561079357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156107e557600080fd5b8201836020820111156107f757600080fd5b803590602001918460018302840111600160201b8311171561081857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b81111561087e57600080fd5b82018360208201111561089057600080fd5b803590602001918460018302840111600160201b831117156108b157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121e8945050505050565b6102cc6004803603602081101561090857600080fd5b50356125d5565b610917612879565b60408051918252519081900360200190f35b61025c600480360360a081101561093f57600080fd5b810190602081018135600160201b81111561095957600080fd5b82018360208201111561096b57600080fd5b803590602001918460018302840111600160201b8311171561098c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156109de57600080fd5b8201836020820111156109f057600080fd5b803590602001918460018302840111600160201b83111715610a1157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111600160201b83111715610aaa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612880945050505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b50516001600160a01b03163314610bb75760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8560036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610bfd578181015183820152602001610be5565b50505050905090810190601f168015610c2a5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020541515610caa5760408051600160e51b62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b610cb48784612eed565b1515610cf457604051600160e51b62461bcd02815260040180806020018281038252602a815260200180613265602a913960400191505060405180910390fd5b8160011480610d035750816002145b80610d0e5750816003145b80610d195750816004145b80610d245750816005145b1515610d6457604051600160e51b62461bcd0281526004018080602001828103825260268152602001806132af6026913960400191505060405180910390fd5b6000610d6f88613047565b9050866040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610db2578181015183820152602001610d9a565b50505050905090810190601f168015610ddf5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515610e0957fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b50509250505060405160208183030381529060405280519060200120141580610ef957508561ffff16600182815481101515610ede57fe5b600091825260209091206002600590920201015461ffff1614155b80610f3457508461ffff16600182815481101515610f1357fe5b600091825260209091206005909102016002015462010000900461ffff1614155b15610f3f5750611601565b826001141561114857610f51886130f0565b600214610f965760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b6003600182815481101515610fa757fe5b9060005260206000209060050201600401819055507ff631019be71bc682c59150635d714061185232e98e60de8bdd87bbee239cc5c888888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360005b8381101561104357818101518382015260200161102b565b50505050905090810190601f1680156110705780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156110a357818101518382015260200161108b565b50505050905090810190601f1680156110d05780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156111035781810151838201526020016110eb565b50505050905090810190601f1680156111305780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a16115ff565b826002141561124b5761115a886130f0565b60031461119f5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b60026001828154811015156111b057fe5b9060005260206000209060050201600401819055507ffb98f62dea866f0c373574c8523f611d0db1d8f19cc1b95d07a221d36a6a45de88888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360008381101561104357818101518382015260200161102b565b826003141561130057600460018281548110151561126557fe5b9060005260206000209060050201600401819055507f25300d4d785e654bc9b7979700cfa0fdc9ace890a46841fecfce661fd2c41a3388888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360008381101561104357818101518382015260200161102b565b826004141561140357611312886130f0565b6004146113575760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b600560018281548110151561136857fe5b9060005260206000209060050201600401819055507f72779f66ea90e28bae76fbfe03eaef5ae01699976c7493f93186ab9560ccfaa488888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360008381101561104357818101518382015260200161102b565b61140c886130f0565b6005146114515760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b600260018281548110151561146257fe5b9060005260206000209060050201600401819055507f60aac8c36efdaabf125dc9ec2124bde8b3ceafe5c8b4fc8063fc4ac9017eb0be88888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360005b838110156114fe5781810151838201526020016114e6565b50505050905090810190601f16801561152b5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b8381101561155e578181015183820152602001611546565b50505050905090810190601f16801561158b5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156115be5781810151838201526020016115a6565b50505050905090810190601f1680156115eb5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a15b505b50505050505050565b6060806060600080600060026000866040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611659578181015183820152602001611641565b50505050905090810190601f1680156116865780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054600014156116f157505060408051602080820183526000808352835180830185528181528451928301909452808252919650919450909250905080806119c7565b600061173289898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061304792505050565b905060018181548110151561174357fe5b906000526020600020906005020160030160018281548110151561176357fe5b906000526020600020906005020160000160018381548110151561178357fe5b90600052602060002090600502016001016001848154811015156117a357fe5b60009182526020909120600260059092020101546001805461ffff90921691869081106117cc57fe5b906000526020600020906005020160020160029054906101000a900461ffff166001868154811015156117fb57fe5b600091825260209182902060046005909202010154865460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928891908301828280156118965780601f1061186b57610100808354040283529160200191611896565b820191906000526020600020905b81548152906001019060200180831161187957829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156119245780601f106118f957610100808354040283529160200191611924565b820191906000526020600020905b81548152906001019060200180831161190757829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156119b25780601f10611987576101008083540402835291602001916119b2565b820191906000526020600020905b81548152906001019060200180831161199557829003601f168201915b50505050509350965096509650965096509650505b9295509295509295565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611a1e57600080fd5b505afa158015611a32573d6000803e3d6000fd5b505050506040513d6020811015611a4857600080fd5b50516001600160a01b03163314611a9d5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8460036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611ae3578181015183820152602001611acb565b50505050905090810190601f168015611b105780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415611b8f5760408051600160e51b62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b60048054600101908190556040805160208082018181528a519383019390935289516003936000938c9391928392606090920191850190808383895b83811015611be3578181015183820152602001611bcb565b50505050905090810190601f168015611c105780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652858201969096529385016000908120969096555050825160c0810184528a81528083018a905261ffff808a169482019490945292871660608401525060808201859052600260a083015260018054808201808355919094528251805191946005027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192611cbe928492909101906131cc565b506020828101518051611cd792600185019201906131cc565b506040820151600282018054606085015161ffff908116620100000263ffff0000199190941661ffff19909216919091171691909117905560808201518051611d2a9160038401916020909101906131cc565b5060a082015181600401555050507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d86868686866040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360005b83811015611dbf578181015183820152602001611da7565b50505050905090810190601f168015611dec5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015611e1f578181015183820152602001611e07565b50505050905090810190601f168015611e4c5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015611e7f578181015183820152602001611e67565b50505050905090810190601f168015611eac5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a1505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1657600080fd5b505afa158015611f2a573d6000803e3d6000fd5b505050506040513d6020811015611f4057600080fd5b50516001600160a01b03163314611f955760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60036000856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fda578181015183820152602001611fc2565b50505050905090810190601f1680156120075780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012081526020019081526020016000205460001415612041575060006121e1565b600061204c85613047565b905060018181548110151561205d57fe5b90600052602060002090600502016004015460021480156121cc5750836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156120ba5781810151838201526020016120a2565b50505050905090810190601f1680156120e75780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012060018281548110151561211157fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121ae5780601f10612183576101008083540402835291602001916121ae565b820191906000526020600020905b81548152906001019060200180831161219157829003601f168201915b50509250505060405160208183030381529060405280519060200120145b156121db5760019150506121e1565b60009150505b9392505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561223557600080fd5b505afa158015612249573d6000803e3d6000fd5b505050506040513d602081101561225f57600080fd5b50516001600160a01b031633146122b45760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8460036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122fa5781810151838201526020016122e2565b50505050905090810190601f1680156123275780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054156123a65760408051600160e51b62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b60048054600101908190556040805160208082018181528a519383019390935289516003936000938c9391928392606090920191850190808383895b838110156123fa5781810151838201526020016123e2565b50505050905090810190601f1680156124275780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652858201969096529385016000908120969096555050825160c0810184528a81528083018a905261ffff808a169482019490945292871660608401525060808201859052600160a083018190528054808201808355919094528251805191946005027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601926124d5928492909101906131cc565b5060208281015180516124ee92600185019201906131cc565b506040820151600282018054606085015161ffff908116620100000263ffff0000199190941661ffff199092169190911716919091179055608082015180516125419160038401916020909101906131cc565b5060a082015181600401555050507ff9bad9f8a2dccc52fad61273a7fd673335b420319506c19b87df9ce7a19732da86868686866040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff168152602001806020018481038452898181518152602001915080519060200190808383600083811015611dbf578181015183820152602001611da7565b606080606060008060006001878154811015156125ee57fe5b906000526020600020906005020160030160018881548110151561260e57fe5b906000526020600020906005020160000160018981548110151561262e57fe5b906000526020600020906005020160010160018a81548110151561264e57fe5b60009182526020909120600260059092020101546001805461ffff909216918c90811061267757fe5b906000526020600020906005020160020160029054906101000a900461ffff1660018c8154811015156126a657fe5b600091825260209182902060046005909202010154865460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928891908301828280156127415780601f1061271657610100808354040283529160200191612741565b820191906000526020600020905b81548152906001019060200180831161272457829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156127cf5780601f106127a4576101008083540402835291602001916127cf565b820191906000526020600020905b8154815290600101906020018083116127b257829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a508994509250840190508282801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050935095509550955095509550955091939550919395565b6004545b90565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156128cd57600080fd5b505afa1580156128e1573d6000803e3d6000fd5b505050506040513d60208110156128f757600080fd5b50516001600160a01b0316331461294c5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8460036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561299257818101518382015260200161297a565b50505050905090810190601f1680156129bf5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020541515612a3f5760408051600160e51b62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b612a498683612eed565b1515612a8957604051600160e51b62461bcd02815260040180806020018281038252602d8152602001806132d5602d913960400191505060405180910390fd5b612a92866130f0565b600114612ae95760408051600160e51b62461bcd02815260206004820152601c60248201527f6e6f7468696e672070656e64696e6720666f7220617070726f76616c00000000604482015290519081900360640190fd5b6000612af487613047565b9050856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612b37578181015183820152602001612b1f565b50505050905090810190601f168015612b645780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515612b8e57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612c2b5780601f10612c0057610100808354040283529160200191612c2b565b820191906000526020600020905b815481529060010190602001808311612c0e57829003601f168201915b50509250505060405160208183030381529060405280519060200120141580612c7e57508461ffff16600182815481101515612c6357fe5b600091825260209091206002600590920201015461ffff1614155b80612cb957508361ffff16600182815481101515612c9857fe5b600091825260209091206005909102016002015462010000900461ffff1614155b15612cc45750612ee5565b6002600182815481101515612cd557fe5b9060005260206000209060050201600401819055507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d600182815481101515612d1a57fe5b9060005260206000209060050201600001878787600186815481101515612d3d57fe5b90600052602060002090600502016003016040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612dfb5780601f10612dd057610100808354040283529160200191612dfb565b820191906000526020600020905b815481529060010190602001808311612dde57829003601f168201915b505084810383528851815288516020918201918a019080838360005b83811015612e2f578181015183820152602001612e17565b50505050905090810190601f168015612e5c5780820380516001836020036101000a031916815260200191505b50848103825285546002600019610100600184161502019091160480825260209091019086908015612ecf5780601f10612ea457610100808354040283529160200191612ecf565b820191906000526020600020905b815481529060010190602001808311612eb257829003601f168201915b50509850505050505050505060405180910390a1505b505050505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612f30578181015183820152602001612f18565b50505050905090810190601f168015612f5d5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612f8385613047565b81548110612f8d57fe5b60009182526020918290206040805180850194855260036005909402909201929092018054600260001961010060018416150201909116049282018390529291829160600190849080156130225780601f10612ff757610100808354040283529160200191613022565b820191906000526020600020905b81548152906001019060200180831161300557829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b6000600160036000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613090578181015183820152602001613078565b50505050905090810190601f1680156130bd5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020540390505b919050565b600060036000836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561313757818101518382015260200161311f565b50505050905090810190601f1680156131645780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561319e575060006130eb565b60016131a983613047565b815481106131b357fe5b9060005260206000209060050201600401549050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061320d57805160ff191683800117855561323a565b8280016001018555821561323a579182015b8281111561323a57825182559160200191906001019061321f565b5061324692915061324a565b5090565b61287d91905b80821115613246576000815560010161325056fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f72676f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a7230582033fd8af5439a9af79764088da6847651cc33d3b41698fff5d54b3e47419c5c6a0029" +// Deprecated: Use NodeManagerMetaData.Bin instead. +var NodeManagerBin = NodeManagerMetaData.Bin // DeployNodeManager deploys a new Ethereum contract, binding an instance of NodeManager to it. -func DeployNodeManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *NodeManager, error) { - parsed, err := abi.JSON(strings.NewReader(NodeManagerABI)) +func DeployNodeManager(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *NodeManager, error) { + parsed, err := NodeManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(NodeManagerBin), backend, _permUpgradable) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NodeManagerBin), backend) if err != nil { return common.Address{}, nil, nil, err } @@ -243,13 +256,16 @@ func (_NodeManager *NodeManagerCaller) GetNodeDetails(opts *bind.CallOpts, enode Raftport uint16 NodeStatus *big.Int }) + if err != nil { + return *outstruct, err + } - outstruct.OrgId = out[0].(string) - outstruct.EnodeId = out[1].(string) - outstruct.Ip = out[2].(string) - outstruct.Port = out[3].(uint16) - outstruct.Raftport = out[4].(uint16) - outstruct.NodeStatus = out[5].(*big.Int) + outstruct.OrgId = *abi.ConvertType(out[0], new(string)).(*string) + outstruct.EnodeId = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.Ip = *abi.ConvertType(out[2], new(string)).(*string) + outstruct.Port = *abi.ConvertType(out[3], new(uint16)).(*uint16) + outstruct.Raftport = *abi.ConvertType(out[4], new(uint16)).(*uint16) + outstruct.NodeStatus = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) return *outstruct, err @@ -305,13 +321,16 @@ func (_NodeManager *NodeManagerCaller) GetNodeDetailsFromIndex(opts *bind.CallOp Raftport uint16 NodeStatus *big.Int }) + if err != nil { + return *outstruct, err + } - outstruct.OrgId = out[0].(string) - outstruct.EnodeId = out[1].(string) - outstruct.Ip = out[2].(string) - outstruct.Port = out[3].(uint16) - outstruct.Raftport = out[4].(uint16) - outstruct.NodeStatus = out[5].(*big.Int) + outstruct.OrgId = *abi.ConvertType(out[0], new(string)).(*string) + outstruct.EnodeId = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.Ip = *abi.ConvertType(out[2], new(string)).(*string) + outstruct.Port = *abi.ConvertType(out[3], new(uint16)).(*uint16) + outstruct.Raftport = *abi.ConvertType(out[4], new(uint16)).(*uint16) + outstruct.NodeStatus = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) return *outstruct, err @@ -460,6 +479,48 @@ func (_NodeManager *NodeManagerTransactorSession) ApproveNode(_enodeId string, _ return _NodeManager.Contract.ApproveNode(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId) } +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_NodeManager *NodeManagerTransactor) Initialize(opts *bind.TransactOpts, _permUpgradable common.Address) (*types.Transaction, error) { + return _NodeManager.contract.Transact(opts, "initialize", _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_NodeManager *NodeManagerSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _NodeManager.Contract.Initialize(&_NodeManager.TransactOpts, _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_NodeManager *NodeManagerTransactorSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _NodeManager.Contract.Initialize(&_NodeManager.TransactOpts, _permUpgradable) +} + +// SetIpValidation is a paid mutator transaction binding the contract method 0x9fc666b2. +// +// Solidity: function setIpValidation(bool _isIpValidationEnabled) returns() +func (_NodeManager *NodeManagerTransactor) SetIpValidation(opts *bind.TransactOpts, _isIpValidationEnabled bool) (*types.Transaction, error) { + return _NodeManager.contract.Transact(opts, "setIpValidation", _isIpValidationEnabled) +} + +// SetIpValidation is a paid mutator transaction binding the contract method 0x9fc666b2. +// +// Solidity: function setIpValidation(bool _isIpValidationEnabled) returns() +func (_NodeManager *NodeManagerSession) SetIpValidation(_isIpValidationEnabled bool) (*types.Transaction, error) { + return _NodeManager.Contract.SetIpValidation(&_NodeManager.TransactOpts, _isIpValidationEnabled) +} + +// SetIpValidation is a paid mutator transaction binding the contract method 0x9fc666b2. +// +// Solidity: function setIpValidation(bool _isIpValidationEnabled) returns() +func (_NodeManager *NodeManagerTransactorSession) SetIpValidation(_isIpValidationEnabled bool) (*types.Transaction, error) { + return _NodeManager.Contract.SetIpValidation(&_NodeManager.TransactOpts, _isIpValidationEnabled) +} + // UpdateNodeStatus is a paid mutator transaction binding the contract method 0x37d50b27. // // Solidity: function updateNodeStatus(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId, uint256 _action) returns() @@ -481,6 +542,142 @@ func (_NodeManager *NodeManagerTransactorSession) UpdateNodeStatus(_enodeId stri return _NodeManager.Contract.UpdateNodeStatus(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId, _action) } +// NodeManagerInitializedNodesIterator is returned from FilterInitializedNodes and is used to iterate over the raw logs and unpacked data for InitializedNodes events raised by the NodeManager contract. +type NodeManagerInitializedNodesIterator struct { + Event *NodeManagerInitializedNodes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *NodeManagerInitializedNodesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(NodeManagerInitializedNodes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(NodeManagerInitializedNodes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *NodeManagerInitializedNodesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *NodeManagerInitializedNodesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// NodeManagerInitializedNodes represents a InitializedNodes event raised by the NodeManager contract. +type NodeManagerInitializedNodes struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitializedNodes is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_NodeManager *NodeManagerFilterer) FilterInitializedNodes(opts *bind.FilterOpts) (*NodeManagerInitializedNodesIterator, error) { + + logs, sub, err := _NodeManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &NodeManagerInitializedNodesIterator{contract: _NodeManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +var InitializedNodesTopicHash = "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + +// WatchInitializedNodes is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_NodeManager *NodeManagerFilterer) WatchInitializedNodes(opts *bind.WatchOpts, sink chan<- *NodeManagerInitializedNodes) (event.Subscription, error) { + + logs, sub, err := _NodeManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(NodeManagerInitializedNodes) + if err := _NodeManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitializedNodes is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_NodeManager *NodeManagerFilterer) ParseInitializedNodes(log types.Log) (*NodeManagerInitializedNodes, error) { + event := new(NodeManagerInitializedNodes) + if err := _NodeManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // NodeManagerNodeActivatedIterator is returned from FilterNodeActivated and is used to iterate over the raw logs and unpacked data for NodeActivated events raised by the NodeManager contract. type NodeManagerNodeActivatedIterator struct { Event *NodeManagerNodeActivated // Event containing the contract specifics and raw log @@ -617,6 +814,7 @@ func (_NodeManager *NodeManagerFilterer) ParseNodeActivated(log types.Log) (*Nod if err := _NodeManager.contract.UnpackLog(event, "NodeActivated", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -756,6 +954,7 @@ func (_NodeManager *NodeManagerFilterer) ParseNodeApproved(log types.Log) (*Node if err := _NodeManager.contract.UnpackLog(event, "NodeApproved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -895,6 +1094,7 @@ func (_NodeManager *NodeManagerFilterer) ParseNodeBlacklisted(log types.Log) (*N if err := _NodeManager.contract.UnpackLog(event, "NodeBlacklisted", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1034,6 +1234,7 @@ func (_NodeManager *NodeManagerFilterer) ParseNodeDeactivated(log types.Log) (*N if err := _NodeManager.contract.UnpackLog(event, "NodeDeactivated", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1173,6 +1374,7 @@ func (_NodeManager *NodeManagerFilterer) ParseNodeProposed(log types.Log) (*Node if err := _NodeManager.contract.UnpackLog(event, "NodeProposed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1312,6 +1514,7 @@ func (_NodeManager *NodeManagerFilterer) ParseNodeRecoveryCompleted(log types.Lo if err := _NodeManager.contract.UnpackLog(event, "NodeRecoveryCompleted", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1451,5 +1654,6 @@ func (_NodeManager *NodeManagerFilterer) ParseNodeRecoveryInitiated(log types.Lo if err := _NodeManager.contract.UnpackLog(event, "NodeRecoveryInitiated", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/permission/v2/bind/org.go b/permission/v2/bind/org.go index d219e8e7b7..5b6dd40480 100644 --- a/permission/v2/bind/org.go +++ b/permission/v2/bind/org.go @@ -4,6 +4,7 @@ package bind import ( + "errors" "math/big" "strings" @@ -17,6 +18,7 @@ import ( // Reference imports to suppress errors if they are not otherwise used. var ( + _ = errors.New _ = big.NewInt _ = strings.NewReader _ = ethereum.NotFound @@ -26,22 +28,33 @@ var ( _ = event.NewSubscription ) +// OrgManagerMetaData contains all meta data concerning the OrgManager contract. +var OrgManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_level\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"OrgApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_level\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"OrgPendingApproval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_level\",\"type\":\"uint256\"}],\"name\":\"OrgSuspended\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_level\",\"type\":\"uint256\"}],\"name\":\"OrgSuspensionRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_pOrgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"approveOrgStatusUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_orgStatus\",\"type\":\"uint256\"}],\"name\":\"checkOrgStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfOrgs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getOrgDetails\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_orgIndex\",\"type\":\"uint256\"}],\"name\":\"getOrgInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getSubOrgIndexes\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getUltimateParent\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_breadth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_depth\",\"type\":\"uint256\"}],\"name\":\"setUpOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateOrg\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040525f600160146101000a81548160ff021916908315150217905550600460025560046003555f600655348015610037575f80fd5b506142b2806100455f395ff3fe608060405234801561000f575f80fd5b50600436106100f3575f3560e01c80637755ebdd11610095578063e302831611610064578063e3028316146102a9578063f4d6d9f5146102c5578063f9953de5146102f9578063ffe40d1d14610315576100f3565b80637755ebdd146102235780638c8642df146102415780639e58eb9f14610271578063c4d66de81461028d576100f3565b80631f953480116100d15780631f953480146101735780633fd62ae71461018f5780635c4f32ee146101bf5780635e99f6e5146101f3576100f3565b80630cc27493146100f757806314f775f914610127578063177c8d8a14610143575b5f80fd5b610111600480360381019061010c9190612cc8565b610345565b60405161011e9190612d34565b60405180910390f35b610141600480360381019061013c9190612cc8565b610747565b005b61015d60048036038101906101589190612d4d565b610981565b60405161016a9190612e22565b60405180910390f35b61018d60048036038101906101889190612e42565b610b7b565b005b6101a960048036038101906101a49190612fe8565b610d84565b6040516101b69190613049565b60405180910390f35b6101d960048036038101906101d49190613062565b610f50565b6040516101ea95949392919061308d565b60405180910390f35b61020d60048036038101906102089190612d4d565b6111b8565b60405161021a91906131aa565b60405180910390f35b61022b611314565b6040516102389190612d34565b60405180910390f35b61025b600480360381019061025691906131ca565b611320565b6040516102689190613049565b60405180910390f35b61028b60048036038101906102869190613224565b6113e6565b005b6102a760048036038101906102a291906132ef565b611554565b005b6102c360048036038101906102be9190612d4d565b61177a565b005b6102df60048036038101906102da9190612d4d565b611a4e565b6040516102f095949392919061308d565b60405180910390f35b610313600480360381019061030e9190612d4d565b611dd7565b005b61032f600480360381019061032a9190612fe8565b611fc7565b60405161033c9190613049565b60405180910390f35b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d4919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610438906133a3565b60405180910390fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506001151561049282611fc7565b1515146104d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104cb9061340b565b60405180910390fd5b60018314806104e35750600283145b610522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051990613499565b60405180910390fd5b5f61056f86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b9050600160048281548110610587576105866134b7565b5b905f5260205f20906008020160060154146105d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ce90613554565b60405180910390fd5b5f80600186036105ee576002915060029050610600565b600286036105ff5760049150600390505b5b6001151561065189898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505084611320565b151514610693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068a906135e2565b60405180910390fd5b600186036106ec576106e788888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061208c565b610739565b61073888888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506121de565b5b809450505050509392505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d5919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906133a3565b60405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506001151561089382611fc7565b1515146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc9061340b565b60405180910390fd5b6001820361092e5761092984848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612330565b61097b565b61097a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061247e565b5b50505050565b606060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a11919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a75906133a3565b60405180910390fd5b6004610acc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b81548110610add57610adc6134b7565b5b905f5260205f2090600802016004018054610af79061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b239061362d565b8015610b6e5780601f10610b4557610100808354040283529160200191610b6e565b820191905f5260205f20905b815481529060010190602001808311610b5157829003601f168201915b5050505050905092915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c09919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d906133a3565b60405180910390fd5b83838383604051602001610c8d94939291906136d5565b6040516020818303038152906040525f1515610ca882611fc7565b151514610cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce190613751565b60405180910390fd5b610d7d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505084848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506002806125cd565b5050505050565b5f8060055f84604051602001610d9a919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f205414610f47575f610dcd8361200a565b9050600260048281548110610de557610de46134b7565b5b905f5260205f209060080201600101541480610e245750600360048281548110610e1257610e116134b7565b5b905f5260205f20906008020160010154145b15610f45575f610edc60048381548110610e4157610e406134b7565b5b905f5260205f2090600802016004018054610e5b9061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e879061362d565b8015610ed25780601f10610ea957610100808354040283529160200191610ed2565b820191905f5260205f20905b815481529060010190602001808311610eb557829003601f168201915b505050505061200a565b9050600260048281548110610ef457610ef36134b7565b5b905f5260205f209060080201600101541480610f335750600360048281548110610f2157610f206134b7565b5b905f5260205f20906008020160010154145b15610f4357600192505050610f4b565b505b505b5f90505b919050565b60608060605f8060048681548110610f6b57610f6a6134b7565b5b905f5260205f2090600802015f0160048781548110610f8d57610f8c6134b7565b5b905f5260205f20906008020160020160048881548110610fb057610faf6134b7565b5b905f5260205f20906008020160040160048981548110610fd357610fd26134b7565b5b905f5260205f2090600802016006015460048a81548110610ff757610ff66134b7565b5b905f5260205f209060080201600101548480546110139061362d565b80601f016020809104026020016040519081016040528092919081815260200182805461103f9061362d565b801561108a5780601f106110615761010080835404028352916020019161108a565b820191905f5260205f20905b81548152906001019060200180831161106d57829003601f168201915b5050505050945083805461109d9061362d565b80601f01602080910402602001604051908101604052809291908181526020018280546110c99061362d565b80156111145780601f106110eb57610100808354040283529160200191611114565b820191905f5260205f20905b8154815290600101906020018083116110f757829003601f168201915b505050505093508280546111279061362d565b80601f01602080910402602001604051908101604052809291908181526020018280546111539061362d565b801561119e5780601f106111755761010080835404028352916020019161119e565b820191905f5260205f20905b81548152906001019060200180831161118157829003601f168201915b505050505092509450945094509450945091939590929450565b60606001151561120a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611fc7565b15151461124c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112439061340b565b60405180910390fd5b5f61129984848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b9050600481815481106112af576112ae6134b7565b5b905f5260205f20906008020160070180548060200260200160405190810160405280929190818152602001828054801561130657602002820191905f5260205f20905b8154815260200190600101908083116112f2575b505050505091505092915050565b5f600480549050905090565b5f8060055f85604051602001611336919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f205403611367575f90506113e0565b5f6113718461200a565b90505f60055f86604051602001611388919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f2054141580156113dc575082600482815481106113ca576113c96134b7565b5b905f5260205f20906008020160010154145b9150505b92915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611450573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611474919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d8906133a3565b60405180910390fd5b61154060405180602001604052805f81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050600160026125cd565b806002819055508160038190555050505050565b5f61155d612bfc565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156115a55750825b90505f60018367ffffffffffffffff161480156115d857505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156115e6575080155b1561161d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561166a576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf906137ff565b60405180910390fd5b8560015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315611772575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516117699190613872565b60405180910390a15b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611808919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c906133a3565b60405180910390fd5b600115156118c783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506001611320565b151514611909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611900906138d5565b60405180910390fd5b5f61195683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b905060026004828154811061196e5761196d6134b7565b5b905f5260205f209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481106119b6576119b56134b7565b5b905f5260205f2090600802015f01600483815481106119d8576119d76134b7565b5b905f5260205f209060080201600201600484815481106119fb576119fa6134b7565b5b905f5260205f20906008020160040160048581548110611a1e57611a1d6134b7565b5b905f5260205f209060080201600601546002604051611a419594939291906139bf565b60405180910390a1505050565b60608060605f80611aa187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611fc7565b611b245786865f8083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505092509091925060405180602001604052805f815250919060405180602001604052805f815250919094509450945094509450611dcd565b5f611b7188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b905060048181548110611b8757611b866134b7565b5b905f5260205f2090600802015f0160048281548110611ba957611ba86134b7565b5b905f5260205f20906008020160020160048381548110611bcc57611bcb6134b7565b5b905f5260205f20906008020160040160048481548110611bef57611bee6134b7565b5b905f5260205f2090600802016006015460048581548110611c1357611c126134b7565b5b905f5260205f20906008020160010154848054611c2f9061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5b9061362d565b8015611ca65780601f10611c7d57610100808354040283529160200191611ca6565b820191905f5260205f20905b815481529060010190602001808311611c8957829003601f168201915b50505050509450838054611cb99061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce59061362d565b8015611d305780601f10611d0757610100808354040283529160200191611d30565b820191905f5260205f20905b815481529060010190602001808311611d1357829003601f168201915b50505050509350828054611d439061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6f9061362d565b8015611dba5780601f10611d9157610100808354040283529160200191611dba565b820191905f5260205f20905b815481529060010190602001808311611d9d57829003601f168201915b5050505050925095509550955095509550505b9295509295909350565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e65919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec9906133a3565b60405180910390fd5b81818080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050505f1515611f2282611fc7565b151514611f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5b90613751565b60405180910390fd5b611fc260405180602001604052805f81525084848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506001806125cd565b505050565b5f8060055f84604051602001611fdd919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f205414159050919050565b5f8060055f84604051602001612020919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f205490505f8103612076577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050612087565b6001816120839190613a52565b9150505b919050565b6001151561209b826002611320565b1515146120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d490613af5565b60405180910390fd5b5f6120e78261200a565b90506003600482815481106120ff576120fe6134b7565b5b905f5260205f209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110612147576121466134b7565b5b905f5260205f2090600802015f0160048381548110612169576121686134b7565b5b905f5260205f2090600802016002016004848154811061218c5761218b6134b7565b5b905f5260205f209060080201600401600485815481106121af576121ae6134b7565b5b905f5260205f2090600802016006015460036040516121d2959493929190613b4c565b60405180910390a15050565b600115156121ed826004611320565b15151461222f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222690613bfc565b60405180910390fd5b5f6122398261200a565b9050600560048281548110612251576122506134b7565b5b905f5260205f209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110612299576122986134b7565b5b905f5260205f2090600802015f01600483815481106122bb576122ba6134b7565b5b905f5260205f209060080201600201600484815481106122de576122dd6134b7565b5b905f5260205f20906008020160040160048581548110612301576123006134b7565b5b905f5260205f209060080201600601546005604051612324959493929190613c53565b60405180910390a15050565b6001151561233f826003611320565b151514612381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612378906138d5565b60405180910390fd5b5f61238b8261200a565b905060048082815481106123a2576123a16134b7565b5b905f5260205f209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d96600482815481106123ea576123e96134b7565b5b905f5260205f2090600802015f016004838154811061240c5761240b6134b7565b5b905f5260205f2090600802016002016004848154811061242f5761242e6134b7565b5b905f5260205f20906008020160040160048581548110612452576124516134b7565b5b905f5260205f209060080201600601546040516124729493929190613cb9565b60405180910390a15050565b6001151561248d826005611320565b1515146124cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c6906138d5565b60405180910390fd5b5f6124d98261200a565b90506002600482815481106124f1576124f06134b7565b5b905f5260205f209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f60048281548110612539576125386134b7565b5b905f5260205f2090600802015f016004838154811061255b5761255a6134b7565b5b905f5260205f2090600802016002016004848154811061257e5761257d6134b7565b5b905f5260205f209060080201600401600485815481106125a1576125a06134b7565b5b905f5260205f209060080201600601546040516125c19493929190613cb9565b60405180910390a15050565b5f805f6001850361260657856040516020016125e9919061379f565b60405160208183030381529060405280519060200120915061265b565b86604051602001612617919061379f565b6040516020818303038152906040528051906020012092508686604051602001612642929190613d11565b6040516020818303038152906040528051906020012091505b60065f81548092919061266d90613d3f565b919050555060065460055f8481526020019081526020015f20819055505f6004805490509050600460018160018154018082558091505003905f5260205f209050506001860361276e5785600482815481106126cc576126cb6134b7565b5b905f5260205f209060080201600601819055505f600482815481106126f4576126f36134b7565b5b905f5260205f20906008020160050181905550866004828154811061271c5761271b6134b7565b5b905f5260205f20906008020160030190816127379190613f08565b50866004828154811061274d5761274c6134b7565b5b905f5260205f20906008020160040190816127689190613f08565b506129cb565b600160055f8681526020019081526020015f205461278c9190613a52565b9150600354600483815481106127a5576127a46134b7565b5b905f5260205f20906008020160070180549050106127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90614021565b60405180910390fd5b6002546004838154811061280f5761280e6134b7565b5b905f5260205f209060080201600601541061285f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285690614089565b60405180910390fd5b600160048381548110612875576128746134b7565b5b905f5260205f2090600802016006015461288f91906140a7565b600482815481106128a3576128a26134b7565b5b905f5260205f2090600802016006018190555081600482815481106128cb576128ca6134b7565b5b905f5260205f20906008020160050181905550600482815481106128f2576128f16134b7565b5b905f5260205f20906008020160040160048281548110612915576129146134b7565b5b905f5260205f20906008020160040190816129309190614101565b5060048281548110612945576129446134b7565b5b905f5260205f20906008020160070181908060018154018082558091505060019003905f5260205f20015f9091909190915055878760405160200161298b929190613d11565b604051602081830303815290604052600482815481106129ae576129ad6134b7565b5b905f5260205f20906008020160030190816129c99190613f08565b505b86600482815481106129e0576129df6134b7565b5b905f5260205f2090600802015f0190816129fa9190613f08565b508760048281548110612a1057612a0f6134b7565b5b905f5260205f2090600802016002019081612a2b9190613f08565b508460048281548110612a4157612a406134b7565b5b905f5260205f2090600802016001018190555060018503612b29577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110612a9157612a906134b7565b5b905f5260205f2090600802015f0160048381548110612ab357612ab26134b7565b5b905f5260205f20906008020160020160048481548110612ad657612ad56134b7565b5b905f5260205f20906008020160040160048581548110612af957612af86134b7565b5b905f5260205f209060080201600601546001604051612b1c959493929190614216565b60405180910390a1612bf2565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110612b5e57612b5d6134b7565b5b905f5260205f2090600802015f0160048381548110612b8057612b7f6134b7565b5b905f5260205f20906008020160020160048481548110612ba357612ba26134b7565b5b905f5260205f20906008020160040160048581548110612bc657612bc56134b7565b5b905f5260205f209060080201600601546002604051612be99594939291906139bf565b60405180910390a15b5050505050505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c5557612c54612c34565b5b8235905067ffffffffffffffff811115612c7257612c71612c38565b5b602083019150836001820283011115612c8e57612c8d612c3c565b5b9250929050565b5f819050919050565b612ca781612c95565b8114612cb1575f80fd5b50565b5f81359050612cc281612c9e565b92915050565b5f805f60408486031215612cdf57612cde612c2c565b5b5f84013567ffffffffffffffff811115612cfc57612cfb612c30565b5b612d0886828701612c40565b93509350506020612d1b86828701612cb4565b9150509250925092565b612d2e81612c95565b82525050565b5f602082019050612d475f830184612d25565b92915050565b5f8060208385031215612d6357612d62612c2c565b5b5f83013567ffffffffffffffff811115612d8057612d7f612c30565b5b612d8c85828601612c40565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612dcf578082015181840152602081019050612db4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612df482612d98565b612dfe8185612da2565b9350612e0e818560208601612db2565b612e1781612dda565b840191505092915050565b5f6020820190508181035f830152612e3a8184612dea565b905092915050565b5f805f8060408587031215612e5a57612e59612c2c565b5b5f85013567ffffffffffffffff811115612e7757612e76612c30565b5b612e8387828801612c40565b9450945050602085013567ffffffffffffffff811115612ea657612ea5612c30565b5b612eb287828801612c40565b925092505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612efa82612dda565b810181811067ffffffffffffffff82111715612f1957612f18612ec4565b5b80604052505050565b5f612f2b612c23565b9050612f378282612ef1565b919050565b5f67ffffffffffffffff821115612f5657612f55612ec4565b5b612f5f82612dda565b9050602081019050919050565b828183375f83830152505050565b5f612f8c612f8784612f3c565b612f22565b905082815260208101848484011115612fa857612fa7612ec0565b5b612fb3848285612f6c565b509392505050565b5f82601f830112612fcf57612fce612c34565b5b8135612fdf848260208601612f7a565b91505092915050565b5f60208284031215612ffd57612ffc612c2c565b5b5f82013567ffffffffffffffff81111561301a57613019612c30565b5b61302684828501612fbb565b91505092915050565b5f8115159050919050565b6130438161302f565b82525050565b5f60208201905061305c5f83018461303a565b92915050565b5f6020828403121561307757613076612c2c565b5b5f61308484828501612cb4565b91505092915050565b5f60a0820190508181035f8301526130a58188612dea565b905081810360208301526130b98187612dea565b905081810360408301526130cd8186612dea565b90506130dc6060830185612d25565b6130e96080830184612d25565b9695505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61312581612c95565b82525050565b5f613136838361311c565b60208301905092915050565b5f602082019050919050565b5f613158826130f3565b61316281856130fd565b935061316d8361310d565b805f5b8381101561319d578151613184888261312b565b975061318f83613142565b925050600181019050613170565b5085935050505092915050565b5f6020820190508181035f8301526131c2818461314e565b905092915050565b5f80604083850312156131e0576131df612c2c565b5b5f83013567ffffffffffffffff8111156131fd576131fc612c30565b5b61320985828601612fbb565b925050602061321a85828601612cb4565b9150509250929050565b5f805f806060858703121561323c5761323b612c2c565b5b5f85013567ffffffffffffffff81111561325957613258612c30565b5b61326587828801612c40565b9450945050602061327887828801612cb4565b925050604061328987828801612cb4565b91505092959194509250565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132be82613295565b9050919050565b6132ce816132b4565b81146132d8575f80fd5b50565b5f813590506132e9816132c5565b92915050565b5f6020828403121561330457613303612c2c565b5b5f613311848285016132db565b91505092915050565b5f81519050613328816132c5565b92915050565b5f6020828403121561334357613342612c2c565b5b5f6133508482850161331a565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f61338d600e83612da2565b915061339882613359565b602082019050919050565b5f6020820190508181035f8301526133ba81613381565b9050919050565b7f6f726720646f6573206e6f7420657869737400000000000000000000000000005f82015250565b5f6133f5601283612da2565b9150613400826133c1565b602082019050919050565b5f6020820190508181035f830152613422816133e9565b9050919050565b7f696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c5f8201527f6c6f776564000000000000000000000000000000000000000000000000000000602082015250565b5f613483602583612da2565b915061348e82613429565b604082019050919050565b5f6020820190508181035f8301526134b081613477565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f6e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f74205f8201527f616c6c6f77656400000000000000000000000000000000000000000000000000602082015250565b5f61353e602783612da2565b9150613549826134e4565b604082019050919050565b5f6020820190508181035f83015261356b81613532565b9050919050565b7f6f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f705f8201527f65726174696f6e00000000000000000000000000000000000000000000000000602082015250565b5f6135cc602783612da2565b91506135d782613572565b604082019050919050565b5f6020820190508181035f8301526135f9816135c0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061364457607f821691505b60208210810361365757613656613600565b5b50919050565b5f81905092915050565b5f613672838561365d565b935061367f838584612f6c565b82840190509392505050565b7f2e000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6136bf60018361365d565b91506136ca8261368b565b600182019050919050565b5f6136e1828688613667565b91506136ec826136b3565b91506136f9828486613667565b915081905095945050505050565b7f6f726720657869737473000000000000000000000000000000000000000000005f82015250565b5f61373b600a83612da2565b915061374682613707565b602082019050919050565b5f6020820190508181035f8301526137688161372f565b9050919050565b5f61377982612d98565b613783818561365d565b9350613793818560208601612db2565b80840191505092915050565b5f6137aa828461376f565b915081905092915050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f6137e9601b83612da2565b91506137f4826137b5565b602082019050919050565b5f6020820190508181035f830152613816816137dd565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f61385c6138576138528461381d565b613839565b613826565b9050919050565b61386c81613842565b82525050565b5f6020820190506138855f830184613863565b92915050565b7f6e6f7468696e6720746f20617070726f766500000000000000000000000000005f82015250565b5f6138bf601283612da2565b91506138ca8261388b565b602082019050919050565b5f6020820190508181035f8301526138ec816138b3565b9050919050565b5f819050815f5260205f209050919050565b5f81546139118161362d565b61391b8186612da2565b9450600182165f8114613935576001811461394b5761397d565b60ff19831686528115156020028601935061397d565b613954856138f3565b5f5b8381101561397557815481890152600182019150602081019050613956565b808801955050505b50505092915050565b5f819050919050565b5f6139a96139a461399f84613986565b613839565b612c95565b9050919050565b6139b98161398f565b82525050565b5f60a0820190508181035f8301526139d78188613905565b905081810360208301526139eb8187613905565b905081810360408301526139ff8186613905565b9050613a0e6060830185612d25565b613a1b60808301846139b0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a5c82612c95565b9150613a6783612c95565b9250828203905081811115613a7f57613a7e613a25565b5b92915050565b7f6f7267206e6f7420696e20617070726f766564207374617475732e206f7065725f8201527f6174696f6e2063616e6e6f7420626520646f6e65000000000000000000000000602082015250565b5f613adf603483612da2565b9150613aea82613a85565b604082019050919050565b5f6020820190508181035f830152613b0c81613ad3565b9050919050565b5f819050919050565b5f613b36613b31613b2c84613b13565b613839565b612c95565b9050919050565b613b4681613b1c565b82525050565b5f60a0820190508181035f830152613b648188613905565b90508181036020830152613b788187613905565b90508181036040830152613b8c8186613905565b9050613b9b6060830185612d25565b613ba86080830184613b3d565b9695505050505050565b7f6f7267206e6f7420696e2073757370656e6465642073746174650000000000005f82015250565b5f613be6601a83612da2565b9150613bf182613bb2565b602082019050919050565b5f6020820190508181035f830152613c1381613bda565b9050919050565b5f819050919050565b5f613c3d613c38613c3384613c1a565b613839565b612c95565b9050919050565b613c4d81613c23565b82525050565b5f60a0820190508181035f830152613c6b8188613905565b90508181036020830152613c7f8187613905565b90508181036040830152613c938186613905565b9050613ca26060830185612d25565b613caf6080830184613c44565b9695505050505050565b5f6080820190508181035f830152613cd18187613905565b90508181036020830152613ce58186613905565b90508181036040830152613cf98185613905565b9050613d086060830184612d25565b95945050505050565b5f613d1c828561376f565b9150613d27826136b3565b9150613d33828461376f565b91508190509392505050565b5f613d4982612c95565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d7b57613d7a613a25565b5b600182019050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613dd07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613d95565b613dda8683613d95565b95508019841693508086168417925050509392505050565b5f613e0c613e07613e0284612c95565b613839565b612c95565b9050919050565b5f819050919050565b613e2583613df2565b613e39613e3182613e13565b848454613da1565b825550505050565b5f90565b613e4d613e41565b613e58818484613e1c565b505050565b5b81811015613e7b57613e705f82613e45565b600181019050613e5e565b5050565b601f821115613ec057613e91816138f3565b613e9a84613d86565b81016020851015613ea9578190505b613ebd613eb585613d86565b830182613e5d565b50505b505050565b5f82821c905092915050565b5f613ee05f1984600802613ec5565b1980831691505092915050565b5f613ef88383613ed1565b9150826002028217905092915050565b613f1182612d98565b67ffffffffffffffff811115613f2a57613f29612ec4565b5b613f34825461362d565b613f3f828285613e7f565b5f60209050601f831160018114613f70575f8415613f5e578287015190505b613f688582613eed565b865550613fcf565b601f198416613f7e866138f3565b5f5b82811015613fa557848901518255600182019150602085019450602081019050613f80565b86831015613fc25784890151613fbe601f891682613ed1565b8355505b6001600288020188555050505b505050505050565b7f62726561647468206c6576656c206578636565646564000000000000000000005f82015250565b5f61400b601683612da2565b915061401682613fd7565b602082019050919050565b5f6020820190508181035f83015261403881613fff565b9050919050565b7f6465707468206c6576656c2065786365656465640000000000000000000000005f82015250565b5f614073601483612da2565b915061407e8261403f565b602082019050919050565b5f6020820190508181035f8301526140a081614067565b9050919050565b5f6140b182612c95565b91506140bc83612c95565b92508282019050808211156140d4576140d3613a25565b5b92915050565b5f815490506140e88161362d565b9050919050565b5f819050815f5260205f209050919050565b81810361410f5750506141e4565b614118826140da565b67ffffffffffffffff81111561413157614130612ec4565b5b61413b825461362d565b614146828285613e7f565b5f601f831160018114614173575f8415614161578287015490505b61416b8582613eed565b8655506141dd565b601f198416614181876140ef565b965061418c866138f3565b5f5b828110156141b35784890154825560018201915060018501945060208101905061418e565b868310156141d057848901546141cc601f891682613ed1565b8355505b6001600288020188555050505b5050505050505b565b5f6142006141fb6141f68461381d565b613839565b612c95565b9050919050565b614210816141e6565b82525050565b5f60a0820190508181035f83015261422e8188613905565b905081810360208301526142428187613905565b905081810360408301526142568186613905565b90506142656060830185612d25565b6142726080830184614207565b969550505050505056fea26469706673582212202f54aac41a4a173225ebb18f40ad297062a0894f81ddcbdd25585193bb32681664736f6c63430008180033", +} + // OrgManagerABI is the input ABI used to generate the binding from. -const OrgManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateOrg\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"approveOrgStatusUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getUltimateParent\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_pOrgId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgActive\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgIndex\",\"type\":\"uint256\"}],\"name\":\"getOrgInfo\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getSubOrgIndexes\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfOrgs\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_orgStatus\",\"type\":\"uint256\"}],\"name\":\"checkOrgStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_breadth\",\"type\":\"uint256\"},{\"name\":\"_depth\",\"type\":\"uint256\"}],\"name\":\"setUpOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getOrgDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"OrgApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"OrgPendingApproval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"}],\"name\":\"OrgSuspended\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"}],\"name\":\"OrgSuspensionRevoked\",\"type\":\"event\"}]" +// Deprecated: Use OrgManagerMetaData.ABI instead. +var OrgManagerABI = OrgManagerMetaData.ABI var OrgManagerParsedABI, _ = abi.JSON(strings.NewReader(OrgManagerABI)) // OrgManagerBin is the compiled bytecode used for deploying new contracts. -var OrgManagerBin = "0x608060405260018054600160a01b60ff021916905560046002819055600355600060065534801561002f57600080fd5b50604051602080613bb58339810180604052602081101561004f57600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613b368061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637755ebdd1161008c578063e302831611610066578063e302831614610787578063f4d6d9f5146107f5578063f9953de514610863578063ffe40d1d146108d1576100ea565b80637755ebdd146106655780638c8642df1461066d5780639e58eb9f14610713576100ea565b80631f953480116100c85780631f953480146102c25780633fd62ae7146103805780635c4f32ee146104385780635e99f6e5146105a7576100ea565b80630cc27493146100ef57806314f775f91461016f578063177c8d8a146101df575b600080fd5b61015d6004803603604081101561010557600080fd5b810190602081018135600160201b81111561011f57600080fd5b82018360208201111561013157600080fd5b803590602001918460018302840111600160201b8311171561015257600080fd5b919350915035610975565b60408051918252519081900360200190f35b6101dd6004803603604081101561018557600080fd5b810190602081018135600160201b81111561019f57600080fd5b8201836020820111156101b157600080fd5b803590602001918460018302840111600160201b831117156101d257600080fd5b919350915035610d07565b005b61024d600480360360208110156101f557600080fd5b810190602081018135600160201b81111561020f57600080fd5b82018360208201111561022157600080fd5b803590602001918460018302840111600160201b8311171561024257600080fd5b509092509050610ef9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028757818101518382015260200161026f565b50505050905090810190601f1680156102b45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101dd600480360360408110156102d857600080fd5b810190602081018135600160201b8111156102f257600080fd5b82018360208201111561030457600080fd5b803590602001918460018302840111600160201b8311171561032557600080fd5b919390929091602081019035600160201b81111561034257600080fd5b82018360208201111561035457600080fd5b803590602001918460018302840111600160201b8311171561037557600080fd5b5090925090506110ae565b6104246004803603602081101561039657600080fd5b810190602081018135600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460018302840111600160201b831117156103e357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061128c945050505050565b604080519115158252519081900360200190f35b6104556004803603602081101561044e57600080fd5b5035611499565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b838110156104a657818101518382015260200161048e565b50505050905090810190601f1680156104d35780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156105065781810151838201526020016104ee565b50505050905090810190601f1680156105335780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b8381101561056657818101518382015260200161054e565b50505050905090810190601f1680156105935780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b610615600480360360208110156105bd57600080fd5b810190602081018135600160201b8111156105d757600080fd5b8201836020820111156105e957600080fd5b803590602001918460018302840111600160201b8311171561060a57600080fd5b50909250905061170e565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610651578181015183820152602001610639565b505050509050019250505060405180910390f35b61015d61185b565b6104246004803603604081101561068357600080fd5b810190602081018135600160201b81111561069d57600080fd5b8201836020820111156106af57600080fd5b803590602001918460018302840111600160201b831117156106d057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611862915050565b6101dd6004803603606081101561072957600080fd5b810190602081018135600160201b81111561074357600080fd5b82018360208201111561075557600080fd5b803590602001918460018302840111600160201b8311171561077657600080fd5b9193509150803590602001356119ba565b6101dd6004803603602081101561079d57600080fd5b810190602081018135600160201b8111156107b757600080fd5b8201836020820111156107c957600080fd5b803590602001918460018302840111600160201b831117156107ea57600080fd5b509092509050611ae6565b6104556004803603602081101561080b57600080fd5b810190602081018135600160201b81111561082557600080fd5b82018360208201111561083757600080fd5b803590602001918460018302840111600160201b8311171561085857600080fd5b509092509050611ef1565b6101dd6004803603602081101561087957600080fd5b810190602081018135600160201b81111561089357600080fd5b8201836020820111156108a557600080fd5b803590602001918460018302840111600160201b831117156108c657600080fd5b50909250905061225a565b610424600480360360208110156108e757600080fd5b810190602081018135600160201b81111561090157600080fd5b82018360208201111561091357600080fd5b803590602001918460018302840111600160201b8311171561093457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612407945050505050565b60015460408051600160e41b62e32cf902815290516000926001600160a01b031691630e32cf90916004808301926020929190829003018186803b1580156109bc57600080fd5b505afa1580156109d0573d6000803e3d6000fd5b505050506040513d60208110156109e657600080fd5b50516001600160a01b03163314610a3b5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a7d92508391506124079050565b1515600114610ace5760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b8260011480610add5750826002145b1515610b1d57604051600160e51b62461bcd028152600401808060200182810382526025815260200180613a646025913960400191505060405180910390fd5b6000610b5e86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b9050600481815481101515610b6f57fe5b9060005260206000209060080201600601546001141515610bc457604051600160e51b62461bcd028152600401808060200182810382526027815260200180613a896027913960400191505060405180910390fd5b6000808560011415610bdb57506002905080610bec565b8560021415610bec57506004905060035b610c2d88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250611862915050565b1515600114610c7057604051600160e51b62461bcd028152600401808060200182810382526027815260200180613ab06027913960400191505060405180910390fd5b8560011415610cbd57610cb888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061252292505050565b610cfc565b610cfc88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127e492505050565b979650505050505050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5557600080fd5b505afa158015610d69573d6000803e3d6000fd5b505050506040513d6020811015610d7f57600080fd5b50516001600160a01b03163314610dd45760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1692508391506124079050565b1515600114610e675760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b8160011415610eb457610eaf84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061299192505050565b610ef3565b610ef384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4f92505050565b50505050565b60015460408051600160e41b62e32cf902815290516060926001600160a01b031691630e32cf90916004808301926020929190829003018186803b158015610f4057600080fd5b505afa158015610f54573d6000803e3d6000fd5b505050506040513d6020811015610f6a57600080fd5b50516001600160a01b03163314610fbf5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b600461100084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b8154811061100a57fe5b6000918252602091829020600460089092020101805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156110a05780601f10611075576101008083540402835291602001916110a0565b820191906000526020600020905b81548152906001019060200180831161108357829003601f168201915b505050505090505b92915050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156110fc57600080fd5b505afa158015611110573d6000803e3d6000fd5b505050506040513d602081101561112657600080fd5b50516001600160a01b0316331461117b5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8383838360405160200180858580828437600160f91b601702920191825250600101838380828437808301925050509450505050506040516020818303038152906040526111c881612407565b1561120d5760408051600160e51b62461bcd02815260206004820152600a6024820152600160b01b696f72672065786973747302604482015290519081900360640190fd5b61128585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525060029250829150612d0e9050565b5050505050565b600060056000836040516020018082805190602001908083835b602083106112c55780518252601f1990920191602091820191016112a6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014151561149057600061132383612495565b905060048181548110151561133457fe5b906000526020600020906008020160010154600214806113735750600480548290811061135d57fe5b9060005260206000209060080201600101546003145b1561148e57600061142c60048381548110151561138c57fe5b6000918252602091829020600460089092020101805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156114225780601f106113f757610100808354040283529160200191611422565b820191906000526020600020905b81548152906001019060200180831161140557829003601f168201915b5050505050612495565b905060048181548110151561143d57fe5b9060005260206000209060080201600101546002148061147c5750600480548290811061146657fe5b9060005260206000209060080201600101546003145b1561148c57600192505050611494565b505b505b5060005b919050565b60608060606000806004868154811015156114b057fe5b90600052602060002090600802016000016004878154811015156114d057fe5b90600052602060002090600802016002016004888154811015156114f057fe5b906000526020600020906008020160040160048981548110151561151057fe5b90600052602060002090600802016006015460048a81548110151561153157fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156116665780601f1061163b57610100808354040283529160200191611666565b820191906000526020600020905b81548152906001019060200180831161164957829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156116f45780601f106116c9576101008083540402835291602001916116f4565b820191906000526020600020905b8154815290600101906020018083116116d757829003601f168201915b505050505092509450945094509450945091939590929450565b606061174f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061240792505050565b15156001146117a05760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b60006117e184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b90506004818154811015156117f257fe5b906000526020600020906008020160070180548060200260200160405190810160405280929190818152602001828054801561184d57602002820191906000526020600020905b815481526020019060010190808311611839575b505050505091505092915050565b6004545b90565b600060056000846040516020018082805190602001908083835b6020831061189b5780518252601f19909201916020918201910161187c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014156118f5575060006110a8565b600061190084612495565b905060056000856040516020018082805190602001908083835b602083106119395780518252601f19909201916020918201910161191a565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001208152602001908152602001600020546000141580156119b257508260048281548110151561199e57fe5b906000526020600020906008020160010154145b949350505050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b505afa158015611a1c573d6000803e3d6000fd5b505050506040513d6020811015611a3257600080fd5b50516001600160a01b03163314611a875760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b611adc6040518060200160405280600081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925060029150612d0e9050565b6002556003555050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3457600080fd5b505afa158015611b48573d6000803e3d6000fd5b505050506040513d6020811015611b5e57600080fd5b50516001600160a01b03163314611bb35760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b611bf582828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250611862915050565b1515600114611c465760408051600160e51b62461bcd0281526020600482015260126024820152600160701b716e6f7468696e6720746f20617070726f766502604482015290519081900360640190fd5b6000611c8783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b90506002600482815481101515611c9a57fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515611cdf57fe5b9060005260206000209060080201600001600483815481101515611cff57fe5b9060005260206000209060080201600201600484815481101515611d1f57fe5b9060005260206000209060080201600401600485815481101515611d3f57fe5b906000526020600020906008020160060154600260405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611df05780601f10611dc557610100808354040283529160200191611df0565b820191906000526020600020905b815481529060010190602001808311611dd357829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015611e645780601f10611e3957610100808354040283529160200191611e64565b820191906000526020600020905b815481529060010190602001808311611e4757829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611ed85780601f10611ead57610100808354040283529160200191611ed8565b820191906000526020600020905b815481529060010190602001808311611ebb57829003601f168201915b50509850505050505050505060405180910390a1505050565b6060806060600080611f3887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061240792505050565b1515611fa757868660008083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820183528382528251908101909252918152949d509b50929950939750919550612250945050505050565b6000611fe888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b9050600481815481101515611ff957fe5b906000526020600020906008020160000160048281548110151561201957fe5b906000526020600020906008020160020160048381548110151561203957fe5b906000526020600020906008020160040160048481548110151561205957fe5b90600052602060002090600802016006015460048581548110151561207a57fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121215780601f106120f657610100808354040283529160200191612121565b820191906000526020600020905b81548152906001019060200180831161210457829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156121af5780601f10612184576101008083540402835291602001916121af565b820191906000526020600020905b81548152906001019060200180831161219257829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561223d5780601f106122125761010080835404028352916020019161223d565b820191906000526020600020905b81548152906001019060200180831161222057829003601f168201915b5050505050925095509550955095509550505b9295509295909350565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156122a857600080fd5b505afa1580156122bc573d6000803e3d6000fd5b505050506040513d60208110156122d257600080fd5b50516001600160a01b031633146123275760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061236992508391506124079050565b156123ae5760408051600160e51b62461bcd02815260206004820152600a6024820152600160b01b696f72672065786973747302604482015290519081900360640190fd5b6124026040518060200160405280600081525084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250829150612d0e9050565b505050565b600060056000836040516020018082805190602001908083835b602083106124405780518252601f199092019160209182019101612421565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014159050919050565b6000600160056000846040516020018082805190602001908083835b602083106124d05780518252601f1990920191602091820191016124b1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b61252d816002611862565b151560011461257057604051600160e51b62461bcd028152600401808060200182810382526034815260200180613ad76034913960400191505060405180910390fd5b600061257b82612495565b9050600360048281548110151561258e57fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b6004828154811015156125d357fe5b90600052602060002090600802016000016004838154811015156125f357fe5b906000526020600020906008020160020160048481548110151561261357fe5b906000526020600020906008020160040160048581548110151561263357fe5b9060005260206000209060080201600601546003604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156126e45780601f106126b9576101008083540402835291602001916126e4565b820191906000526020600020905b8154815290600101906020018083116126c757829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156127585780601f1061272d57610100808354040283529160200191612758565b820191906000526020600020905b81548152906001019060200180831161273b57829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156127cc5780601f106127a1576101008083540402835291602001916127cc565b820191906000526020600020905b8154815290600101906020018083116127af57829003601f168201915b50509850505050505050505060405180910390a15050565b6127ef816004611862565b15156001146128485760408051600160e51b62461bcd02815260206004820152601a60248201527f6f7267206e6f7420696e2073757370656e646564207374617465000000000000604482015290519081900360640190fd5b600061285382612495565b9050600560048281548110151561286657fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b6004828154811015156128ab57fe5b90600052602060002090600802016000016004838154811015156128cb57fe5b90600052602060002090600802016002016004848154811015156128eb57fe5b906000526020600020906008020160040160048581548110151561290b57fe5b9060005260206000209060080201600601546005604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156126e45780601f106126b9576101008083540402835291602001916126e4565b61299c816003611862565b15156001146129ed5760408051600160e51b62461bcd0281526020600482015260126024820152600160701b716e6f7468696e6720746f20617070726f766502604482015290519081900360640190fd5b60006129f882612495565b905060048082815481101515612a0a57fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d96600482815481101515612a4f57fe5b9060005260206000209060080201600001600483815481101515612a6f57fe5b9060005260206000209060080201600201600484815481101515612a8f57fe5b9060005260206000209060080201600401600485815481101515612aaf57fe5b600091825260209182902060066008909202010154604080516060810183905260808082528754600260001961010060018416150201909116049082018190529293909283929183019183019060a084019089908015612b505780601f10612b2557610100808354040283529160200191612b50565b820191906000526020600020905b815481529060010190602001808311612b3357829003601f168201915b5050848103835287546002600019610100600184161502019091160480825260209091019088908015612bc45780601f10612b9957610100808354040283529160200191612bc4565b820191906000526020600020905b815481529060010190602001808311612ba757829003601f168201915b5050848103825286546002600019610100600184161502019091160480825260209091019087908015612c385780601f10612c0d57610100808354040283529160200191612c38565b820191906000526020600020905b815481529060010190602001808311612c1b57829003601f168201915b505097505050505050505060405180910390a15050565b612c5a816005611862565b1515600114612cab5760408051600160e51b62461bcd0281526020600482015260126024820152600160701b716e6f7468696e6720746f20617070726f766502604482015290519081900360640190fd5b6000612cb682612495565b90506002600482815481101515612cc957fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f600482815481101515612a4f57fe5b600080806001851415612d9057856040516020018082805190602001908083835b60208310612d4e5780518252601f199092019160209182019101612d2f565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209150612ecf565b866040516020018082805190602001908083835b60208310612dc35780518252601f199092019160209182019101612da4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b60208310612e345780518252601f199092019160209182019101612e15565b6001836020036101000a03801982511681845116808217855250505050505090500180600160f91b60170281525060010182805190602001908083835b60208310612e905780518252601f199092019160209182019101612e71565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b600680546001908101918290556000848152600560205260408120929092556004805491612eff9190830161382a565b90508560011415612fc45785600482815481101515612f1a57fe5b9060005260206000209060080201600601819055506000600482815481101515612f4057fe5b90600052602060002090600802016005018190555086600482815481101515612f6557fe5b90600052602060002090600802016003019080519060200190612f89929190613856565b5086600482815481101515612f9a57fe5b90600052602060002090600802016004019080519060200190612fbe929190613856565b50613308565b600084815260056020526040902054600354600480546000199093019450909184908110612fee57fe5b6000918252602090912060076008909202010154106130575760408051600160e51b62461bcd02815260206004820152601660248201527f62726561647468206c6576656c20657863656564656400000000000000000000604482015290519081900360640190fd5b600254600480548490811061306857fe5b9060005260206000209060080201600601541015156130d15760408051600160e51b62461bcd02815260206004820152601460248201527f6465707468206c6576656c206578636565646564000000000000000000000000604482015290519081900360640190fd5b60048054839081106130df57fe5b90600052602060002090600802016006015460010160048281548110151561310357fe5b9060005260206000209060080201600601819055508160048281548110151561312857fe5b6000918252602090912060056008909202010155600480548390811061314a57fe5b906000526020600020906008020160040160048281548110151561316a57fe5b9060005260206000209060080201600401908054600181600116156101000203166002900461319a9291906138d4565b5060006004838154811015156131ac57fe5b906000526020600020906008020160070180548091906001016131cf9190613949565b9050816004848154811015156131e157fe5b9060005260206000209060080201600701828154811015156131ff57fe5b906000526020600020018190555088886040516020018083805190602001908083835b602083106132415780518252601f199092019160209182019101613222565b6001836020036101000a03801982511681845116808217855250505050505090500180600160f91b60170281525060010182805190602001908083835b6020831061329d5780518252601f19909201916020918201910161327e565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526004838154811015156132e157fe5b90600052602060002090600802016003019080519060200190613305929190613856565b50505b8660048281548110151561331857fe5b9060005260206000209060080201600001908051906020019061333c929190613856565b508760048281548110151561334d57fe5b90600052602060002090600802016002019080519060200190613371929190613856565b508460048281548110151561338257fe5b90600052602060002090600802016001018190555084600114156135e2577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b6004828154811015156133d057fe5b90600052602060002090600802016000016004838154811015156133f057fe5b906000526020600020906008020160020160048481548110151561341057fe5b906000526020600020906008020160040160048581548110151561343057fe5b9060005260206000209060080201600601546001604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156134e15780601f106134b6576101008083540402835291602001916134e1565b820191906000526020600020905b8154815290600101906020018083116134c457829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156135555780601f1061352a57610100808354040283529160200191613555565b820191906000526020600020905b81548152906001019060200180831161353857829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156135c95780601f1061359e576101008083540402835291602001916135c9565b820191906000526020600020905b8154815290600101906020018083116135ac57829003601f168201915b50509850505050505050505060405180910390a1613820565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110151561361257fe5b906000526020600020906008020160000160048381548110151561363257fe5b906000526020600020906008020160020160048481548110151561365257fe5b906000526020600020906008020160040160048581548110151561367257fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156137235780601f106136f857610100808354040283529160200191613723565b820191906000526020600020905b81548152906001019060200180831161370657829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156137975780601f1061376c57610100808354040283529160200191613797565b820191906000526020600020905b81548152906001019060200180831161377a57829003601f168201915b505084810382528754600260001961010060018416150201909116048082526020909101908890801561380b5780601f106137e05761010080835404028352916020019161380b565b820191906000526020600020905b8154815290600101906020018083116137ee57829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b81548183558181111561240257600802816008028360005260206000209182019101612402919061396d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061389757805160ff19168380011785556138c4565b828001600101855582156138c4579182015b828111156138c45782518255916020019190600101906138a9565b506138d09291506139e4565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061390d57805485556138c4565b828001600101855582156138c457600052602060002091601f016020900482015b828111156138c457825482559160010191906001019061392e565b815481835581811115612402576000838152602090206124029181019083016139e4565b61185f91905b808211156138d057600061398782826139fe565b600182016000905560028201600061399f91906139fe565b6139ad6003830160006139fe565b6139bb6004830160006139fe565b600582016000905560068201600090556007820160006139db9190613a45565b50600801613973565b61185f91905b808211156138d057600081556001016139ea565b50805460018160011615610100020316600290046000825580601f10613a245750613a42565b601f016020900490600052602060002090810190613a4291906139e4565b50565b5080546000825590600052602060002090810190613a4291906139e456fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f7765646f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a72305820e20472358f6cc444b5476d1b471677de46e77b7421a1bcae4549f346a29e10870029" +// Deprecated: Use OrgManagerMetaData.Bin instead. +var OrgManagerBin = OrgManagerMetaData.Bin // DeployOrgManager deploys a new Ethereum contract, binding an instance of OrgManager to it. -func DeployOrgManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *OrgManager, error) { - parsed, err := abi.JSON(strings.NewReader(OrgManagerABI)) +func DeployOrgManager(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *OrgManager, error) { + parsed, err := OrgManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(OrgManagerBin), backend, _permUpgradable) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(OrgManagerBin), backend) if err != nil { return common.Address{}, nil, nil, err } @@ -530,6 +543,27 @@ func (_OrgManager *OrgManagerTransactorSession) ApproveOrgStatusUpdate(_orgId st return _OrgManager.Contract.ApproveOrgStatusUpdate(&_OrgManager.TransactOpts, _orgId, _action) } +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_OrgManager *OrgManagerTransactor) Initialize(opts *bind.TransactOpts, _permUpgradable common.Address) (*types.Transaction, error) { + return _OrgManager.contract.Transact(opts, "initialize", _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_OrgManager *OrgManagerSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _OrgManager.Contract.Initialize(&_OrgManager.TransactOpts, _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_OrgManager *OrgManagerTransactorSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _OrgManager.Contract.Initialize(&_OrgManager.TransactOpts, _permUpgradable) +} + // SetUpOrg is a paid mutator transaction binding the contract method 0x9e58eb9f. // // Solidity: function setUpOrg(string _orgId, uint256 _breadth, uint256 _depth) returns() @@ -572,6 +606,142 @@ func (_OrgManager *OrgManagerTransactorSession) UpdateOrg(_orgId string, _action return _OrgManager.Contract.UpdateOrg(&_OrgManager.TransactOpts, _orgId, _action) } +// OrgManagerInitializedOrgIterator is returned from FilterInitializedOrg and is used to iterate over the raw logs and unpacked data for InitializedOrg events raised by the OrgManager contract. +type OrgManagerInitializedOrgIterator struct { + Event *OrgManagerInitializedOrg // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OrgManagerInitializedOrgIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OrgManagerInitializedOrg) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OrgManagerInitializedOrg) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OrgManagerInitializedOrgIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OrgManagerInitializedOrgIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OrgManagerInitializedOrg represents a InitializedOrg event raised by the OrgManager contract. +type OrgManagerInitializedOrg struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitializedOrg is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OrgManager *OrgManagerFilterer) FilterInitializedOrg(opts *bind.FilterOpts) (*OrgManagerInitializedOrgIterator, error) { + + logs, sub, err := _OrgManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &OrgManagerInitializedOrgIterator{contract: _OrgManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +var InitializedOrgTopicHash = "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + +// WatchInitializedOrg is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OrgManager *OrgManagerFilterer) WatchInitializedOrg(opts *bind.WatchOpts, sink chan<- *OrgManagerInitializedOrg) (event.Subscription, error) { + + logs, sub, err := _OrgManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OrgManagerInitializedOrg) + if err := _OrgManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitializedOrg is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OrgManager *OrgManagerFilterer) ParseInitializedOrg(log types.Log) (*OrgManagerInitializedOrg, error) { + event := new(OrgManagerInitializedOrg) + if err := _OrgManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // OrgManagerOrgApprovedIterator is returned from FilterOrgApproved and is used to iterate over the raw logs and unpacked data for OrgApproved events raised by the OrgManager contract. type OrgManagerOrgApprovedIterator struct { Event *OrgManagerOrgApproved // Event containing the contract specifics and raw log @@ -708,6 +878,7 @@ func (_OrgManager *OrgManagerFilterer) ParseOrgApproved(log types.Log) (*OrgMana if err := _OrgManager.contract.UnpackLog(event, "OrgApproved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -847,6 +1018,7 @@ func (_OrgManager *OrgManagerFilterer) ParseOrgPendingApproval(log types.Log) (* if err := _OrgManager.contract.UnpackLog(event, "OrgPendingApproval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -985,6 +1157,7 @@ func (_OrgManager *OrgManagerFilterer) ParseOrgSuspended(log types.Log) (*OrgMan if err := _OrgManager.contract.UnpackLog(event, "OrgSuspended", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1123,5 +1296,6 @@ func (_OrgManager *OrgManagerFilterer) ParseOrgSuspensionRevoked(log types.Log) if err := _OrgManager.contract.UnpackLog(event, "OrgSuspensionRevoked", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/permission/v2/bind/permission_impl.go b/permission/v2/bind/permission_impl.go index 6bbf8ba2f7..8c8b7627e6 100644 --- a/permission/v2/bind/permission_impl.go +++ b/permission/v2/bind/permission_impl.go @@ -4,6 +4,7 @@ package bind import ( + "errors" "math/big" "strings" @@ -17,6 +18,7 @@ import ( // Reference imports to suppress errors if they are not otherwise used. var ( + _ = errors.New _ = big.NewInt _ = strings.NewReader _ = ethereum.NotFound @@ -26,22 +28,33 @@ var ( _ = event.NewSubscription ) +// PermImplMetaData contains all meta data concerning the PermImpl contract. +var PermImplMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_networkBootStatus\",\"type\":\"bool\"}],\"name\":\"PermissionsInitialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addAdminAccount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"addAdminNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addContractWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_access\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_voter\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_admin\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addNewRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_pOrgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveBlacklistedAccountRecovery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveBlacklistedNodeRecovery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveOrgStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"assignAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"}],\"name\":\"connectionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccessLevelForUnconfiguredAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNetworkBootStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getPendingOp\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPolicyDetails\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_breadth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_depth\",\"type\":\"uint256\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permUpgradable\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_orgManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_rolesManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_accountManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_voterManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_nodeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractWhitelistManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isNetworkAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"isOrgAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"removeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"revokeContractWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_accessLevel\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"setAccessLevelForUnconfiguredAccount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isIpValidationEnabled\",\"type\":\"bool\"}],\"name\":\"setIpValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nwAdminOrg\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_oAdminRole\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"_networkBootStatus\",\"type\":\"bool\"}],\"name\":\"setMigrationPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nwAdminOrg\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"startBlacklistedAccountRecovery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"startBlacklistedNodeRecovery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"transactionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateAccountStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateNetworkBootStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateOrgStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"validateAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60806040526003600a555f600b5f6101000a81548160ff0219169083151502179055503480156200002e575f80fd5b5061968b806200003d5f395ff3fe608060405234801561000f575f80fd5b5060043610610225575f3560e01c80636b568d761161012e578063b5546564116100b6578063e91b0e191161007a578063e91b0e1914610618578063ecad01d514610634578063f346a3a714610650578063f5ad584a14610683578063f75f0a061461069f57610225565b8063b554656414610573578063b9b7fe6c1461058f578063cc9ba6fa146105ab578063d1aa0c20146105cc578063d621d957146105fc57610225565b8063936421d5116100fd578063936421d5146104bf5780639bd38101146104ef5780639fc666b21461051f578063a042bf401461053b578063a5843f081461055757610225565b80636b568d761461043b5780638683c7fe1461046b57806388843041146104875780638baa8191146104a357610225565b8063404bf3eb116101b15780634cbfa82e116101805780634cbfa82e146103ad5780634fe57e7a146103cb5780635ca5adbe146103e757806368a612731461040357806368f808e51461041f57610225565b8063404bf3eb1461032757806344478e791461034357806345a59e5b146103615780634b20f45f1461039157610225565b80631b610220116101f85780631b6102201461029b5780631c249912146102b7578063349582a0146102d357806335876476146102ef5780633cf5f33b1461030b57610225565b806304e81f1e146102295780630dca12f614610245578063177d624f146102635780631b04c2761461027f575b5f80fd5b610243600480360381019061023e91906166b0565b6106bb565b005b61024d610938565b60405161025a9190616743565b60405180910390f35b61027d6004803603810190610278919061675c565b6109cc565b005b610299600480360381019061029491906167cf565b610ba3565b005b6102b560048036038101906102b09190616899565b610e5f565b005b6102d160048036038101906102cc9190616949565b610fee565b005b6102ed60048036038101906102e8919061675c565b61125d565b005b610309600480360381019061030491906169ba565b611434565b005b61032560048036038101906103209190616a57565b611a73565b005b610341600480360381019061033c9190616ac8565b611cf7565b005b61034b611ff9565b6040516103589190616b7a565b60405180910390f35b61037b60048036038101906103769190616bca565b6121be565b6040516103889190616b7a565b60405180910390f35b6103ab60048036038101906103a69190616949565b612288565b005b6103b5612500565b6040516103c29190616b7a565b60405180910390f35b6103e560048036038101906103e09190616c5b565b612515565b005b61040160048036038101906103fc9190616c86565b61278b565b005b61041d60048036038101906104189190616d17565b612b2b565b005b61043960048036038101906104349190616e34565b612ead565b005b61045560048036038101906104509190616faa565b613084565b6040516104629190616b7a565b60405180910390f35b61048560048036038101906104809190617004565b613127565b005b6104a1600480360381019061049c9190616949565b613314565b005b6104bd60048036038101906104b891906170a7565b613777565b005b6104d960048036038101906104d49190617198565b613aea565b6040516104e69190616b7a565b60405180910390f35b61050960048036038101906105049190616faa565b613f76565b6040516105169190616b7a565b60405180910390f35b61053960048036038101906105349190617242565b614170565b005b6105556004803603810190610550919061726d565b61434b565b005b610571600480360381019061056c919061734a565b6145cb565b005b61058d60048036038101906105889190616a57565b6148c9565b005b6105a960048036038101906105a49190617388565b614c4b565b005b6105b3614e89565b6040516105c394939291906174f3565b60405180910390f35b6105e660048036038101906105e19190616c5b565b615050565b6040516105f39190616b7a565b60405180910390f35b6106166004803603810190610611919061726d565b615141565b005b610632600480360381019061062d919061754b565b6153b8565b005b61064e6004803603810190610649919061726d565b6157e4565b005b61066a6004803603810190610665919061763c565b615a10565b60405161067a9493929190617696565b60405180910390f35b61069d600480360381019061069891906176e7565b615ac4565b005b6106b960048036038101906106b4919061754b565b615c01565b005b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610725573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad9061785a565b60405180910390fd5b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050600115156108098383613f76565b15151461084b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610842906178e8565b60405180910390fd5b600184148061085a5750600284145b806108655750600384145b6108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90617976565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a888888886040518563ffffffff1660e01b815260040161090294939291906179c0565b5f604051808303815f87803b158015610919575f80fd5b505af115801561092b573d5f803e3d5ffd5b5050505050505050505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca12f66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c79190617a12565b905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5a91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe9061785a565b60405180910390fd5b8060011515610ad582615050565b151514610b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0e90617aad565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c7f3315846040518263ffffffff1660e01b8152600401610b719190617acb565b5f604051808303815f87803b158015610b88575f80fd5b505af1158015610b9a573d5f803e3d5ffd5b50505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3191906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c959061785a565b60405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050610ceb81616083565b610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2190617b2e565b60405180910390fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505060011515610d7d8383613f76565b151514610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db6906178e8565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b7135798c8c8c8c8c8c8c6040518863ffffffff1660e01b8152600401610e259796959493929190617b4c565b5f604051808303815f87803b158015610e3c575f80fd5b505af1158015610e4e573d5f803e3d5ffd5b505050505050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eed91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f519061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff16151514610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690617bf9565b60405180910390fd5b868660079182610fc0929190617e1b565b50848460089182610fd2929190617e1b565b50828260099182610fe4929190617e1b565b5050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611058573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107c91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e09061785a565b60405180910390fd5b80600115156110f782615050565b151514611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113090617aad565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a86868660046040518563ffffffff1660e01b81526004016111989493929190617f21565b5f604051808303815f87803b1580156111af575f80fd5b505af11580156111c1573d5f803e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600787878760066040518663ffffffff1660e01b815260040161122995949392919061803c565b5f604051808303815f87803b158015611240575f80fd5b505af1158015611252573d5f803e3d5ffd5b505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112eb91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134f9061785a565b60405180910390fd5b806001151561136682615050565b1515146113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90617aad565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f80f5dd5846040518263ffffffff1660e01b81526004016114029190617acb565b5f604051808303815f87803b158015611419575f80fd5b505af115801561142b573d5f803e3d5ffd5b50505050505050565b5f61143d616127565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156114855750825b90505f60018367ffffffffffffffff161480156114b857505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156114c6575080155b156114fd576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561154a576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16036115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af90618112565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1603611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906181a0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1603611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061822e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603611702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f9906182bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603611770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117679061834a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d5906183d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390618466565b60405180910390fd5b8b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508960015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550885f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508760025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315611a65575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611a5c91906184d0565b60405180910390a15b505050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611add573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0191906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b659061785a565b60405180910390fd5b8060011515611b7c82615050565b151514611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590617aad565b60405180910390fd5b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc274938787876040518463ffffffff1660e01b8152600401611c1d939291906184e9565b6020604051808303815f875af1158015611c39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5d9190617a12565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600788885f866040518663ffffffff1660e01b8152600401611cc2959493929190618519565b5f604051808303815f87803b158015611cd9575f80fd5b505af1158015611ceb573d5f803e3d5ffd5b50505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8591906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de99061785a565b60405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611e3f8161614e565b611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e75906185c9565b60405180910390fd5b8160011515611e8c82615050565b151514611ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec590617aad565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d878a8a898960016040518763ffffffff1660e01b8152600401611f3196959493929190618617565b5f604051808303815f87803b158015611f48575f80fd5b505af1158015611f5a573d5f803e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d60078a8a8a60046040518663ffffffff1660e01b8152600401611fc295949392919061866c565b5f604051808303815f87803b158015611fd9575f80fd5b505af1158015611feb573d5f803e3d5ffd5b505050505050505050505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612064573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061208891906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec9061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff1615151461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190617bf9565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055507f04f651be6fb8fc575d94591e56e9f6e66e33ef23e949765918b3bdae50c617cf600b5f9054906101000a900460ff166040516121a19190616b7a565b60405180910390a1600b5f9054906101000a900460ff1691505090565b5f600b5f9054906101000a900460ff166121db576001905061227f565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166345a59e5b87878787876040518663ffffffff1660e01b815260040161223d9594939291906186e1565b602060405180830381865afa158015612258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061227c919061873c565b90505b95945050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231691906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237a9061785a565b60405180910390fd5b806001151561239182615050565b1515146123d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ca90617aad565b60405180910390fd5b612467600780546123e390617c4e565b80601f016020809104026020016040519081016040528092919081815260200182805461240f90617c4e565b801561245a5780601f106124315761010080835404028352916020019161245a565b820191905f5260205f20905b81548152906001019060200180831161243d57829003601f168201915b50505050508360066161ef565b156124f9575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a86868660056040518563ffffffff1660e01b81526004016124cb94939291906187a0565b5f604051808303815f87803b1580156124e2575f80fd5b505af11580156124f4573d5f803e3d5ffd5b505050505b5050505050565b5f600b5f9054906101000a900460ff16905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a391906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126079061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff16151514612665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265c90617bf9565b60405180910390fd5b6126f96007805461267590617c4e565b80601f01602080910402602001604051908101604052809291908181526020018280546126a190617c4e565b80156126ec5780601f106126c3576101008083540402835291602001916126ec565b820191905f5260205f20905b8154815290600101906020018083116126cf57829003601f168201915b5050505050836001616297565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d836007600860026040518563ffffffff1660e01b815260040161275a9493929190618817565b5f604051808303815f87803b158015612771575f80fd5b505af1158015612783573d5f803e3d5ffd5b505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061281991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287d9061785a565b60405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506128d381616083565b612912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290990617b2e565b60405180910390fd5b8184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050600115156129658383613f76565b1515146129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906178e8565b60405180910390fd5b60086040516020016129b99190618868565b6040516020818303038152906040528051906020012088886040516020016129e2929190618888565b6040516020818303038152906040528051906020012014158015612a5557506009604051602001612a139190618868565b604051602081830303815290604052805190602001208888604051602001612a3c929190618888565b6040516020818303038152906040528051906020012014155b612a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8b906188f4565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6343012898989896040518563ffffffff1660e01b8152600401612af49493929190618912565b5f604051808303815f87803b158015612b0b575f80fd5b505af1158015612b1d573d5f803e3d5ffd5b505050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bb991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1d9061785a565b60405180910390fd5b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612c738161614e565b612cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca9906185c9565b60405180910390fd5b818c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505060011515612d058383613f76565b151514612d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3e906178e8565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f9534808f8f8f8f6040518563ffffffff1660e01b8152600401612da79493929190618912565b5f604051808303815f87803b158015612dbe575f80fd5b505af1158015612dd0573d5f803e3d5ffd5b505050505f8e8e8e8e604051602001612dec94939291906189c3565b60405160208183030381529060405290505f8b8b90501115612e9c5760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c5733118c8c8c8c8c8c886040518863ffffffff1660e01b8152600401612e6e97969594939291906189f5565b5f604051808303815f87803b158015612e85575f80fd5b505af1158015612e97573d5f803e3d5ffd5b505050505b505050505050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f3b91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9f9061785a565b60405180910390fd5b8060011515612fb682615050565b151514612ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fef90617aad565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633965c04a846040518263ffffffff1660e01b81526004016130529190616743565b5f604051808303815f87803b158015613069575f80fd5b505af115801561307b573d5f803e3d5ffd5b50505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b568d7684846040518363ffffffff1660e01b81526004016130e0929190618a5f565b602060405180830381865afa1580156130fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061311f919061873c565b905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613191573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b591906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132199061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff16151514613277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326e90617bf9565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634530abe188888888888860076040518863ffffffff1660e01b81526004016132de9796959493929190618a8d565b5f604051808303815f87803b1580156132f5575f80fd5b505af1158015613307573d5f803e3d5ffd5b5050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561337e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133a291906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461340f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134069061785a565b60405180910390fd5b806001151561341d82615050565b15151461345f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345690617aad565b60405180910390fd5b6134f36007805461346f90617c4e565b80601f016020809104026020016040519081016040528092919081815260200182805461349b90617c4e565b80156134e65780601f106134bd576101008083540402835291602001916134e6565b820191905f5260205f20905b8154815290600101906020018083116134c957829003601f168201915b50505050508360046161ef565b15613770575f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d09dc9388886040518363ffffffff1660e01b8152600401613554929190618888565b60408051808303815f875af115801561356f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135939190618af7565b91509150811561363157613630600780546135ad90617c4e565b80601f01602080910402602001604051908101604052809291908181526020018280546135d990617c4e565b80156136245780601f106135fb57610100808354040283529160200191613624565b820191905f5260205f20905b81548152906001019060200180831161360757829003601f168201915b5050505050825f616297565b5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c214e5e58989896040518463ffffffff1660e01b815260040161368f93929190618b35565b6020604051808303815f875af11580156136ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136cf919061873c565b9050801561376c5761376b600780546136e790617c4e565b80601f016020809104026020016040519081016040528092919081815260200182805461371390617c4e565b801561375e5780601f106137355761010080835404028352916020019161375e565b820191905f5260205f20905b81548152906001019060200180831161374157829003601f168201915b5050505050876001616297565b5b5050505b5050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061380591906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138699061785a565b60405180910390fd5b8083600115156138828383613f76565b1515146138c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bb906178e8565b60405180910390fd5b846138ce81616083565b61390d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390490617b2e565b60405180910390fd5b6001151561391b8888613084565b15151461395d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395490618baf565b60405180910390fd5b6001151561396b86886163ba565b1515146139ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a490618c17565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be322e5487896139f68b616468565b6040518463ffffffff1660e01b8152600401613a1493929190618c35565b602060405180830381865afa158015613a2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a53919061873c565b90505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663143a5604898989856040518563ffffffff1660e01b8152600401613ab39493929190618c7f565b5f604051808303815f87803b158015613aca575f80fd5b505af1158015613adc573d5f803e3d5ffd5b505050505050505050505050565b5f600b5f9054906101000a900460ff16613b075760019050613f6b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd4fa05a8a6040518263ffffffff1660e01b8152600401613b619190617acb565b602060405180830381865afa158015613b7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ba09190617a12565b90506002811480613bb057505f81145b15613f66575f600190505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603613bf65760029050613c07565b5f858590501115613c0657600390505b5b5f8203613d3f5760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e4604b6160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca12f66040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cd99190617a12565b836040518363ffffffff1660e01b8152600401613cf7929190618cd0565b602060405180830381865afa158015613d12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d36919061873c565b92505050613f6b565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636acee5fd8d6040518263ffffffff1660e01b8152600401613d999190617acb565b5f60405180830381865afa158015613db3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190613ddb9190618d65565b915091505f613de983616468565b905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fd62ae7846040518263ffffffff1660e01b8152600401613e459190618ddb565b602060405180830381865afa158015613e60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e84919061873c565b15613f6157613e928d615050565b80613ea35750613ea28d84613f76565b5b15613eb657600195505050505050613f6b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1f77866838584886040518563ffffffff1660e01b8152600401613f169493929190618dfb565b602060405180830381865afa158015613f31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f55919061873c565b95505050505050613f6b565b505050505b5f9150505b979650505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8b42bf48484613fbe86616468565b6040518463ffffffff1660e01b8152600401613fdc93929190618e53565b602060405180830381865afa158015613ff7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061401b919061873c565b15614029576001905061416a565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be322e545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381d66b23866040518263ffffffff1660e01b81526004016140be9190617acb565b5f60405180830381865afa1580156140d8573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906141009190618e96565b8461410a86616468565b6040518463ffffffff1660e01b815260040161412893929190618c35565b602060405180830381865afa158015614143573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614167919061873c565b90505b92915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141fe91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461426b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142629061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff161515146142c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142b790617bf9565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fc666b2836040518263ffffffff1660e01b815260040161431a9190616b7a565b5f604051808303815f87803b158015614331575f80fd5b505af1158015614343573d5f803e3d5ffd5b505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143d991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161443d9061785a565b60405180910390fd5b806001151561445482615050565b151514614496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161448d90617aad565b60405180910390fd5b61452a600780546144a690617c4e565b80601f01602080910402602001604051908101604052809291908181526020018280546144d290617c4e565b801561451d5780601f106144f45761010080835404028352916020019161451d565b820191905f5260205f20905b81548152906001019060200180831161450057829003601f168201915b50505050508360056161ef565b156145c25760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337d50b27878787878c60056040518763ffffffff1660e01b815260040161459496959493929190618edd565b5f604051808303815f87803b1580156145ab575f80fd5b505af11580156145bd573d5f803e3d5ffd5b505050505b50505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614635573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061465991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146146c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146bd9061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff1615151461471b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161471290617bf9565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e58eb9f600785856040518463ffffffff1660e01b815260040161477a93929190618f51565b5f604051808303815f87803b158015614791575f80fd5b505af11580156147a3573d5f803e3d5ffd5b5050505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b71357960086007600a546001806040518663ffffffff1660e01b815260040161480e959493929190618f8d565b5f604051808303815f87803b158015614825575f80fd5b505af1158015614837573d5f803e3d5ffd5b505050505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cef7f6af600860096040518363ffffffff1660e01b8152600401614897929190618fec565b5f604051808303815f87803b1580156148ae575f80fd5b505af11580156148c0573d5f803e3d5ffd5b50505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614933573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061495791906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146149c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016149bb9061785a565b60405180910390fd5b80600115156149d282615050565b151514614a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614a0b90617aad565b60405180910390fd5b6001831480614a235750600283145b614a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614a599061906b565b60405180910390fd5b5f8060018503614a79576002915060039050614a8b565b60028503614a8a5760039150600590505b5b60011515614adc88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508361650d565b151514614b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b15906190d3565b60405180910390fd5b614bb160078054614b2e90617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054614b5a90617c4e565b8015614ba55780601f10614b7c57610100808354040283529160200191614ba5565b820191905f5260205f20905b815481529060010190602001808311614b8857829003601f168201915b505050505085846161ef565b15614c425760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314f775f98888886040518463ffffffff1660e01b8152600401614c14939291906184e9565b5f604051808303815f87803b158015614c2b575f80fd5b505af1158015614c3d573d5f803e3d5ffd5b505050505b50505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614cb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614cd991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614d3d9061785a565b60405180910390fd5b60011515614d548289613f76565b151514614d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614d8d906178e8565b60405180910390fd5b6001821480614da55750600282145b80614db05750600382145b614def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614de690617976565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337d50b27878787878c886040518763ffffffff1660e01b8152600401614e53969594939291906190f1565b5f604051808303815f87803b158015614e6a575f80fd5b505af1158015614e7c573d5f803e3d5ffd5b5050505050505050505050565b60608060605f600760086009600b5f9054906101000a900460ff16838054614eb090617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054614edc90617c4e565b8015614f275780601f10614efe57610100808354040283529160200191614f27565b820191905f5260205f20905b815481529060010190602001808311614f0a57829003601f168201915b50505050509350828054614f3a90617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054614f6690617c4e565b8015614fb15780601f10614f8857610100808354040283529160200191614fb1565b820191905f5260205f20905b815481529060010190602001808311614f9457829003601f168201915b50505050509250818054614fc490617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054614ff090617c4e565b801561503b5780601f106150125761010080835404028352916020019161503b565b820191905f5260205f20905b81548152906001019060200180831161501e57829003601f168201915b50505050509150935093509350935090919293565b5f60086040516020016150639190618868565b604051602081830303815290604052805190602001205f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381d66b23846040518263ffffffff1660e01b81526004016150d19190617acb565b5f60405180830381865afa1580156150eb573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906151139190618e96565b6040516020016151239190618ddb565b60405160208183030381529060405280519060200120149050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156151ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906151cf91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461523c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016152339061785a565b60405180910390fd5b806001151561524a82615050565b15151461528c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161528390617aad565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337d50b27878787878c60046040518763ffffffff1660e01b81526004016152f196959493929190619165565b5f604051808303815f87803b158015615308575f80fd5b505af115801561531a573d5f803e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600789895f60056040518663ffffffff1660e01b81526004016153829594939291906191d9565b5f604051808303815f87803b158015615399575f80fd5b505af11580156153ab573d5f803e3d5ffd5b5050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015615422573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061544691906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146154b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016154aa9061785a565b60405180910390fd5b60011515600b5f9054906101000a900460ff16151514615508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016154ff90617bf9565b60405180910390fd5b6001151561551582615050565b151514615557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161554e90617aad565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600789898660016040518663ffffffff1660e01b81526004016155bb95949392919061923f565b5f604051808303815f87803b1580156155d2575f80fd5b505af11580156155e4573d5f803e3d5ffd5b5050505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f9953de5886040518263ffffffff1660e01b81526004016156429190618ddb565b5f604051808303815f87803b158015615659575f80fd5b505af115801561566b573d5f803e3d5ffd5b5050505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663549583df878787878c6040518663ffffffff1660e01b81526004016156d19594939291906192a5565b5f604051808303815f87803b1580156156e8575f80fd5b505af11580156156fa573d5f803e3d5ffd5b505050506001151561570c8389613084565b15151461574e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161574590619355565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d8389600960016040518563ffffffff1660e01b81526004016157ae9493929190619373565b5f604051808303815f87803b1580156157c5575f80fd5b505af11580156157d7573d5f803e3d5ffd5b5050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561584e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061587291906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146158df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016158d69061785a565b60405180910390fd5b856158e981616083565b615928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161591f90617b2e565b60405180910390fd5b600115156159368389613f76565b151514615978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161596f906178e8565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c573311878787878c6040518663ffffffff1660e01b81526004016159da9594939291906192a5565b5f604051808303815f87803b1580156159f1575f80fd5b505af1158015615a03573d5f803e3d5ffd5b5050505050505050505050565b6060805f8060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663014e6acc87876040518363ffffffff1660e01b8152600401615a71929190618888565b5f60405180830381865afa158015615a8b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190615ab391906193c4565b935093509350935092959194509250565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614615b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615b4a906194aa565b60405180910390fd5b5f801515600b5f9054906101000a900460ff16151514615ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615b9f90617bf9565b60405180910390fd5b878760079182615bb9929190617e1b565b50858560089182615bcb929190617e1b565b50838360099182615bdd929190617e1b565b5081600b5f6101000a81548160ff0219169083151502179055505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015615c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190615c8f91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614615cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615cf39061785a565b60405180910390fd5b60011515615d0982615050565b151514615d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615d4290617aad565b60405180910390fd5b60011515615d5a88600161650d565b151514615d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615d9390619512565b60405180910390fd5b615e3060078054615dac90617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054615dd890617c4e565b8015615e235780601f10615dfa57610100808354040283529160200191615e23565b820191905f5260205f20905b815481529060010190602001808311615e0657829003601f168201915b50505050508260016161ef565b1561607a5760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3028316886040518263ffffffff1660e01b8152600401615e8f9190618ddb565b5f604051808303815f87803b158015615ea6575f80fd5b505af1158015615eb8573d5f803e3d5ffd5b5050505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b713579600989600a546001806040518663ffffffff1660e01b8152600401615f22959493929190619530565b5f604051808303815f87803b158015615f39575f80fd5b505af1158015615f4b573d5f803e3d5ffd5b5050505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f82e08ac878787878c6040518663ffffffff1660e01b8152600401615fb19594939291906192a5565b5f604051808303815f87803b158015615fc8575f80fd5b505af1158015615fda573d5f803e3d5ffd5b505050505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c214e5e588846040518363ffffffff1660e01b815260040161603892919061958f565b6020604051808303815f875af1158015616054573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190616078919061873c565b505b50505050505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c8642df8360026040518363ffffffff1660e01b81526004016160e19291906195bd565b602060405180830381865afa1580156160fc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190616120919061873c565b9050919050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffe40d1d836040518263ffffffff1660e01b81526004016161a99190618ddb565b602060405180830381865afa1580156161c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906161e8919061873c565b9050919050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02138648585856040518463ffffffff1660e01b815260040161624e939291906195eb565b6020604051808303815f875af115801561626a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061628e919061873c565b90509392505050565b801561632b5760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635607395b84846040518363ffffffff1660e01b81526004016162f992919061958f565b5f604051808303815f87803b158015616310575f80fd5b505af1158015616322573d5f803e3d5ffd5b505050506163b5565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359cbd6fe84846040518363ffffffff1660e01b815260040161638792919061958f565b5f604051808303815f87803b15801561639e575f80fd5b505af11580156163b0573d5f803e3d5ffd5b505050505b505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abf5739f848461640386616468565b6040518463ffffffff1660e01b815260040161642193929190618c35565b602060405180830381865afa15801561643c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190616460919061873c565b905092915050565b606060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663177c8d8a836040518263ffffffff1660e01b81526004016164c49190618ddb565b5f60405180830381865afa1580156164de573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906165069190618e96565b9050919050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c8642df84846040518363ffffffff1660e01b815260040161656a929190619627565b602060405180830381865afa158015616585573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906165a9919061873c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126165e3576165e26165c2565b5b8235905067ffffffffffffffff811115616600576165ff6165c6565b5b60208301915083600182028301111561661c5761661b6165ca565b5b9250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61664c82616623565b9050919050565b61665c81616642565b8114616666575f80fd5b50565b5f8135905061667781616653565b92915050565b5f819050919050565b61668f8161667d565b8114616699575f80fd5b50565b5f813590506166aa81616686565b92915050565b5f805f805f608086880312156166c9576166c86165ba565b5b5f86013567ffffffffffffffff8111156166e6576166e56165be565b5b6166f2888289016165ce565b9550955050602061670588828901616669565b93505060406167168882890161669c565b925050606061672788828901616669565b9150509295509295909350565b61673d8161667d565b82525050565b5f6020820190506167565f830184616734565b92915050565b5f8060408385031215616772576167716165ba565b5b5f61677f85828601616669565b925050602061679085828601616669565b9150509250929050565b5f8115159050919050565b6167ae8161679a565b81146167b8575f80fd5b50565b5f813590506167c9816167a5565b92915050565b5f805f805f805f8060c0898b0312156167eb576167ea6165ba565b5b5f89013567ffffffffffffffff811115616808576168076165be565b5b6168148b828c016165ce565b9850985050602089013567ffffffffffffffff811115616837576168366165be565b5b6168438b828c016165ce565b965096505060406168568b828c0161669c565b94505060606168678b828c016167bb565b93505060806168788b828c016167bb565b92505060a06168898b828c01616669565b9150509295985092959890939650565b5f805f805f80606087890312156168b3576168b26165ba565b5b5f87013567ffffffffffffffff8111156168d0576168cf6165be565b5b6168dc89828a016165ce565b9650965050602087013567ffffffffffffffff8111156168ff576168fe6165be565b5b61690b89828a016165ce565b9450945050604087013567ffffffffffffffff81111561692e5761692d6165be565b5b61693a89828a016165ce565b92509250509295509295509295565b5f805f8060608587031215616961576169606165ba565b5b5f85013567ffffffffffffffff81111561697e5761697d6165be565b5b61698a878288016165ce565b9450945050602061699d87828801616669565b92505060406169ae87828801616669565b91505092959194509250565b5f805f805f805f60e0888a0312156169d5576169d46165ba565b5b5f6169e28a828b01616669565b97505060206169f38a828b01616669565b9650506040616a048a828b01616669565b9550506060616a158a828b01616669565b9450506080616a268a828b01616669565b93505060a0616a378a828b01616669565b92505060c0616a488a828b01616669565b91505092959891949750929550565b5f805f8060608587031215616a6f57616a6e6165ba565b5b5f85013567ffffffffffffffff811115616a8c57616a8b6165be565b5b616a98878288016165ce565b94509450506020616aab8782880161669c565b9250506040616abc87828801616669565b91505092959194509250565b5f805f805f8060808789031215616ae257616ae16165ba565b5b5f87013567ffffffffffffffff811115616aff57616afe6165be565b5b616b0b89828a016165ce565b96509650506020616b1e89828a01616669565b945050604087013567ffffffffffffffff811115616b3f57616b3e6165be565b5b616b4b89828a016165ce565b93509350506060616b5e89828a01616669565b9150509295509295509295565b616b748161679a565b82525050565b5f602082019050616b8d5f830184616b6b565b92915050565b5f61ffff82169050919050565b616ba981616b93565b8114616bb3575f80fd5b50565b5f81359050616bc481616ba0565b92915050565b5f805f805f60608688031215616be357616be26165ba565b5b5f86013567ffffffffffffffff811115616c0057616bff6165be565b5b616c0c888289016165ce565b9550955050602086013567ffffffffffffffff811115616c2f57616c2e6165be565b5b616c3b888289016165ce565b93509350506040616c4e88828901616bb6565b9150509295509295909350565b5f60208284031215616c7057616c6f6165ba565b5b5f616c7d84828501616669565b91505092915050565b5f805f805f60608688031215616c9f57616c9e6165ba565b5b5f86013567ffffffffffffffff811115616cbc57616cbb6165be565b5b616cc8888289016165ce565b9550955050602086013567ffffffffffffffff811115616ceb57616cea6165be565b5b616cf7888289016165ce565b93509350506040616d0a88828901616669565b9150509295509295909350565b5f805f805f805f805f805f60e08c8e031215616d3657616d356165ba565b5b5f8c013567ffffffffffffffff811115616d5357616d526165be565b5b616d5f8e828f016165ce565b9b509b505060208c013567ffffffffffffffff811115616d8257616d816165be565b5b616d8e8e828f016165ce565b995099505060408c013567ffffffffffffffff811115616db157616db06165be565b5b616dbd8e828f016165ce565b975097505060608c013567ffffffffffffffff811115616de057616ddf6165be565b5b616dec8e828f016165ce565b95509550506080616dff8e828f01616bb6565b93505060a0616e108e828f01616bb6565b92505060c0616e218e828f01616669565b9150509295989b509295989b9093969950565b5f8060408385031215616e4a57616e496165ba565b5b5f616e578582860161669c565b9250506020616e6885828601616669565b9150509250929050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b616ebc82616e76565b810181811067ffffffffffffffff82111715616edb57616eda616e86565b5b80604052505050565b5f616eed6165b1565b9050616ef98282616eb3565b919050565b5f67ffffffffffffffff821115616f1857616f17616e86565b5b616f2182616e76565b9050602081019050919050565b828183375f83830152505050565b5f616f4e616f4984616efe565b616ee4565b905082815260208101848484011115616f6a57616f69616e72565b5b616f75848285616f2e565b509392505050565b5f82601f830112616f9157616f906165c2565b5b8135616fa1848260208601616f3c565b91505092915050565b5f8060408385031215616fc057616fbf6165ba565b5b5f616fcd85828601616669565b925050602083013567ffffffffffffffff811115616fee57616fed6165be565b5b616ffa85828601616f7d565b9150509250929050565b5f805f805f806080878903121561701e5761701d6165ba565b5b5f87013567ffffffffffffffff81111561703b5761703a6165be565b5b61704789828a016165ce565b9650965050602087013567ffffffffffffffff81111561706a576170696165be565b5b61707689828a016165ce565b9450945050604061708989828a01616bb6565b925050606061709a89828a01616bb6565b9150509295509295509295565b5f805f80608085870312156170bf576170be6165ba565b5b5f6170cc87828801616669565b945050602085013567ffffffffffffffff8111156170ed576170ec6165be565b5b6170f987828801616f7d565b935050604085013567ffffffffffffffff81111561711a576171196165be565b5b61712687828801616f7d565b925050606061713787828801616669565b91505092959194509250565b5f8083601f840112617158576171576165c2565b5b8235905067ffffffffffffffff811115617175576171746165c6565b5b602083019150836001820283011115617191576171906165ca565b5b9250929050565b5f805f805f805f60c0888a0312156171b3576171b26165ba565b5b5f6171c08a828b01616669565b97505060206171d18a828b01616669565b96505060406171e28a828b0161669c565b95505060606171f38a828b0161669c565b94505060806172048a828b0161669c565b93505060a088013567ffffffffffffffff811115617225576172246165be565b5b6172318a828b01617143565b925092505092959891949750929550565b5f60208284031215617257576172566165ba565b5b5f617264848285016167bb565b91505092915050565b5f805f805f8060c08789031215617287576172866165ba565b5b5f87013567ffffffffffffffff8111156172a4576172a36165be565b5b6172b089828a01616f7d565b965050602087013567ffffffffffffffff8111156172d1576172d06165be565b5b6172dd89828a01616f7d565b955050604087013567ffffffffffffffff8111156172fe576172fd6165be565b5b61730a89828a01616f7d565b945050606061731b89828a01616bb6565b935050608061732c89828a01616bb6565b92505060a061733d89828a01616669565b9150509295509295509295565b5f80604083850312156173605761735f6165ba565b5b5f61736d8582860161669c565b925050602061737e8582860161669c565b9150509250929050565b5f805f805f805f60e0888a0312156173a3576173a26165ba565b5b5f88013567ffffffffffffffff8111156173c0576173bf6165be565b5b6173cc8a828b01616f7d565b975050602088013567ffffffffffffffff8111156173ed576173ec6165be565b5b6173f98a828b01616f7d565b965050604088013567ffffffffffffffff81111561741a576174196165be565b5b6174268a828b01616f7d565b95505060606174378a828b01616bb6565b94505060806174488a828b01616bb6565b93505060a06174598a828b0161669c565b92505060c061746a8a828b01616669565b91505092959891949750929550565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156174b0578082015181840152602081019050617495565b5f8484015250505050565b5f6174c582617479565b6174cf8185617483565b93506174df818560208601617493565b6174e881616e76565b840191505092915050565b5f6080820190508181035f83015261750b81876174bb565b9050818103602083015261751f81866174bb565b9050818103604083015261753381856174bb565b90506175426060830184616b6b565b95945050505050565b5f805f805f805f60e0888a031215617566576175656165ba565b5b5f88013567ffffffffffffffff811115617583576175826165be565b5b61758f8a828b01616f7d565b975050602088013567ffffffffffffffff8111156175b0576175af6165be565b5b6175bc8a828b01616f7d565b965050604088013567ffffffffffffffff8111156175dd576175dc6165be565b5b6175e98a828b01616f7d565b95505060606175fa8a828b01616bb6565b945050608061760b8a828b01616bb6565b93505060a061761c8a828b01616669565b92505060c061762d8a828b01616669565b91505092959891949750929550565b5f8060208385031215617652576176516165ba565b5b5f83013567ffffffffffffffff81111561766f5761766e6165be565b5b61767b858286016165ce565b92509250509250929050565b61769081616642565b82525050565b5f6080820190508181035f8301526176ae81876174bb565b905081810360208301526176c281866174bb565b90506176d16040830185617687565b6176de6060830184616734565b95945050505050565b5f805f805f805f6080888a031215617702576177016165ba565b5b5f88013567ffffffffffffffff81111561771f5761771e6165be565b5b61772b8a828b016165ce565b9750975050602088013567ffffffffffffffff81111561774e5761774d6165be565b5b61775a8a828b016165ce565b9550955050604088013567ffffffffffffffff81111561777d5761777c6165be565b5b6177898a828b016165ce565b9350935050606061779c8a828b016167bb565b91505092959891949750929550565b5f815190506177b981616653565b92915050565b5f602082840312156177d4576177d36165ba565b5b5f6177e1848285016177ab565b91505092915050565b7f63616e2062652063616c6c656420627920696e7465726661636520636f6e74725f8201527f616374206f6e6c79000000000000000000000000000000000000000000000000602082015250565b5f617844602883617483565b915061784f826177ea565b604082019050919050565b5f6020820190508181035f83015261787181617838565b9050919050565b7f6163636f756e74206973206e6f742061206f72672061646d696e206163636f755f8201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b5f6178d2602283617483565b91506178dd82617878565b604082019050919050565b5f6020820190508181035f8301526178ff816178c6565b9050919050565b7f696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c5f8201527f6c6f776564000000000000000000000000000000000000000000000000000000602082015250565b5f617960602583617483565b915061796b82617906565b604082019050919050565b5f6020820190508181035f83015261798d81617954565b9050919050565b5f61799f8385617483565b93506179ac838584616f2e565b6179b583616e76565b840190509392505050565b5f6060820190508181035f8301526179d9818688617994565b90506179e86020830185617687565b6179f56040830184616734565b95945050505050565b5f81519050617a0c81616686565b92915050565b5f60208284031215617a2757617a266165ba565b5b5f617a34848285016179fe565b91505092915050565b7f6163636f756e74206973206e6f742061206e6574776f726b2061646d696e20615f8201527f63636f756e740000000000000000000000000000000000000000000000000000602082015250565b5f617a97602683617483565b9150617aa282617a3d565b604082019050919050565b5f6020820190508181035f830152617ac481617a8b565b9050919050565b5f602082019050617ade5f830184617687565b92915050565b7f6f7267206e6f7420696e20617070726f766564207374617475730000000000005f82015250565b5f617b18601a83617483565b9150617b2382617ae4565b602082019050919050565b5f6020820190508181035f830152617b4581617b0c565b9050919050565b5f60a0820190508181035f830152617b6581898b617994565b90508181036020830152617b7a818789617994565b9050617b896040830186616734565b617b966060830185616b6b565b617ba36080830184616b6b565b98975050505050505050565b7f496e636f7272656374206e6574776f726b20626f6f74207374617475730000005f82015250565b5f617be3601d83617483565b9150617bee82617baf565b602082019050919050565b5f6020820190508181035f830152617c1081617bd7565b9050919050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680617c6557607f821691505b602082108103617c7857617c77617c21565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302617cda7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82617c9f565b617ce48683617c9f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f617d1f617d1a617d158461667d565b617cfc565b61667d565b9050919050565b5f819050919050565b617d3883617d05565b617d4c617d4482617d26565b848454617cab565b825550505050565b5f90565b617d60617d54565b617d6b818484617d2f565b505050565b5b81811015617d8e57617d835f82617d58565b600181019050617d71565b5050565b601f821115617dd357617da481617c7e565b617dad84617c90565b81016020851015617dbc578190505b617dd0617dc885617c90565b830182617d70565b50505b505050565b5f82821c905092915050565b5f617df35f1984600802617dd8565b1980831691505092915050565b5f617e0b8383617de4565b9150826002028217905092915050565b617e258383617c17565b67ffffffffffffffff811115617e3e57617e3d616e86565b5b617e488254617c4e565b617e53828285617d92565b5f601f831160018114617e80575f8415617e6e578287013590505b617e788582617e00565b865550617edf565b601f198416617e8e86617c7e565b5f5b82811015617eb557848901358255600182019150602085019450602081019050617e90565b86831015617ed25784890135617ece601f891682617de4565b8355505b6001600288020188555050505b50505050505050565b5f819050919050565b5f617f0b617f06617f0184617ee8565b617cfc565b61667d565b9050919050565b617f1b81617ef1565b82525050565b5f6060820190508181035f830152617f3a818688617994565b9050617f496020830185617687565b617f566040830184617f12565b95945050505050565b5f8154617f6b81617c4e565b617f758186617483565b9450600182165f8114617f8f5760018114617fa557617fd7565b60ff198316865281151560200286019350617fd7565b617fae85617c7e565b5f5b83811015617fcf57815481890152600182019150602081019050617fb0565b808801955050505b50505092915050565b50565b5f617fee5f83617483565b9150617ff982617fe0565b5f82019050919050565b5f819050919050565b5f61802661802161801c84618003565b617cfc565b61667d565b9050919050565b6180368161800c565b82525050565b5f60a0820190508181035f8301526180548188617f5f565b90508181036020830152618069818688617994565b9050818103604083015261807c81617fe3565b905061808b6060830185617687565b618098608083018461802d565b9695505050505050565b7f5f7065726d55706772616461626c652063616e6e6f7420626520616e20656d705f8201527f7479206164647265737300000000000000000000000000000000000000000000602082015250565b5f6180fc602a83617483565b9150618107826180a2565b604082019050919050565b5f6020820190508181035f830152618129816180f0565b9050919050565b7f5f6f72674d616e616765722063616e6e6f7420626520616e20656d70747920615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61818a602683617483565b915061819582618130565b604082019050919050565b5f6020820190508181035f8301526181b78161817e565b9050919050565b7f5f726f6c65734d616e616765722063616e6e6f7420626520616e20656d7074795f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f618218602883617483565b9150618223826181be565b604082019050919050565b5f6020820190508181035f8301526182458161820c565b9050919050565b7f5f6163636f756e744d616e616765722063616e6e6f7420626520616e20656d705f8201527f7479206164647265737300000000000000000000000000000000000000000000602082015250565b5f6182a6602a83617483565b91506182b18261824c565b604082019050919050565b5f6020820190508181035f8301526182d38161829a565b9050919050565b7f5f766f7465724d616e616765722063616e6e6f7420626520616e20656d7074795f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f618334602883617483565b915061833f826182da565b604082019050919050565b5f6020820190508181035f83015261836181618328565b9050919050565b7f5f6e6f64654d616e616765722063616e6e6f7420626520616e20656d707479205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f6183c2602783617483565b91506183cd82618368565b604082019050919050565b5f6020820190508181035f8301526183ef816183b6565b9050919050565b7f5f636f6e747261637457686974656c6973744d616e616765722063616e6e6f745f8201527f20626520616e20656d7074792061646472657373000000000000000000000000602082015250565b5f618450603483617483565b915061845b826183f6565b604082019050919050565b5f6020820190508181035f83015261847d81618444565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6184ba6184b56184b084618484565b617cfc565b61848d565b9050919050565b6184ca816184a0565b82525050565b5f6020820190506184e35f8301846184c1565b92915050565b5f6040820190508181035f830152618502818587617994565b90506185116020830184616734565b949350505050565b5f60a0820190508181035f8301526185318188617f5f565b90508181036020830152618546818688617994565b9050818103604083015261855981617fe3565b90506185686060830185617687565b6185756080830184616734565b9695505050505050565b7f6f726720646f6573206e6f7420657869737400000000000000000000000000005f82015250565b5f6185b3601283617483565b91506185be8261857f565b602082019050919050565b5f6020820190508181035f8301526185e0816185a7565b9050919050565b5f6186016185fc6185f784618484565b617cfc565b61667d565b9050919050565b618611816185e7565b82525050565b5f60808201905061862a5f830189617687565b818103602083015261863d818789617994565b90508181036040830152618652818587617994565b90506186616060830184618608565b979650505050505050565b5f60a0820190508181035f8301526186848188617f5f565b90508181036020830152618699818688617994565b905081810360408301526186ac81617fe3565b90506186bb6060830185617687565b6186c86080830184617f12565b9695505050505050565b6186db81616b93565b82525050565b5f6060820190508181035f8301526186fa818789617994565b9050818103602083015261870f818587617994565b905061871e60408301846186d2565b9695505050505050565b5f81519050618736816167a5565b92915050565b5f60208284031215618751576187506165ba565b5b5f61875e84828501618728565b91505092915050565b5f819050919050565b5f61878a61878561878084618767565b617cfc565b61667d565b9050919050565b61879a81618770565b82525050565b5f6060820190508181035f8301526187b9818688617994565b90506187c86020830185617687565b6187d56040830184618791565b95945050505050565b5f819050919050565b5f6188016187fc6187f7846187de565b617cfc565b61667d565b9050919050565b618811816187e7565b82525050565b5f60808201905061882a5f830187617687565b818103602083015261883c8186617f5f565b905081810360408301526188508185617f5f565b905061885f6060830184618808565b95945050505050565b5f6020820190508181035f8301526188808184617f5f565b905092915050565b5f6020820190508181035f8301526188a1818486617994565b90509392505050565b7f61646d696e20726f6c65732063616e6e6f742062652072656d6f7665640000005f82015250565b5f6188de601d83617483565b91506188e9826188aa565b602082019050919050565b5f6020820190508181035f83015261890b816188d2565b9050919050565b5f6040820190508181035f83015261892b818688617994565b90508181036020830152618940818486617994565b905095945050505050565b5f81905092915050565b5f618960838561894b565b935061896d838584616f2e565b82840190509392505050565b7f2e000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6189ad60018361894b565b91506189b882618979565b600182019050919050565b5f6189cf828688618955565b91506189da826189a1565b91506189e7828486618955565b915081905095945050505050565b5f60a0820190508181035f830152618a0e81898b617994565b90508181036020830152618a23818789617994565b9050618a3260408301866186d2565b618a3f60608301856186d2565b8181036080830152618a5181846174bb565b905098975050505050505050565b5f604082019050618a725f830185617687565b8181036020830152618a8481846174bb565b90509392505050565b5f60a0820190508181035f830152618aa681898b617994565b90508181036020830152618abb818789617994565b9050618aca60408301866186d2565b618ad760608301856186d2565b8181036080830152618ae98184617f5f565b905098975050505050505050565b5f8060408385031215618b0d57618b0c6165ba565b5b5f618b1a85828601618728565b9250506020618b2b858286016177ab565b9150509250929050565b5f6040820190508181035f830152618b4e818587617994565b9050618b5d6020830184617687565b949350505050565b7f6f7065726174696f6e2063616e6e6f7420626520706572666f726d65640000005f82015250565b5f618b99601d83617483565b9150618ba482618b65565b602082019050919050565b5f6020820190508181035f830152618bc681618b8d565b9050919050565b7f726f6c6520646f6573206e6f74206578697374730000000000000000000000005f82015250565b5f618c01601483617483565b9150618c0c82618bcd565b602082019050919050565b5f6020820190508181035f830152618c2e81618bf5565b9050919050565b5f6060820190508181035f830152618c4d81866174bb565b90508181036020830152618c6181856174bb565b90508181036040830152618c7581846174bb565b9050949350505050565b5f608082019050618c925f830187617687565b8181036020830152618ca481866174bb565b90508181036040830152618cb881856174bb565b9050618cc76060830184616b6b565b95945050505050565b5f604082019050618ce35f830185616734565b618cf06020830184616734565b9392505050565b5f618d09618d0484616efe565b616ee4565b905082815260208101848484011115618d2557618d24616e72565b5b618d30848285617493565b509392505050565b5f82601f830112618d4c57618d4b6165c2565b5b8151618d5c848260208601618cf7565b91505092915050565b5f8060408385031215618d7b57618d7a6165ba565b5b5f83015167ffffffffffffffff811115618d9857618d976165be565b5b618da485828601618d38565b925050602083015167ffffffffffffffff811115618dc557618dc46165be565b5b618dd185828601618d38565b9150509250929050565b5f6020820190508181035f830152618df381846174bb565b905092915050565b5f6080820190508181035f830152618e1381876174bb565b90508181036020830152618e2781866174bb565b90508181036040830152618e3b81856174bb565b9050618e4a6060830184616734565b95945050505050565b5f606082019050618e665f830186617687565b8181036020830152618e7881856174bb565b90508181036040830152618e8c81846174bb565b9050949350505050565b5f60208284031215618eab57618eaa6165ba565b5b5f82015167ffffffffffffffff811115618ec857618ec76165be565b5b618ed484828501618d38565b91505092915050565b5f60c0820190508181035f830152618ef581896174bb565b90508181036020830152618f0981886174bb565b9050618f1860408301876186d2565b618f2560608301866186d2565b8181036080830152618f3781856174bb565b9050618f4660a0830184618791565b979650505050505050565b5f6060820190508181035f830152618f698186617f5f565b9050618f786020830185616734565b618f856040830184616734565b949350505050565b5f60a0820190508181035f830152618fa58188617f5f565b90508181036020830152618fb98187617f5f565b9050618fc86040830186616734565b618fd56060830185616b6b565b618fe26080830184616b6b565b9695505050505050565b5f6040820190508181035f8301526190048185617f5f565b905081810360208301526190188184617f5f565b90509392505050565b7f4f7065726174696f6e206e6f7420616c6c6f77656400000000000000000000005f82015250565b5f619055601583617483565b915061906082619021565b602082019050919050565b5f6020820190508181035f83015261908281619049565b9050919050565b7f6f7065726174696f6e206e6f7420616c6c6f77656400000000000000000000005f82015250565b5f6190bd601583617483565b91506190c882619089565b602082019050919050565b5f6020820190508181035f8301526190ea816190b1565b9050919050565b5f60c0820190508181035f83015261910981896174bb565b9050818103602083015261911d81886174bb565b905061912c60408301876186d2565b61913960608301866186d2565b818103608083015261914b81856174bb565b905061915a60a0830184616734565b979650505050505050565b5f60c0820190508181035f83015261917d81896174bb565b9050818103602083015261919181886174bb565b90506191a060408301876186d2565b6191ad60608301866186d2565b81810360808301526191bf81856174bb565b90506191ce60a0830184617f12565b979650505050505050565b5f60a0820190508181035f8301526191f18188617f5f565b9050818103602083015261920581876174bb565b9050818103604083015261921981866174bb565b90506192286060830185617687565b6192356080830184618791565b9695505050505050565b5f60a0820190508181035f8301526192578188617f5f565b9050818103602083015261926b81876174bb565b9050818103604083015261927f81866174bb565b905061928e6060830185617687565b61929b6080830184618608565b9695505050505050565b5f60a0820190508181035f8301526192bd81886174bb565b905081810360208301526192d181876174bb565b90506192e060408301866186d2565b6192ed60608301856186d2565b81810360808301526192ff81846174bb565b90509695505050505050565b7f4f7065726174696f6e2063616e6e6f7420626520706572666f726d65640000005f82015250565b5f61933f601d83617483565b915061934a8261930b565b602082019050919050565b5f6020820190508181035f83015261936c81619333565b9050919050565b5f6080820190506193865f830187617687565b818103602083015261939881866174bb565b905081810360408301526193ac8185617f5f565b90506193bb6060830184618608565b95945050505050565b5f805f80608085870312156193dc576193db6165ba565b5b5f85015167ffffffffffffffff8111156193f9576193f86165be565b5b61940587828801618d38565b945050602085015167ffffffffffffffff811115619426576194256165be565b5b61943287828801618d38565b9350506040619443878288016177ab565b9250506060619454878288016179fe565b91505092959194509250565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f619494600e83617483565b915061949f82619460565b602082019050919050565b5f6020820190508181035f8301526194c181619488565b9050919050565b7f4e6f7468696e6720746f20617070726f766500000000000000000000000000005f82015250565b5f6194fc601283617483565b9150619507826194c8565b602082019050919050565b5f6020820190508181035f830152619529816194f0565b9050919050565b5f60a0820190508181035f8301526195488188617f5f565b9050818103602083015261955c81876174bb565b905061956b6040830186616734565b6195786060830185616b6b565b6195856080830184616b6b565b9695505050505050565b5f6040820190508181035f8301526195a781856174bb565b90506195b66020830184617687565b9392505050565b5f6040820190508181035f8301526195d581856174bb565b90506195e46020830184618808565b9392505050565b5f6060820190508181035f83015261960381866174bb565b90506196126020830185617687565b61961f6040830184616734565b949350505050565b5f6040820190508181035f83015261963f81856174bb565b905061964e6020830184616734565b939250505056fea2646970667358221220022cb4a730ee50ae06afafdb64b92c6c5155686e6d6ddda49244459a7046252664736f6c63430008180033", +} + // PermImplABI is the input ABI used to generate the binding from. -const PermImplABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_action\",\"type\":\"uint256\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateAccountStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_access\",\"type\":\"uint256\"},{\"name\":\"_voter\",\"type\":\"bool\"},{\"name\":\"_admin\",\"type\":\"bool\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addNewRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_nwAdminOrg\",\"type\":\"string\"},{\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"startBlacklistedAccountRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateOrgStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"assignAdminRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"updateNetworkBootStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"}],\"name\":\"connectionAllowed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveBlacklistedAccountRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNetworkBootStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addAdminAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"removeRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_pOrgId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"validateAccount\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"addAdminNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveAdminRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_sender\",\"type\":\"address\"},{\"name\":\"_target\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_gasPrice\",\"type\":\"uint256\"},{\"name\":\"_gasLimit\",\"type\":\"uint256\"},{\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"transactionAllowed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"isOrgAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveBlacklistedNodeRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_breadth\",\"type\":\"uint256\"},{\"name\":\"_depth\",\"type\":\"uint256\"}],\"name\":\"init\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveOrgStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_action\",\"type\":\"uint256\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPolicyDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isNetworkAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"startBlacklistedNodeRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getPendingOp\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_nwAdminOrg\",\"type\":\"string\"},{\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"name\":\"_oAdminRole\",\"type\":\"string\"},{\"name\":\"_networkBootStatus\",\"type\":\"bool\"}],\"name\":\"setMigrationPolicy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"},{\"name\":\"_orgManager\",\"type\":\"address\"},{\"name\":\"_rolesManager\",\"type\":\"address\"},{\"name\":\"_accountManager\",\"type\":\"address\"},{\"name\":\"_voterManager\",\"type\":\"address\"},{\"name\":\"_nodeManager\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_networkBootStatus\",\"type\":\"bool\"}],\"name\":\"PermissionsInitialized\",\"type\":\"event\"}]" +// Deprecated: Use PermImplMetaData.ABI instead. +var PermImplABI = PermImplMetaData.ABI var PermImplParsedABI, _ = abi.JSON(strings.NewReader(PermImplABI)) // PermImplBin is the compiled bytecode used for deploying new contracts. -var PermImplBin = "0x60806040526003600955600a805460ff191690553480156200002057600080fd5b5060405160c08062008587833981018060405260c08110156200004257600080fd5b508051602082015160408301516060840151608085015160a090950151600580546001600160a01b039687166001600160a01b03199182161790915560048054958716958216959095179094556001805493861693851693909317909255600080549185169184169190911790556002805494841694831694909417909355600380549290931691161790556184a980620000de6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063888430411161010f578063cc9ba6fa116100a2578063ecad01d511610071578063ecad01d5146117db578063f346a3a7146119a5578063f5ad584a14611b11578063f75f0a0614611c21576101e5565b8063cc9ba6fa146112c4578063d1aa0c2014611418578063d621d9571461143e578063e91b0e1914611608576101e5565b8063a042bf40116100de578063a042bf4014610e8b578063a5843f0814611055578063b554656414611078578063b9b7fe6c146110f5576101e5565b80638884304114610b7a5780638baa819114610bf9578063936421d514610d3d5780639bd3810114610dd7576101e5565b806345a59e5b116101875780635ca5adbe116101565780635ca5adbe146107b957806368a61273146108805780636b568d76146109fc5780638683c7fe14610ab0576101e5565b806345a59e5b1461064a5780634b20f45f1461070c5780634cbfa82e1461078b5780634fe57e7a14610793576101e5565b80631c249912116101c35780631c2499121461045e5780633cf5f33b146104dd578063404bf3eb1461055a57806344478e791461062e576101e5565b806304e81f1e146101ea5780631b04c276146102735780631b61022014610350575b600080fd5b6102716004803603608081101561020057600080fd5b810190602081018135600160201b81111561021a57600080fd5b82018360208201111561022c57600080fd5b803590602001918460018302840111600160201b8311171561024d57600080fd5b91935091506001600160a01b03813581169160208101359160409091013516611df4565b005b610271600480360360c081101561028957600080fd5b810190602081018135600160201b8111156102a357600080fd5b8201836020820111156102b557600080fd5b803590602001918460018302840111600160201b831117156102d657600080fd5b919390929091602081019035600160201b8111156102f357600080fd5b82018360208201111561030557600080fd5b803590602001918460018302840111600160201b8311171561032657600080fd5b919350915080359060208101351515906040810135151590606001356001600160a01b0316612047565b6102716004803603606081101561036657600080fd5b810190602081018135600160201b81111561038057600080fd5b82018360208201111561039257600080fd5b803590602001918460018302840111600160201b831117156103b357600080fd5b919390929091602081019035600160201b8111156103d057600080fd5b8201836020820111156103e257600080fd5b803590602001918460018302840111600160201b8311171561040357600080fd5b919390929091602081019035600160201b81111561042057600080fd5b82018360208201111561043257600080fd5b803590602001918460018302840111600160201b8311171561045357600080fd5b509092509050612309565b6102716004803603606081101561047457600080fd5b810190602081018135600160201b81111561048e57600080fd5b8201836020820111156104a057600080fd5b803590602001918460018302840111600160201b831117156104c157600080fd5b91935091506001600160a01b0381358116916020013516612448565b610271600480360360608110156104f357600080fd5b810190602081018135600160201b81111561050d57600080fd5b82018360208201111561051f57600080fd5b803590602001918460018302840111600160201b8311171561054057600080fd5b9193509150803590602001356001600160a01b0316612747565b6102716004803603608081101561057057600080fd5b810190602081018135600160201b81111561058a57600080fd5b82018360208201111561059c57600080fd5b803590602001918460018302840111600160201b831117156105bd57600080fd5b919390926001600160a01b0383351692604081019060200135600160201b8111156105e757600080fd5b8201836020820111156105f957600080fd5b803590602001918460018302840111600160201b8311171561061a57600080fd5b9193509150356001600160a01b0316612a4f565b610636612e0e565b604080519115158252519081900360200190f35b6106366004803603606081101561066057600080fd5b810190602081018135600160201b81111561067a57600080fd5b82018360208201111561068c57600080fd5b803590602001918460018302840111600160201b831117156106ad57600080fd5b919390929091602081019035600160201b8111156106ca57600080fd5b8201836020820111156106dc57600080fd5b803590602001918460018302840111600160201b831117156106fd57600080fd5b91935091503561ffff16612f6c565b6102716004803603606081101561072257600080fd5b810190602081018135600160201b81111561073c57600080fd5b82018360208201111561074e57600080fd5b803590602001918460018302840111600160201b8311171561076f57600080fd5b91935091506001600160a01b0381358116916020013516613070565b6106366132b9565b610271600480360360208110156107a957600080fd5b50356001600160a01b03166132c3565b610271600480360360608110156107cf57600080fd5b810190602081018135600160201b8111156107e957600080fd5b8201836020820111156107fb57600080fd5b803590602001918460018302840111600160201b8311171561081c57600080fd5b919390929091602081019035600160201b81111561083957600080fd5b82018360208201111561084b57600080fd5b803590602001918460018302840111600160201b8311171561086c57600080fd5b9193509150356001600160a01b03166135e4565b610271600480360360e081101561089657600080fd5b810190602081018135600160201b8111156108b057600080fd5b8201836020820111156108c257600080fd5b803590602001918460018302840111600160201b831117156108e357600080fd5b919390929091602081019035600160201b81111561090057600080fd5b82018360208201111561091257600080fd5b803590602001918460018302840111600160201b8311171561093357600080fd5b919390929091602081019035600160201b81111561095057600080fd5b82018360208201111561096257600080fd5b803590602001918460018302840111600160201b8311171561098357600080fd5b919390929091602081019035600160201b8111156109a057600080fd5b8201836020820111156109b257600080fd5b803590602001918460018302840111600160201b831117156109d357600080fd5b9193509150803561ffff90811691602081013590911690604001356001600160a01b0316613aa6565b61063660048036036040811015610a1257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610a3c57600080fd5b820183602082011115610a4e57600080fd5b803590602001918460018302840111600160201b83111715610a6f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613ef1945050505050565b61027160048036036080811015610ac657600080fd5b810190602081018135600160201b811115610ae057600080fd5b820183602082011115610af257600080fd5b803590602001918460018302840111600160201b83111715610b1357600080fd5b919390929091602081019035600160201b811115610b3057600080fd5b820183602082011115610b4257600080fd5b803590602001918460018302840111600160201b83111715610b6357600080fd5b919350915061ffff81358116916020013516613fdf565b61027160048036036060811015610b9057600080fd5b810190602081018135600160201b811115610baa57600080fd5b820183602082011115610bbc57600080fd5b803590602001918460018302840111600160201b83111715610bdd57600080fd5b91935091506001600160a01b0381358116916020013516614228565b61027160048036036080811015610c0f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610c3957600080fd5b820183602082011115610c4b57600080fd5b803590602001918460018302840111600160201b83111715610c6c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610cbe57600080fd5b820183602082011115610cd057600080fd5b803590602001918460018302840111600160201b83111715610cf157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b0316915061467d9050565b610636600480360360c0811015610d5357600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a0820135600160201b811115610d9957600080fd5b820183602082011115610dab57600080fd5b803590602001918460018302840111600160201b83111715610dcc57600080fd5b509092509050614b8b565b61063660048036036040811015610ded57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610e1757600080fd5b820183602082011115610e2957600080fd5b803590602001918460018302840111600160201b83111715610e4a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550615059945050505050565b610271600480360360c0811015610ea157600080fd5b810190602081018135600160201b811115610ebb57600080fd5b820183602082011115610ecd57600080fd5b803590602001918460018302840111600160201b83111715610eee57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610f4057600080fd5b820183602082011115610f5257600080fd5b803590602001918460018302840111600160201b83111715610f7357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610fc557600080fd5b820183602082011115610fd757600080fd5b803590602001918460018302840111600160201b83111715610ff857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b03169050615411565b6102716004803603604081101561106b57600080fd5b508035906020013561577d565b6102716004803603606081101561108e57600080fd5b810190602081018135600160201b8111156110a857600080fd5b8201836020820111156110ba57600080fd5b803590602001918460018302840111600160201b831117156110db57600080fd5b9193509150803590602001356001600160a01b0316615c4c565b610271600480360360e081101561110b57600080fd5b810190602081018135600160201b81111561112557600080fd5b82018360208201111561113757600080fd5b803590602001918460018302840111600160201b8311171561115857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156111aa57600080fd5b8201836020820111156111bc57600080fd5b803590602001918460018302840111600160201b831117156111dd57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561122f57600080fd5b82018360208201111561124157600080fd5b803590602001918460018302840111600160201b8311171561126257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff90811693506020830135169160408101359150606001356001600160a01b0316615fa5565b6112cc61619f565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b83811015611318578181015183820152602001611300565b50505050905090810190601f1680156113455780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015611378578181015183820152602001611360565b50505050905090810190601f1680156113a55780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156113d85781810151838201526020016113c0565b50505050905090810190601f1680156114055780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6106366004803603602081101561142e57600080fd5b50356001600160a01b0316616372565b610271600480360360c081101561145457600080fd5b810190602081018135600160201b81111561146e57600080fd5b82018360208201111561148057600080fd5b803590602001918460018302840111600160201b831117156114a157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156114f357600080fd5b82018360208201111561150557600080fd5b803590602001918460018302840111600160201b8311171561152657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561157857600080fd5b82018360208201111561158a57600080fd5b803590602001918460018302840111600160201b831117156115ab57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b03169050616576565b610271600480360360e081101561161e57600080fd5b810190602081018135600160201b81111561163857600080fd5b82018360208201111561164a57600080fd5b803590602001918460018302840111600160201b8311171561166b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156116bd57600080fd5b8201836020820111156116cf57600080fd5b803590602001918460018302840111600160201b831117156116f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561174257600080fd5b82018360208201111561175457600080fd5b803590602001918460018302840111600160201b8311171561177557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff833581169450602084013516926001600160a01b036040820135811693506060909101351690506169fb565b610271600480360360c08110156117f157600080fd5b810190602081018135600160201b81111561180b57600080fd5b82018360208201111561181d57600080fd5b803590602001918460018302840111600160201b8311171561183e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561189057600080fd5b8201836020820111156118a257600080fd5b803590602001918460018302840111600160201b831117156118c357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561191557600080fd5b82018360208201111561192757600080fd5b803590602001918460018302840111600160201b8311171561194857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b0316905061713d565b611a13600480360360208110156119bb57600080fd5b810190602081018135600160201b8111156119d557600080fd5b8201836020820111156119e757600080fd5b803590602001918460018302840111600160201b83111715611a0857600080fd5b5090925090506173e7565b604051808060200180602001856001600160a01b03166001600160a01b03168152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015611a72578181015183820152602001611a5a565b50505050905090810190601f168015611a9f5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015611ad2578181015183820152602001611aba565b50505050905090810190601f168015611aff5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61027160048036036080811015611b2757600080fd5b810190602081018135600160201b811115611b4157600080fd5b820183602082011115611b5357600080fd5b803590602001918460018302840111600160201b83111715611b7457600080fd5b919390929091602081019035600160201b811115611b9157600080fd5b820183602082011115611ba357600080fd5b803590602001918460018302840111600160201b83111715611bc457600080fd5b919390929091602081019035600160201b811115611be157600080fd5b820183602082011115611bf357600080fd5b803590602001918460018302840111600160201b83111715611c1457600080fd5b919350915035151561754f565b610271600480360360e0811015611c3757600080fd5b810190602081018135600160201b811115611c5157600080fd5b820183602082011115611c6357600080fd5b803590602001918460018302840111600160201b83111715611c8457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611cd657600080fd5b820183602082011115611ce857600080fd5b803590602001918460018302840111600160201b83111715611d0957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611d5b57600080fd5b820183602082011115611d6d57600080fd5b803590602001918460018302840111600160201b83111715611d8e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff833581169450602084013516926001600160a01b0360408201358116935060609091013516905061763e565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e4257600080fd5b505afa158015611e56573d6000803e3d6000fd5b505050506040513d6020811015611e6c57600080fd5b50516001600160a01b03163314611eb757604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611efb9250849150839050615059565b1515600114611f3e57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b8360011480611f4d5750836002145b80611f585750836003145b1515611f9857604051600160e51b62461bcd0281526004018080602001828103825260258152602001806183e96025913960400191505060405180910390fd5b600054604051600160e11b63425bd4250281526001600160a01b03878116602483015260448201879052606060048301908152606483018a90529216916384b7a84a918a918a918a918a918190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561202657600080fd5b505af115801561203a573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561209557600080fd5b505afa1580156120a9573d6000803e3d6000fd5b505050506040513d60208110156120bf57600080fd5b50516001600160a01b0316331461210a57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061214c9250839150617d129050565b15156001146121935760408051600160e51b62461bcd02815260206004820152601a60248201526000805160206183a9833981519152604482015290519081900360640190fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d79250849150839050615059565b151560011461221a57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b600154604051600160e01b637b713579028152604481018990528715156064820152861515608482015260a06004820190815260a482018d90526001600160a01b0390921691637b713579918e918e918e918e918e918e918e91908190602481019060c4018a8a80828437600083820152601f01601f191690910184810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561235757600080fd5b505afa15801561236b573d6000803e3d6000fd5b505050506040513d602081101561238157600080fd5b50516001600160a01b031633146123cc57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff16156124185760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b6124246006888861831a565b506124316007868661831a565b5061243e6008848461831a565b5050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561249657600080fd5b505afa1580156124aa573d6000803e3d6000fd5b505050506040513d60208110156124c057600080fd5b50516001600160a01b0316331461250b57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8061251581616372565b151560011461255857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b600054604051600160e11b63425bd4250281526001600160a01b03858116602483015260046044830181905260608382019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156125ea57600080fd5b505af11580156125fe573d6000803e3d6000fd5b505060028054604051600160e01b63e98ac22d0281526001600160a01b03888116606483015260066084830181905260a060048401908152815460001960018216156101000201169590950460a4840181905291909316955063e98ac22d945091928a928a928a928692909182916024820191604481019160c490910190869080156126cb5780601f106126a0576101008083540402835291602001916126cb565b820191906000526020600020905b8154815290600101906020018083116126ae57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561272857600080fd5b505af115801561273c573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561279557600080fd5b505afa1580156127a9573d6000803e3d6000fd5b505050506040513d60208110156127bf57600080fd5b50516001600160a01b0316331461280a57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8061281481616372565b151560011461285757604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b6004805460408051600160e01b630cc2749302815260248101879052928301908152604483018790526000926001600160a01b0390921691630cc27493918991899189918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156128dd57600080fd5b505af11580156128f1573d6000803e3d6000fd5b505050506040513d602081101561290757600080fd5b505160028054604051600160e01b63e98ac22d0281526000606482018190526084820185905260a0600483019081526006805460001960018216156101000201169590950460a484018190529596506001600160a01b039093169463e98ac22d94938c938c939289929182916024820191604481019160c4909101908a9080156129d25780601f106129a7576101008083540402835291602001916129d2565b820191906000526020600020905b8154815290600101906020018083116129b557829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a9d57600080fd5b505afa158015612ab1573d6000803e3d6000fd5b505050506040513d6020811015612ac757600080fd5b50516001600160a01b03163314612b1257604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b549250839150617e019050565b1515600114612ba55760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b81612baf81616372565b1515600114612bf257604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b600054604051600160e01b63e3483a9d0281526001600160a01b0388811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d938b938e938e938d938d9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612cb557600080fd5b505af1158015612cc9573d6000803e3d6000fd5b505060028054604051600160e01b63e98ac22d0281526001600160a01b038b8116606483015260046084830181905260a08382019081526006805460001960018216156101000201169690960460a4850181905292909416965063e98ac22d95508e938e938e9382916024810191604482019160c401908a908015612d8f5780601f10612d6457610100808354040283529160200191612d8f565b820191906000526020600020905b815481529060010190602001808311612d7257829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612dec57600080fd5b505af1158015612e00573d6000803e3d6000fd5b505050505050505050505050565b60055460408051600160e21b63395c945702815290516000926001600160a01b03169163e572515c916004808301926020929190829003018186803b158015612e5657600080fd5b505afa158015612e6a573d6000803e3d6000fd5b505050506040513d6020811015612e8057600080fd5b50516001600160a01b03163314612ecb57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff1615612f175760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b600a805460ff1916600117908190556040805160ff9290921615158252517f04f651be6fb8fc575d94591e56e9f6e66e33ef23e949765918b3bdae50c617cf9181900360200190a1600a5460ff1691505b5090565b600a5460009060ff161515612f8357506001613067565b600354604051600160e01b6345a59e5b02815261ffff84166044820152606060048201908152606482018890526001600160a01b03909216916345a59e5b91899189918991899189919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505097505050505050505060206040518083038186803b15801561303857600080fd5b505afa15801561304c573d6000803e3d6000fd5b505050506040513d602081101561306257600080fd5b505190505b95945050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130be57600080fd5b505afa1580156130d2573d6000803e3d6000fd5b505050506040513d60208110156130e857600080fd5b50516001600160a01b0316331461313357604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8061313d81616372565b151560011461318057604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261321a939092909183018282801561320d5780601f106131e25761010080835404028352916020019161320d565b820191906000526020600020905b8154815290600101906020018083116131f057829003601f168201915b5050505050836006617ec6565b156132b257600054604051600160e11b63425bd4250281526001600160a01b0385811660248301526005604483018190526060600484019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561272857600080fd5b5050505050565b600a5460ff165b90565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561331157600080fd5b505afa158015613325573d6000803e3d6000fd5b505050506040513d602081101561333b57600080fd5b50516001600160a01b0316331461338657604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff16156133d25760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261346c939092909183018282801561345f5780601f106134345761010080835404028352916020019161345f565b820191906000526020600020905b81548152906001019060200180831161344257829003601f168201915b5050505050836001617fc0565b600054604051600160e01b63e3483a9d0281526001600160a01b038481166004830190815260026064840181905260806024850190815260068054600019600182161561010002011683900460848701819052949096169563e3483a9d95899591946007949390929091604481019160a490910190879080156135305780601f1061350557610100808354040283529160200191613530565b820191906000526020600020905b81548152906001019060200180831161351357829003601f168201915b50508381038252855460026000196101006001841615020190911604808252602090910190869080156135a45780601f10613579576101008083540402835291602001916135a4565b820191906000526020600020905b81548152906001019060200180831161358757829003601f168201915b50509650505050505050600060405180830381600087803b1580156135c857600080fd5b505af11580156135dc573d6000803e3d6000fd5b505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561363257600080fd5b505afa158015613646573d6000803e3d6000fd5b505050506040513d602081101561365c57600080fd5b50516001600160a01b031633146136a757604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136e99250839150617d129050565b15156001146137305760408051600160e51b62461bcd02815260206004820152601a60248201526000805160206183a9833981519152604482015290519081900360640190fd5b8184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506137749250849150839050615059565b15156001146137b757604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b604080516020808201908152600780546002600019610100600184161502019091160493830184905292909182916060909101908490801561383a5780601f1061380f5761010080835404028352916020019161383a565b820191906000526020600020905b81548152906001019060200180831161381d57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120141580156139a7575060408051602080820190815260088054600260001961010060018416150201909116049383018490529290918291606090910190849080156139355780601f1061390a57610100808354040283529160200191613935565b820191906000526020600020905b81548152906001019060200180831161391857829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b15156139fd5760408051600160e51b62461bcd02815260206004820152601d60248201527f61646d696e20726f6c65732063616e6e6f742062652072656d6f766564000000604482015290519081900360640190fd5b60015460408051600160e11b63531a180902815260048101918252604481018a90526001600160a01b039092169163a6343012918b918b918b918b919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612dec57600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015613af457600080fd5b505afa158015613b08573d6000803e3d6000fd5b505050506040513d6020811015613b1e57600080fd5b50516001600160a01b03163314613b6957604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613bab9250839150617e019050565b1515600114613bfc5760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b818c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613c409250849150839050615059565b1515600114613c8357604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b600460009054906101000a90046001600160a01b03166001600160a01b0316631f9534808f8f8f8f6040518563ffffffff1660e01b81526004018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015613d3657600080fd5b505af1158015613d4a573d6000803e3d6000fd5b5050505060608e8e8e8e60405160200180858580828437600160f91b6017029201918252506001018383808284376040805191909301818103601f19018252909252509550508d1593506122f89250505057600354604051600160e01b634c57331102815261ffff808a1660448301528816606482015260a06004820190815260a482018d90526001600160a01b0390921691634c573311918e918e918e918e918e918e918a919081906024810190608481019060c4018b8b80828437600083820152601f01601f1916909101858103845289815260200190508989808284376000838201819052601f909101601f191690920186810384528751815287516020918201939189019250908190849084905b83811015613e74578181015183820152602001613e5c565b50505050905090810190601f168015613ea15780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b158015613ec857600080fd5b505af1158015613edc573d6000803e3d6000fd5b50505050505050505050505050505050505050565b6000805460408051600160e11b6335ab46bb0281526001600160a01b0386811660048301908152602483019384528651604484015286519190941693636b568d76938893889360649091019060208501908083838c5b83811015613f5f578181015183820152602001613f47565b50505050905090810190601f168015613f8c5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015613faa57600080fd5b505afa158015613fbe573d6000803e3d6000fd5b505050506040513d6020811015613fd457600080fd5b505190505b92915050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561402d57600080fd5b505afa158015614041573d6000803e3d6000fd5b505050506040513d602081101561405757600080fd5b50516001600160a01b031633146140a257604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff16156140ee5760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b600354604051600160e01b634530abe102815261ffff80861660448301528416606482015260a06004820190815260a482018990526001600160a01b0390921691634530abe1918a918a918a918a918a918a916006919081906024810190608481019060c4018b8b80828437600083820152601f01601f191690910185810384528981526020019050898980828437600083820152601f01601f1916909101858103835286546002600019610100600184161502019091160480825260209091019150869080156142005780601f106141d557610100808354040283529160200191614200565b820191906000526020600020905b8154815290600101906020018083116141e357829003601f168201915b50509a5050505050505050505050600060405180830381600087803b15801561202657600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561427657600080fd5b505afa15801561428a573d6000803e3d6000fd5b505050506040513d60208110156142a057600080fd5b50516001600160a01b031633146142eb57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b806142f581616372565b151560011461433857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526143d293909290918301828280156143c55780601f1061439a576101008083540402835291602001916143c5565b820191906000526020600020905b8154815290600101906020018083116143a857829003601f168201915b5050505050836004617ec6565b156132b25760008054604051600160e01b631d09dc930281526020600482019081526024820188905283926001600160a01b031691631d09dc93918a918a91908190604401848480828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561445257600080fd5b505af1158015614466573d6000803e3d6000fd5b505050506040513d604081101561447c57600080fd5b5080516020909101519092509050811561452a5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261452a939092909183018282801561451d5780601f106144f25761010080835404028352916020019161451d565b820191906000526020600020905b81548152906001019060200180831161450057829003601f168201915b5050505050826000617fc0565b6000805460408051600160e01b63c214e5e50281526001600160a01b03898116602483015260048201928352604482018b90529092169163c214e5e5918b918b918b918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156145af57600080fd5b505af11580156145c3573d6000803e3d6000fd5b505050506040513d60208110156145d957600080fd5b50519050801561243e5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261243e93909290918301828280156146705780601f1061464557610100808354040283529160200191614670565b820191906000526020600020905b81548152906001019060200180831161465357829003601f168201915b5050505050876001617fc0565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156146cb57600080fd5b505afa1580156146df573d6000803e3d6000fd5b505050506040513d60208110156146f557600080fd5b50516001600160a01b0316331461474057604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b808361474c8282615059565b151560011461478f57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b8461479981617d12565b15156001146147e05760408051600160e51b62461bcd02815260206004820152601a60248201526000805160206183a9833981519152604482015290519081900360640190fd5b6147ea8787613ef1565b15156001146148435760408051600160e51b62461bcd02815260206004820152601d60248201527f6f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b61484d8587618156565b15156001146148a65760408051600160e51b62461bcd02815260206004820152601460248201527f726f6c6520646f6573206e6f7420657869737473000000000000000000000000604482015290519081900360640190fd5b6001546000906001600160a01b031663be322e5487896148c581618171565b6040518463ffffffff1660e01b815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614919578181015183820152602001614901565b50505050905090810190601f1680156149465780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015614979578181015183820152602001614961565b50505050905090810190601f1680156149a65780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156149d95781810151838201526020016149c1565b50505050905090810190601f168015614a065780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015614a2757600080fd5b505afa158015614a3b573d6000803e3d6000fd5b505050506040513d6020811015614a5157600080fd5b505160008054604051600160e21b63050e95810281526001600160a01b038c81166004830190815285151560648401526080602484019081528d5160848501528d51969750919093169463143a5604948e948e948e948a9492939092604483019260a401916020890191908190849084905b83811015614adb578181015183820152602001614ac3565b50505050905090810190601f168015614b085780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015614b3b578181015183820152602001614b23565b50505050905090810190601f168015614b685780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612dec57600080fd5b600a5460009060ff161515614ba25750600161504e565b60005460408051600160e11b637ea7d02d0281526001600160a01b038b811660048301529151919092169163fd4fa05a916024808301926020929190829003018186803b158015614bf257600080fd5b505afa158015614c06573d6000803e3d6000fd5b505050506040513d6020811015614c1c57600080fd5b50516002141561504a576000805460408051600160e01b636acee5fd0281526001600160a01b038c81166004830152915160609485949390931692636acee5fd9260248082019391829003018186803b158015614c7857600080fd5b505afa158015614c8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015614cb557600080fd5b810190808051600160201b811115614ccc57600080fd5b82016020810184811115614cdf57600080fd5b8151600160201b811182820187101715614cf857600080fd5b50509291906020018051600160201b811115614d1357600080fd5b82016020810184811115614d2657600080fd5b8151600160201b811182820187101715614d3f57600080fd5b5050929190505050915091506060614d5683618171565b60048054604051600160e01b633fd62ae702815260209281018381528751602483015287519495506001600160a01b0390921693633fd62ae793889392839260449091019185019080838360005b83811015614dbc578181015183820152602001614da4565b50505050905090810190601f168015614de95780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015614e0657600080fd5b505afa158015614e1a573d6000803e3d6000fd5b505050506040513d6020811015614e3057600080fd5b50511561504657614e408b616372565b80614e505750614e508b84615059565b15614e61576001935050505061504e565b60016001600160a01b038b161515614e7b57506002614e85565b8515614e85575060035b600154604051600160e11b6368fbbc33028152606481018390526080600482019081528551608483015285516001600160a01b039093169263d1f778669287928992889288929182916024810191604482019160a4019060208a019080838360005b83811015614eff578181015183820152602001614ee7565b50505050905090810190601f168015614f2c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015614f5f578181015183820152602001614f47565b50505050905090810190601f168015614f8c5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015614fbf578181015183820152602001614fa7565b50505050905090810190601f168015614fec5780820380516001836020036101000a031916815260200191505b5097505050505050505060206040518083038186803b15801561500e57600080fd5b505afa158015615022573d6000803e3d6000fd5b505050506040513d602081101561503857600080fd5b5051945061504e9350505050565b5050505b5060005b979650505050505050565b600080546001600160a01b031663e8b42bf4848461507681618171565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156150de5781810151838201526020016150c6565b50505050905090810190601f16801561510b5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561513e578181015183820152602001615126565b50505050905090810190601f16801561516b5780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b15801561518b57600080fd5b505afa15801561519f573d6000803e3d6000fd5b505050506040513d60208110156151b557600080fd5b5051156151c457506001613fd9565b6001546000805460408051600160e01b6381d66b230281526001600160a01b03888116600483015291519482169463be322e549493909216926381d66b2392602480840193829003018186803b15801561521d57600080fd5b505afa158015615231573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561525a57600080fd5b810190808051600160201b81111561527157600080fd5b8201602081018481111561528457600080fd5b8151600160201b81118282018710171561529d57600080fd5b5050929190505050846152af86618171565b6040518463ffffffff1660e01b815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b838110156153035781810151838201526020016152eb565b50505050905090810190601f1680156153305780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b8381101561536357818101518382015260200161534b565b50505050905090810190601f1680156153905780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156153c35781810151838201526020016153ab565b50505050905090810190601f1680156153f05780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015613faa57600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561545f57600080fd5b505afa158015615473573d6000803e3d6000fd5b505050506040513d602081101561548957600080fd5b50516001600160a01b031633146154d457604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b806154de81616372565b151560011461552157604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526155bb93909290918301828280156155ae5780601f10615583576101008083540402835291602001916155ae565b820191906000526020600020905b81548152906001019060200180831161559157829003601f168201915b5050505050836005617ec6565b1561577457600360009054906101000a90046001600160a01b03166001600160a01b03166337d50b27878787878c60056040518763ffffffff1660e01b81526004018080602001806020018761ffff1661ffff1681526020018661ffff1661ffff1681526020018060200185815260200184810384528a818151815260200191508051906020019080838360005b83811015615661578181015183820152602001615649565b50505050905090810190601f16801561568e5780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b838110156156c15781810151838201526020016156a9565b50505050905090810190601f1680156156ee5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015615721578181015183820152602001615709565b50505050905090810190601f16801561574e5780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b15801561202657600080fd5b50505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156157cb57600080fd5b505afa1580156157df573d6000803e3d6000fd5b505050506040513d60208110156157f557600080fd5b50516001600160a01b0316331461584057604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff161561588c5760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b60048054604051600160e01b639e58eb9f028152602481018690526044810185905260609281019283526006805460026000196001831615610100020190911604606483018190526001600160a01b0390931693639e58eb9f93919288928892918291608490910190869080156159445780601f1061591957610100808354040283529160200191615944565b820191906000526020600020905b81548152906001019060200180831161592757829003601f168201915b5050945050505050600060405180830381600087803b15801561596657600080fd5b505af115801561597a573d6000803e3d6000fd5b505060018054600954604051600160e01b637b71357902815260448101829052606481018490526084810184905260a0600482019081526007805460026000198289161561010002019091160460a484018190526001600160a01b039095169750637b71357996509460069490928392918291602481019160c49091019089908015615a475780601f10615a1c57610100808354040283529160200191615a47565b820191906000526020600020905b815481529060010190602001808311615a2a57829003601f168201915b5050838103825287546002600019610100600184161502019091160480825260209091019088908015615abb5780601f10615a9057610100808354040283529160200191615abb565b820191906000526020600020905b815481529060010190602001808311615a9e57829003601f168201915b5050975050505050505050600060405180830381600087803b158015615ae057600080fd5b505af1158015615af4573d6000803e3d6000fd5b505060005460408051600160e01b63cef7f6af028152600481019182526007805460026000196001831615610100020190911604604483018190526001600160a01b03909416955063cef7f6af94509260089291829160248201916064019086908015615ba25780601f10615b7757610100808354040283529160200191615ba2565b820191906000526020600020905b815481529060010190602001808311615b8557829003601f168201915b5050838103825284546002600019610100600184161502019091160480825260209091019085908015615c165780601f10615beb57610100808354040283529160200191615c16565b820191906000526020600020905b815481529060010190602001808311615bf957829003601f168201915b5050945050505050600060405180830381600087803b158015615c3857600080fd5b505af1158015615774573d6000803e3d6000fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015615c9a57600080fd5b505afa158015615cae573d6000803e3d6000fd5b505050506040513d6020811015615cc457600080fd5b50516001600160a01b03163314615d0f57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b80615d1981616372565b1515600114615d5c57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b8260011480615d6b5750826002145b1515615dc15760408051600160e51b62461bcd02815260206004820152601560248201527f4f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b6000808460011415615dd95750600290506003615dea565b8460021415615dea57506003905060055b615e2b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508592506182ad915050565b1515600114615e845760408051600160e51b62461bcd02815260206004820152601560248201527f6f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152615f1d9390929091830182828015615f115780601f10615ee657610100808354040283529160200191615f11565b820191906000526020600020905b815481529060010190602001808311615ef457829003601f168201915b50505050508584617ec6565b15615774576004805460408051600160e01b6314f775f902815260248101899052928301908152604483018990526001600160a01b03909116916314f775f9918a918a918a918190606401858580828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561202657600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015615ff357600080fd5b505afa158015616007573d6000803e3d6000fd5b505050506040513d602081101561601d57600080fd5b50516001600160a01b0316331461606857604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b6160728188615059565b15156001146160b557604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b81600114806160c45750816002145b806160cf5750816003145b151561610f57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806183e96025913960400191505060405180910390fd5b600354604051600160e01b6337d50b2702815261ffff80871660448301528516606482015260a4810184905260c060048201908152885160c483015288516001600160a01b03909316926337d50b27928a928a928a928a928f928b9282916024820191608481019160e49091019060208c0190808383600083811015615661578181015183820152602001615649565b600a5460068054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260609485948594600094919360079360089360ff9091169286918301828280156162415780601f1061621657610100808354040283529160200191616241565b820191906000526020600020905b81548152906001019060200180831161622457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156162cf5780601f106162a4576101008083540402835291602001916162cf565b820191906000526020600020905b8154815290600101906020018083116162b257829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529598508794509250840190508282801561635d5780601f106163325761010080835404028352916020019161635d565b820191906000526020600020905b81548152906001019060200180831161634057829003601f168201915b50505050509150935093509350935090919293565b604080516020808201908152600780546002600019610100600184161502019091160493830184905260009390928291606090910190849080156163f75780601f106163cc576101008083540402835291602001916163f7565b820191906000526020600020905b8154815290600101906020018083116163da57829003601f168201915b505060408051601f19818403018152828252805160209091012060008054600160e01b6381d66b230285526001600160a01b038a8116600487015293519297509290921694506381d66b239350602480840193829003018186803b15801561645e57600080fd5b505afa158015616472573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561649b57600080fd5b810190808051600160201b8111156164b257600080fd5b820160208101848111156164c557600080fd5b8151600160201b8111828201871017156164de57600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561652657818101518382015260200161650e565b50505050905090810190601f1680156165535780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156165c457600080fd5b505afa1580156165d8573d6000803e3d6000fd5b505050506040513d60208110156165ee57600080fd5b50516001600160a01b0316331461663957604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8061664381616372565b151560011461668657604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b600360009054906101000a90046001600160a01b03166001600160a01b03166337d50b27878787878c60046040518763ffffffff1660e01b81526004018080602001806020018761ffff1661ffff1681526020018661ffff1661ffff1681526020018060200185815260200184810384528a818151815260200191508051906020019080838360005b8381101561672757818101518382015260200161670f565b50505050905090810190601f1680156167545780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b8381101561678757818101518382015260200161676f565b50505050905090810190601f1680156167b45780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156167e75781810151838201526020016167cf565b50505050905090810190601f1680156168145780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b15801561683a57600080fd5b505af115801561684e573d6000803e3d6000fd5b505060028054604051600160e01b63e98ac22d02815260006064820181905260056084830181905260a0600484019081526006805460001960018216156101000201169690960460a485018190526001600160a01b03909516975063e98ac22d96508e948e9482916024820191604481019160c4909101908a9080156169155780601f106168ea57610100808354040283529160200191616915565b820191906000526020600020905b8154815290600101906020018083116168f857829003601f168201915b505084810383528851815288516020918201918a019080838360005b83811015616949578181015183820152602001616931565b50505050905090810190601f1680156169765780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b838110156169a9578181015183820152602001616991565b50505050905090810190601f1680156169d65780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561202657600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a4957600080fd5b505afa158015616a5d573d6000803e3d6000fd5b505050506040513d6020811015616a7357600080fd5b50516001600160a01b03163314616abe57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460ff161515600114616b0b5760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b616b1481616372565b1515600114616b5757604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b60028054604051600160e01b63e98ac22d0281526001600160a01b03858116606483015260016084830181905260a06004840190815260068054600019818516156101000201169690960460a48501819052929094169463e98ac22d9490938d938d938a939092909182916024810191604482019160c401908a908015616c1f5780601f10616bf457610100808354040283529160200191616c1f565b820191906000526020600020905b815481529060010190602001808311616c0257829003601f168201915b505084810383528851815288516020918201918a019080838360005b83811015616c53578181015183820152602001616c3b565b50505050905090810190601f168015616c805780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b83811015616cb3578181015183820152602001616c9b565b50505050905090810190601f168015616ce05780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015616d0557600080fd5b505af1158015616d19573d6000803e3d6000fd5b505060048054604051600160e01b63f9953de502815260209281018381528c5160248301528c516001600160a01b03909316955063f9953de594508c93909283926044019185019080838360005b83811015616d7f578181015183820152602001616d67565b50505050905090810190601f168015616dac5780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b158015616dcb57600080fd5b505af1158015616ddf573d6000803e3d6000fd5b5050600354604051600160e01b63549583df02815261ffff80891660448301528716606482015260a0600482019081528a5160a48301528a516001600160a01b03909316945063549583df93508a928a928a928a928f9282916024820191608481019160c49091019060208b019080838360005b83811015616e6b578181015183820152602001616e53565b50505050905090810190601f168015616e985780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015616ecb578181015183820152602001616eb3565b50505050905090810190601f168015616ef85780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015616f2b578181015183820152602001616f13565b50505050905090810190601f168015616f585780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015616f7d57600080fd5b505af1158015616f91573d6000803e3d6000fd5b50505050616f9f8288613ef1565b1515600114616ff85760408051600160e51b62461bcd02815260206004820152601d60248201527f4f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b60008054604051600160e01b63e3483a9d0281526001600160a01b03858116600483019081526001606484018190526080602485019081528d5160848601528d51939095169563e3483a9d9589958f9560089593604483019260a4019160208901918190849084905b83811015617079578181015183820152602001617061565b50505050905090810190601f1680156170a65780820380516001836020036101000a031916815260200191505b508381038252855460026000196101006001841615020190911604808252602090910190869080156171195780601f106170ee57610100808354040283529160200191617119565b820191906000526020600020905b8154815290600101906020018083116170fc57829003601f168201915b50509650505050505050600060405180830381600087803b15801561202657600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561718b57600080fd5b505afa15801561719f573d6000803e3d6000fd5b505050506040513d60208110156171b557600080fd5b50516001600160a01b0316331461720057604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8561720a81617d12565b15156001146172515760408051600160e51b62461bcd02815260206004820152601a60248201526000805160206183a9833981519152604482015290519081900360640190fd5b61725b8288615059565b151560011461729e57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b600354604051600160e01b634c57331102815261ffff80871660448301528516606482015260a060048201908152885160a483015288516001600160a01b0390931692634c573311928a928a928a928a928f92909182916024820191608481019160c49091019060208b019080838360005b83811015617328578181015183820152602001617310565b50505050905090810190601f1680156173555780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015617388578181015183820152602001617370565b50505050905090810190601f1680156173b55780820380516001836020036101000a031916815260200191505b5084810382528551815285516020918201918701908083836000838110156169a9578181015183820152602001616991565b600254604051600160e21b62539ab302815260206004820190815260248201849052606092839260009283926001600160a01b03169163014e6acc9189918991908190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561746757600080fd5b505afa15801561747b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156174a457600080fd5b810190808051600160201b8111156174bb57600080fd5b820160208101848111156174ce57600080fd5b8151600160201b8111828201871017156174e757600080fd5b50509291906020018051600160201b81111561750257600080fd5b8201602081018481111561751557600080fd5b8151600160201b81118282018710171561752e57600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b6005546001600160a01b031633146175b15760408051600160e51b62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600a5460009060ff16156175fd5760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b6176096006898961831a565b506176166007878761831a565b506176236008858561831a565b5050600a805460ff1916911515919091179055505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561768c57600080fd5b505afa1580156176a0573d6000803e3d6000fd5b505050506040513d60208110156176b657600080fd5b50516001600160a01b0316331461770157604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b61770a81616372565b151560011461774d57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b6177588760016182ad565b15156001146177b15760408051600160e51b62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261784b939092909183018282801561783e5780601f106178135761010080835404028352916020019161783e565b820191906000526020600020905b81548152906001019060200180831161782157829003601f168201915b5050505050826001617ec6565b156157745760048054604051600160e11b637181418b02815260209281018381528a5160248301528a516001600160a01b039093169363e3028316938c9383926044909101919085019080838360005b838110156178b357818101518382015260200161789b565b50505050905090810190601f1680156178e05780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b1580156178ff57600080fd5b505af1158015617913573d6000803e3d6000fd5b505060018054600954604051600160e01b637b71357902815260448101829052606481018490526084810184905260a0600482019081526008805460026000198289161561010002019091160460a484018190526001600160a01b039095169750637b7135799650948e9490928392918291602481019160c490910190899080156179df5780601f106179b4576101008083540402835291602001916179df565b820191906000526020600020905b8154815290600101906020018083116179c257829003601f168201915b5050838103825287518152875160209182019189019080838360005b83811015617a135781810151838201526020016179fb565b50505050905090810190601f168015617a405780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015617a6457600080fd5b505af1158015617a78573d6000803e3d6000fd5b5050600354604051600160e21b633e0b822b02815261ffff80891660448301528716606482015260a0600482019081528a5160a48301528a516001600160a01b03909316945063f82e08ac93508a928a928a928a928f9282916024820191608481019160c49091019060208b019080838360005b83811015617b04578181015183820152602001617aec565b50505050905090810190601f168015617b315780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015617b64578181015183820152602001617b4c565b50505050905090810190601f168015617b915780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015617bc4578181015183820152602001617bac565b50505050905090810190601f168015617bf15780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015617c1657600080fd5b505af1158015617c2a573d6000803e3d6000fd5b50506000805460408051600160e01b63c214e5e50281526001600160a01b038881166024830152600482019283528d5160448301528d519316955063c214e5e594508c9388938392606401916020870191908190849084905b83811015617c9b578181015183820152602001617c83565b50505050905090810190601f168015617cc85780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b158015617ce857600080fd5b505af1158015617cfc573d6000803e3d6000fd5b505050506040513d602081101561273c57600080fd5b6004805460408051600160e01b638c8642df0281526002602482018190529381019182528451604482015284516000946001600160a01b0390941693638c8642df93879391929091829160649091019060208601908083838c5b83811015617d84578181015183820152602001617d6c565b50505050905090810190601f168015617db15780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015617dcf57600080fd5b505afa158015617de3573d6000803e3d6000fd5b505050506040513d6020811015617df957600080fd5b505192915050565b600480546040517fffe40d1d00000000000000000000000000000000000000000000000000000000815260209281018381528451602483015284516000946001600160a01b039094169363ffe40d1d9387939283926044909201918501908083838b5b83811015617e7c578181015183820152602001617e64565b50505050905090810190601f168015617ea95780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015617dcf57600080fd5b600254604051600160e21b632c084e190281526001600160a01b03848116602483015260448201849052606060048301908152865160648401528651600094929092169263b02138649288928892889282916084019060208701908083838d5b83811015617f3e578181015183820152602001617f26565b50505050905090810190601f168015617f6b5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015617f8c57600080fd5b505af1158015617fa0573d6000803e3d6000fd5b505050506040513d6020811015617fb657600080fd5b5051949350505050565b801561809a5760025460408051600160e01b635607395b0281526001600160a01b03858116602483015260048201928352865160448301528651931692635607395b9287928792829160640190602086019080838360005b83811015618030578181015183820152602001618018565b50505050905090810190601f16801561805d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561807d57600080fd5b505af1158015618091573d6000803e3d6000fd5b50505050618151565b60025460408051600160e11b632ce5eb7f0281526001600160a01b038581166024830152600482019283528651604483015286519316926359cbd6fe9287928792829160640190602086019080838360005b838110156181045781810151838201526020016180ec565b50505050905090810190601f1680156181315780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015615c3857600080fd5b505050565b6001546000906001600160a01b031663abf5739f84846152af815b60048054604051600160e11b630bbe46c502815260209281018381528451602483015284516060946001600160a01b039094169363177c8d8a93879392839260449092019185019080838360005b838110156181d75781810151838201526020016181bf565b50505050905090810190601f1680156182045780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561822157600080fd5b505afa158015618235573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561825e57600080fd5b810190808051600160201b81111561827557600080fd5b8201602081018481111561828857600080fd5b8151600160201b8111828201871017156182a157600080fd5b50909695505050505050565b6004805460408051600160e01b638c8642df028152602481018590529283019081528451604484015284516000936001600160a01b0390931692638c8642df9287928792829160649091019060208601908083838c83811015613f5f578181015183820152602001613f47565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061835b5782800160ff19823516178555618388565b82800160010185558215618388579182015b8281111561838857823582559160200191906001019061836d565b50612f68926132c09250905b80821115612f68576000815560010161839456fe6f7267206e6f7420696e20617070726f76656420737461747573000000000000496e636f7272656374206e6574776f726b20626f6f7420737461747573000000696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a72305820076e128f2df9e9b08b731798802e430db87855f1ea7dd2b592784c23ef6897aa0029" +// Deprecated: Use PermImplMetaData.Bin instead. +var PermImplBin = PermImplMetaData.Bin // DeployPermImpl deploys a new Ethereum contract, binding an instance of PermImpl to it. -func DeployPermImpl(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address, _orgManager common.Address, _rolesManager common.Address, _accountManager common.Address, _voterManager common.Address, _nodeManager common.Address) (common.Address, *types.Transaction, *PermImpl, error) { - parsed, err := abi.JSON(strings.NewReader(PermImplABI)) +func DeployPermImpl(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *PermImpl, error) { + parsed, err := PermImplMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PermImplBin), backend, _permUpgradable, _orgManager, _rolesManager, _accountManager, _voterManager, _nodeManager) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PermImplBin), backend) if err != nil { return common.Address{}, nil, nil, err } @@ -221,6 +234,37 @@ func (_PermImpl *PermImplCallerSession) ConnectionAllowed(_enodeId string, _ip s return _PermImpl.Contract.ConnectionAllowed(&_PermImpl.CallOpts, _enodeId, _ip, _port) } +// GetAccessLevelForUnconfiguredAccount is a free data retrieval call binding the contract method 0x0dca12f6. +// +// Solidity: function getAccessLevelForUnconfiguredAccount() view returns(uint256) +func (_PermImpl *PermImplCaller) GetAccessLevelForUnconfiguredAccount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _PermImpl.contract.Call(opts, &out, "getAccessLevelForUnconfiguredAccount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAccessLevelForUnconfiguredAccount is a free data retrieval call binding the contract method 0x0dca12f6. +// +// Solidity: function getAccessLevelForUnconfiguredAccount() view returns(uint256) +func (_PermImpl *PermImplSession) GetAccessLevelForUnconfiguredAccount() (*big.Int, error) { + return _PermImpl.Contract.GetAccessLevelForUnconfiguredAccount(&_PermImpl.CallOpts) +} + +// GetAccessLevelForUnconfiguredAccount is a free data retrieval call binding the contract method 0x0dca12f6. +// +// Solidity: function getAccessLevelForUnconfiguredAccount() view returns(uint256) +func (_PermImpl *PermImplCallerSession) GetAccessLevelForUnconfiguredAccount() (*big.Int, error) { + return _PermImpl.Contract.GetAccessLevelForUnconfiguredAccount(&_PermImpl.CallOpts) +} + // GetNetworkBootStatus is a free data retrieval call binding the contract method 0x4cbfa82e. // // Solidity: function getNetworkBootStatus() view returns(bool) @@ -486,6 +530,27 @@ func (_PermImpl *PermImplTransactorSession) AddAdminNode(_enodeId string, _ip st return _PermImpl.Contract.AddAdminNode(&_PermImpl.TransactOpts, _enodeId, _ip, _port, _raftport) } +// AddContractWhitelist is a paid mutator transaction binding the contract method 0x349582a0. +// +// Solidity: function addContractWhitelist(address _contractAddress, address _caller) returns() +func (_PermImpl *PermImplTransactor) AddContractWhitelist(opts *bind.TransactOpts, _contractAddress common.Address, _caller common.Address) (*types.Transaction, error) { + return _PermImpl.contract.Transact(opts, "addContractWhitelist", _contractAddress, _caller) +} + +// AddContractWhitelist is a paid mutator transaction binding the contract method 0x349582a0. +// +// Solidity: function addContractWhitelist(address _contractAddress, address _caller) returns() +func (_PermImpl *PermImplSession) AddContractWhitelist(_contractAddress common.Address, _caller common.Address) (*types.Transaction, error) { + return _PermImpl.Contract.AddContractWhitelist(&_PermImpl.TransactOpts, _contractAddress, _caller) +} + +// AddContractWhitelist is a paid mutator transaction binding the contract method 0x349582a0. +// +// Solidity: function addContractWhitelist(address _contractAddress, address _caller) returns() +func (_PermImpl *PermImplTransactorSession) AddContractWhitelist(_contractAddress common.Address, _caller common.Address) (*types.Transaction, error) { + return _PermImpl.Contract.AddContractWhitelist(&_PermImpl.TransactOpts, _contractAddress, _caller) +} + // AddNewRole is a paid mutator transaction binding the contract method 0x1b04c276. // // Solidity: function addNewRole(string _roleId, string _orgId, uint256 _access, bool _voter, bool _admin, address _caller) returns() @@ -738,6 +803,27 @@ func (_PermImpl *PermImplTransactorSession) Init(_breadth *big.Int, _depth *big. return _PermImpl.Contract.Init(&_PermImpl.TransactOpts, _breadth, _depth) } +// Initialize is a paid mutator transaction binding the contract method 0x35876476. +// +// Solidity: function initialize(address _permUpgradable, address _orgManager, address _rolesManager, address _accountManager, address _voterManager, address _nodeManager, address _contractWhitelistManager) returns() +func (_PermImpl *PermImplTransactor) Initialize(opts *bind.TransactOpts, _permUpgradable common.Address, _orgManager common.Address, _rolesManager common.Address, _accountManager common.Address, _voterManager common.Address, _nodeManager common.Address, _contractWhitelistManager common.Address) (*types.Transaction, error) { + return _PermImpl.contract.Transact(opts, "initialize", _permUpgradable, _orgManager, _rolesManager, _accountManager, _voterManager, _nodeManager, _contractWhitelistManager) +} + +// Initialize is a paid mutator transaction binding the contract method 0x35876476. +// +// Solidity: function initialize(address _permUpgradable, address _orgManager, address _rolesManager, address _accountManager, address _voterManager, address _nodeManager, address _contractWhitelistManager) returns() +func (_PermImpl *PermImplSession) Initialize(_permUpgradable common.Address, _orgManager common.Address, _rolesManager common.Address, _accountManager common.Address, _voterManager common.Address, _nodeManager common.Address, _contractWhitelistManager common.Address) (*types.Transaction, error) { + return _PermImpl.Contract.Initialize(&_PermImpl.TransactOpts, _permUpgradable, _orgManager, _rolesManager, _accountManager, _voterManager, _nodeManager, _contractWhitelistManager) +} + +// Initialize is a paid mutator transaction binding the contract method 0x35876476. +// +// Solidity: function initialize(address _permUpgradable, address _orgManager, address _rolesManager, address _accountManager, address _voterManager, address _nodeManager, address _contractWhitelistManager) returns() +func (_PermImpl *PermImplTransactorSession) Initialize(_permUpgradable common.Address, _orgManager common.Address, _rolesManager common.Address, _accountManager common.Address, _voterManager common.Address, _nodeManager common.Address, _contractWhitelistManager common.Address) (*types.Transaction, error) { + return _PermImpl.Contract.Initialize(&_PermImpl.TransactOpts, _permUpgradable, _orgManager, _rolesManager, _accountManager, _voterManager, _nodeManager, _contractWhitelistManager) +} + // RemoveRole is a paid mutator transaction binding the contract method 0x5ca5adbe. // // Solidity: function removeRole(string _roleId, string _orgId, address _caller) returns() @@ -759,6 +845,69 @@ func (_PermImpl *PermImplTransactorSession) RemoveRole(_roleId string, _orgId st return _PermImpl.Contract.RemoveRole(&_PermImpl.TransactOpts, _roleId, _orgId, _caller) } +// RevokeContractWhitelist is a paid mutator transaction binding the contract method 0x177d624f. +// +// Solidity: function revokeContractWhitelist(address _contractAddress, address _caller) returns() +func (_PermImpl *PermImplTransactor) RevokeContractWhitelist(opts *bind.TransactOpts, _contractAddress common.Address, _caller common.Address) (*types.Transaction, error) { + return _PermImpl.contract.Transact(opts, "revokeContractWhitelist", _contractAddress, _caller) +} + +// RevokeContractWhitelist is a paid mutator transaction binding the contract method 0x177d624f. +// +// Solidity: function revokeContractWhitelist(address _contractAddress, address _caller) returns() +func (_PermImpl *PermImplSession) RevokeContractWhitelist(_contractAddress common.Address, _caller common.Address) (*types.Transaction, error) { + return _PermImpl.Contract.RevokeContractWhitelist(&_PermImpl.TransactOpts, _contractAddress, _caller) +} + +// RevokeContractWhitelist is a paid mutator transaction binding the contract method 0x177d624f. +// +// Solidity: function revokeContractWhitelist(address _contractAddress, address _caller) returns() +func (_PermImpl *PermImplTransactorSession) RevokeContractWhitelist(_contractAddress common.Address, _caller common.Address) (*types.Transaction, error) { + return _PermImpl.Contract.RevokeContractWhitelist(&_PermImpl.TransactOpts, _contractAddress, _caller) +} + +// SetAccessLevelForUnconfiguredAccount is a paid mutator transaction binding the contract method 0x68f808e5. +// +// Solidity: function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel, address _caller) returns() +func (_PermImpl *PermImplTransactor) SetAccessLevelForUnconfiguredAccount(opts *bind.TransactOpts, _accessLevel *big.Int, _caller common.Address) (*types.Transaction, error) { + return _PermImpl.contract.Transact(opts, "setAccessLevelForUnconfiguredAccount", _accessLevel, _caller) +} + +// SetAccessLevelForUnconfiguredAccount is a paid mutator transaction binding the contract method 0x68f808e5. +// +// Solidity: function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel, address _caller) returns() +func (_PermImpl *PermImplSession) SetAccessLevelForUnconfiguredAccount(_accessLevel *big.Int, _caller common.Address) (*types.Transaction, error) { + return _PermImpl.Contract.SetAccessLevelForUnconfiguredAccount(&_PermImpl.TransactOpts, _accessLevel, _caller) +} + +// SetAccessLevelForUnconfiguredAccount is a paid mutator transaction binding the contract method 0x68f808e5. +// +// Solidity: function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel, address _caller) returns() +func (_PermImpl *PermImplTransactorSession) SetAccessLevelForUnconfiguredAccount(_accessLevel *big.Int, _caller common.Address) (*types.Transaction, error) { + return _PermImpl.Contract.SetAccessLevelForUnconfiguredAccount(&_PermImpl.TransactOpts, _accessLevel, _caller) +} + +// SetIpValidation is a paid mutator transaction binding the contract method 0x9fc666b2. +// +// Solidity: function setIpValidation(bool _isIpValidationEnabled) returns() +func (_PermImpl *PermImplTransactor) SetIpValidation(opts *bind.TransactOpts, _isIpValidationEnabled bool) (*types.Transaction, error) { + return _PermImpl.contract.Transact(opts, "setIpValidation", _isIpValidationEnabled) +} + +// SetIpValidation is a paid mutator transaction binding the contract method 0x9fc666b2. +// +// Solidity: function setIpValidation(bool _isIpValidationEnabled) returns() +func (_PermImpl *PermImplSession) SetIpValidation(_isIpValidationEnabled bool) (*types.Transaction, error) { + return _PermImpl.Contract.SetIpValidation(&_PermImpl.TransactOpts, _isIpValidationEnabled) +} + +// SetIpValidation is a paid mutator transaction binding the contract method 0x9fc666b2. +// +// Solidity: function setIpValidation(bool _isIpValidationEnabled) returns() +func (_PermImpl *PermImplTransactorSession) SetIpValidation(_isIpValidationEnabled bool) (*types.Transaction, error) { + return _PermImpl.Contract.SetIpValidation(&_PermImpl.TransactOpts, _isIpValidationEnabled) +} + // SetMigrationPolicy is a paid mutator transaction binding the contract method 0xf5ad584a. // // Solidity: function setMigrationPolicy(string _nwAdminOrg, string _nwAdminRole, string _oAdminRole, bool _networkBootStatus) returns() @@ -927,6 +1076,142 @@ func (_PermImpl *PermImplTransactorSession) UpdateOrgStatus(_orgId string, _acti return _PermImpl.Contract.UpdateOrgStatus(&_PermImpl.TransactOpts, _orgId, _action, _caller) } +// PermImplInitializedPermImplIterator is returned from FilterInitializedPermImpl and is used to iterate over the raw logs and unpacked data for InitializedPermImpl events raised by the PermImpl contract. +type PermImplInitializedPermImplIterator struct { + Event *PermImplInitializedPermImpl // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PermImplInitializedPermImplIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PermImplInitializedPermImpl) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PermImplInitializedPermImpl) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PermImplInitializedPermImplIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PermImplInitializedPermImplIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PermImplInitializedPermImpl represents a InitializedPermImpl event raised by the PermImpl contract. +type PermImplInitializedPermImpl struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitializedPermImpl is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PermImpl *PermImplFilterer) FilterInitializedPermImpl(opts *bind.FilterOpts) (*PermImplInitializedPermImplIterator, error) { + + logs, sub, err := _PermImpl.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PermImplInitializedPermImplIterator{contract: _PermImpl.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +var InitializedPermImplTopicHash = "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + +// WatchInitializedPermImpl is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PermImpl *PermImplFilterer) WatchInitializedPermImpl(opts *bind.WatchOpts, sink chan<- *PermImplInitializedPermImpl) (event.Subscription, error) { + + logs, sub, err := _PermImpl.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PermImplInitializedPermImpl) + if err := _PermImpl.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitializedPermImpl is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PermImpl *PermImplFilterer) ParseInitializedPermImpl(log types.Log) (*PermImplInitializedPermImpl, error) { + event := new(PermImplInitializedPermImpl) + if err := _PermImpl.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // PermImplPermissionsInitializedIterator is returned from FilterPermissionsInitialized and is used to iterate over the raw logs and unpacked data for PermissionsInitialized events raised by the PermImpl contract. type PermImplPermissionsInitializedIterator struct { Event *PermImplPermissionsInitialized // Event containing the contract specifics and raw log @@ -1059,5 +1344,6 @@ func (_PermImpl *PermImplFilterer) ParsePermissionsInitialized(log types.Log) (* if err := _PermImpl.contract.UnpackLog(event, "PermissionsInitialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/permission/v2/bind/permission_interface.go b/permission/v2/bind/permission_interface.go index 34a2fc1e8e..9e54524e06 100644 --- a/permission/v2/bind/permission_interface.go +++ b/permission/v2/bind/permission_interface.go @@ -4,6 +4,7 @@ package bind import ( + "errors" "math/big" "strings" @@ -17,6 +18,7 @@ import ( // Reference imports to suppress errors if they are not otherwise used. var ( + _ = errors.New _ = big.NewInt _ = strings.NewReader _ = ethereum.NotFound @@ -26,22 +28,33 @@ var ( _ = event.NewSubscription ) +// PermInterfaceMetaData contains all meta data concerning the PermInterface contract. +var PermInterfaceMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_acct\",\"type\":\"address\"}],\"name\":\"addAdminAccount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"addAdminNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"addContractWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_access\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_voter\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_admin\",\"type\":\"bool\"}],\"name\":\"addNewRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"addNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_pOrgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveBlacklistedAccountRecovery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"approveBlacklistedNodeRecovery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveOrg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"approveOrgStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"assignAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"}],\"name\":\"connectionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccessLevelForUnconfiguredAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNetworkBootStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getPendingOp\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPermissionsImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_breadth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_depth\",\"type\":\"uint256\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permImplUpgradeable\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isNetworkAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"isOrgAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"revokeContractWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_accessLevel\",\"type\":\"uint256\"}],\"name\":\"setAccessLevelForUnconfiguredAccount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isIpValidationEnabled\",\"type\":\"bool\"}],\"name\":\"setIpValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permImplementation\",\"type\":\"address\"}],\"name\":\"setPermImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nwAdminOrg\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"startBlacklistedAccountRecovery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"startBlacklistedNodeRecovery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"transactionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateAccountStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateNetworkBootStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"_port\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_raftport\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateOrgStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"validateAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506136ea8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610225575f3560e01c806358dcff711161012e578063a5843f08116100b6578063d1aa0c201161007a578063d1aa0c2014610601578063ea2f2dfe14610631578063ef5f71961461064d578063f346a3a714610669578063fa279d611461069c57610225565b8063a5843f0814610575578063a634301214610591578063a97914bf146105ad578063bb3b6e80146105c9578063c4d66de8146105e557610225565b80638683c7fe116100fd5780638683c7fe146104c157806391ba3f96146104dd578063936421d5146104f95780639bd38101146105295780639fc666b21461055957610225565b806358dcff711461043d5780635be9672c146104595780636b568d761461047557806384b7a84a146104a557610225565b80633f9be497116101b15780634cbfa82e116101805780634cbfa82e146103af5780634fe57e7a146103cd578063511bbd9f146103e9578063513a32771461040557806351f604c31461042157610225565b80633f9be4971461032957806343de646c1461034557806344478e791461036157806345a59e5b1461037f57610225565b80631b610220116101f85780631b6102201461029d5780632e125a6c146102b95780632f7f0a12146102d55780633965c04a146102f15780633e239b231461030d57610225565b806303ed6933146102295780630dca12f61461024757806310742cdb1461026557806316724c4414610281575b5f80fd5b6102316106b8565b60405161023e9190611e37565b60405180910390f35b61024f6106df565b60405161025c9190611e68565b60405180910390f35b61027f600480360381019061027a9190611ebc565b610772565b005b61029b60048036038101906102969190611f48565b6107fc565b005b6102b760048036038101906102b29190611fa5565b61088c565b005b6102d360048036038101906102ce91906121c4565b610923565b005b6102ef60048036038101906102ea91906122bd565b6109bc565b005b61030b60048036038101906103069190612378565b610a52565b005b61032760048036038101906103229190611f48565b610adc565b005b610343600480360381019061033e91906123a3565b610b6c565b005b61035f600480360381019061035a9190612480565b610c05565b005b610369610c9b565b604051610376919061252b565b60405180910390f35b61039960048036038101906103949190612544565b610d2f565b6040516103a6919061252b565b60405180910390f35b6103b7610ddb565b6040516103c4919061252b565b60405180910390f35b6103e760048036038101906103e29190611ebc565b610e6e565b005b61040360048036038101906103fe9190611ebc565b610ef6565b005b61041f600480360381019061041a91906125d5565b610fc7565b005b61043b600480360381019061043691906126dc565b611060565b005b61045760048036038101906104529190612793565b6110fc565b005b610473600480360381019061046e919061285e565b611192565b005b61048f600480360381019061048a91906128bb565b611222565b60405161049c919061252b565b60405180910390f35b6104bf60048036038101906104ba9190612918565b6112c8565b005b6104db60048036038101906104d69190612989565b61135b565b005b6104f760048036038101906104f29190612793565b6113ec565b005b610513600480360381019061050e9190612a7a565b611482565b604051610520919061252b565b60405180910390f35b610543600480360381019061053e91906128bb565b611534565b604051610550919061252b565b60405180910390f35b610573600480360381019061056e9190612b24565b6115da565b005b61058f600480360381019061058a9190612b4f565b611662565b005b6105ab60048036038101906105a69190612b8d565b6116ed565b005b6105c760048036038101906105c29190611f48565b611780565b005b6105e360048036038101906105de919061285e565b611810565b005b6105ff60048036038101906105fa9190611ebc565b6118a0565b005b61061b60048036038101906106169190611ebc565b611ac6565b604051610628919061252b565b60405180910390f35b61064b60048036038101906106469190611ebc565b611b66565b005b61066760048036038101906106629190612793565b611bf0565b005b610683600480360381019061067e9190612c0b565b611c86565b6040516106939493929190612cd0565b60405180910390f35b6106b660048036038101906106b191906125d5565b611d38565b005b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca12f66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610749573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076d9190612d35565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663177d624f82336040518363ffffffff1660e01b81526004016107cc929190612d60565b5f604051808303815f87803b1580156107e3575f80fd5b505af11580156107f5573d5f803e3d5ffd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388843041848484336040518563ffffffff1660e01b815260040161085a9493929190612db3565b5f604051808303815f87803b158015610871575f80fd5b505af1158015610883573d5f803e3d5ffd5b50505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b6102208787878787876040518763ffffffff1660e01b81526004016108ee96959493929190612df1565b5f604051808303815f87803b158015610905575f80fd5b505af1158015610917573d5f803e3d5ffd5b50505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368a61273878787878787336040518863ffffffff1660e01b81526004016109879796959493929190612e50565b5f604051808303815f87803b15801561099e575f80fd5b505af11580156109b0573d5f803e3d5ffd5b50505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638baa81918686868686336040518763ffffffff1660e01b8152600401610a1e96959493929190612ed9565b5f604051808303815f87803b158015610a35575f80fd5b505af1158015610a47573d5f803e3d5ffd5b505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368f808e582336040518363ffffffff1660e01b8152600401610aac929190612f2e565b5f604051808303815f87803b158015610ac3575f80fd5b505af1158015610ad5573d5f803e3d5ffd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b20f45f848484336040518563ffffffff1660e01b8152600401610b3a9493929190612db3565b5f604051808303815f87803b158015610b51575f80fd5b505af1158015610b63573d5f803e3d5ffd5b50505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9b7fe6c878787878787336040518863ffffffff1660e01b8152600401610bd09796959493929190612f55565b5f604051808303815f87803b158015610be7575f80fd5b505af1158015610bf9573d5f803e3d5ffd5b50505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663404bf3eb8686868686336040518763ffffffff1660e01b8152600401610c6796959493929190612fd7565b5f604051808303815f87803b158015610c7e575f80fd5b505af1158015610c90573d5f803e3d5ffd5b505050505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344478e796040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610d06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2a9190613040565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166345a59e5b87878787876040518663ffffffff1660e01b8152600401610d9195949392919061306b565b602060405180830381865afa158015610dac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd09190613040565b905095945050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cbfa82e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e699190613040565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fe57e7a826040518263ffffffff1660e01b8152600401610ec69190611e37565b5f604051808303815f87803b158015610edd575f80fd5b505af1158015610eef573d5f803e3d5ffd5b5050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c906130fc565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e91b0e19878787878787336040518863ffffffff1660e01b815260040161102b979695949392919061311a565b5f604051808303815f87803b158015611042575f80fd5b505af1158015611054573d5f803e3d5ffd5b50505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b04c27688888888888888336040518963ffffffff1660e01b81526004016110c698979695949392919061319c565b5f604051808303815f87803b1580156110dd575f80fd5b505af11580156110ef573d5f803e3d5ffd5b5050505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a042bf408686868686336040518763ffffffff1660e01b815260040161115e9695949392919061320d565b5f604051808303815f87803b158015611175575f80fd5b505af1158015611187573d5f803e3d5ffd5b505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b5546564848484336040518563ffffffff1660e01b81526004016111f09493929190613281565b5f604051808303815f87803b158015611207575f80fd5b505af1158015611219573d5f803e3d5ffd5b50505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b568d768585856040518463ffffffff1660e01b8152600401611280939291906132bf565b602060405180830381865afa15801561129b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bf9190613040565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304e81f1e85858585336040518663ffffffff1660e01b81526004016113289594939291906132ef565b5f604051808303815f87803b15801561133f575f80fd5b505af1158015611351573d5f803e3d5ffd5b5050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638683c7fe858585856040518563ffffffff1660e01b81526004016113b9949392919061333b565b5f604051808303815f87803b1580156113d0575f80fd5b505af11580156113e2573d5f803e3d5ffd5b5050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d621d9578686868686336040518763ffffffff1660e01b815260040161144e9695949392919061320d565b5f604051808303815f87803b158015611465575f80fd5b505af1158015611477573d5f803e3d5ffd5b505050505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663936421d5898989898989896040518863ffffffff1660e01b81526004016114e897969594939291906133c8565b602060405180830381865afa158015611503573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115279190613040565b9050979650505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639bd381018585856040518463ffffffff1660e01b8152600401611592939291906132bf565b602060405180830381865afa1580156115ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d19190613040565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fc666b2826040518263ffffffff1660e01b8152600401611632919061252b565b5f604051808303815f87803b158015611649575f80fd5b505af115801561165b573d5f803e3d5ffd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a5843f0883836040518363ffffffff1660e01b81526004016116bc929190613430565b5f604051808303815f87803b1580156116d3575f80fd5b505af11580156116e5573d5f803e3d5ffd5b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca5adbe85858585336040518663ffffffff1660e01b815260040161174d959493929190613457565b5f604051808303815f87803b158015611764575f80fd5b505af1158015611776573d5f803e3d5ffd5b5050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c249912848484336040518563ffffffff1660e01b81526004016117de9493929190612db3565b5f604051808303815f87803b1580156117f5575f80fd5b505af1158015611807573d5f803e3d5ffd5b50505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633cf5f33b848484336040518563ffffffff1660e01b815260040161186e9493929190613281565b5f604051808303815f87803b158015611885575f80fd5b505af1158015611897573d5f803e3d5ffd5b50505050505050565b5f6118a9611dd1565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156118f15750825b90505f60018367ffffffffffffffff1614801561192457505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611932575080155b15611969576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156119b6576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b906134e8565b60405180910390fd5b8560025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315611abe575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611ab5919061355b565b60405180910390a15b505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1aa0c20836040518263ffffffff1660e01b8152600401611b209190611e37565b602060405180830381865afa158015611b3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5f9190613040565b9050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663349582a082336040518363ffffffff1660e01b8152600401611bc0929190612d60565b5f604051808303815f87803b158015611bd7575f80fd5b505af1158015611be9573d5f803e3d5ffd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ecad01d58686868686336040518763ffffffff1660e01b8152600401611c529695949392919061320d565b5f604051808303815f87803b158015611c69575f80fd5b505af1158015611c7b573d5f803e3d5ffd5b505050505050505050565b6060805f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f346a3a787876040518363ffffffff1660e01b8152600401611ce5929190613574565b5f60405180830381865afa158015611cff573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611d279190613618565b935093509350935092959194509250565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f75f0a06878787878787336040518863ffffffff1660e01b8152600401611d9c979695949392919061311a565b5f604051808303815f87803b158015611db3575f80fd5b505af1158015611dc5573d5f803e3d5ffd5b50505050505050505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e2182611df8565b9050919050565b611e3181611e17565b82525050565b5f602082019050611e4a5f830184611e28565b92915050565b5f819050919050565b611e6281611e50565b82525050565b5f602082019050611e7b5f830184611e59565b92915050565b5f604051905090565b5f80fd5b5f80fd5b611e9b81611e17565b8114611ea5575f80fd5b50565b5f81359050611eb681611e92565b92915050565b5f60208284031215611ed157611ed0611e8a565b5b5f611ede84828501611ea8565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f0857611f07611ee7565b5b8235905067ffffffffffffffff811115611f2557611f24611eeb565b5b602083019150836001820283011115611f4157611f40611eef565b5b9250929050565b5f805f60408486031215611f5f57611f5e611e8a565b5b5f84013567ffffffffffffffff811115611f7c57611f7b611e8e565b5b611f8886828701611ef3565b93509350506020611f9b86828701611ea8565b9150509250925092565b5f805f805f8060608789031215611fbf57611fbe611e8a565b5b5f87013567ffffffffffffffff811115611fdc57611fdb611e8e565b5b611fe889828a01611ef3565b9650965050602087013567ffffffffffffffff81111561200b5761200a611e8e565b5b61201789828a01611ef3565b9450945050604087013567ffffffffffffffff81111561203a57612039611e8e565b5b61204689828a01611ef3565b92509250509295509295509295565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61209f82612059565b810181811067ffffffffffffffff821117156120be576120bd612069565b5b80604052505050565b5f6120d0611e81565b90506120dc8282612096565b919050565b5f67ffffffffffffffff8211156120fb576120fa612069565b5b61210482612059565b9050602081019050919050565b828183375f83830152505050565b5f61213161212c846120e1565b6120c7565b90508281526020810184848401111561214d5761214c612055565b5b612158848285612111565b509392505050565b5f82601f83011261217457612173611ee7565b5b813561218484826020860161211f565b91505092915050565b5f61ffff82169050919050565b6121a38161218d565b81146121ad575f80fd5b50565b5f813590506121be8161219a565b92915050565b5f805f805f8060c087890312156121de576121dd611e8a565b5b5f87013567ffffffffffffffff8111156121fb576121fa611e8e565b5b61220789828a01612160565b965050602087013567ffffffffffffffff81111561222857612227611e8e565b5b61223489828a01612160565b955050604087013567ffffffffffffffff81111561225557612254611e8e565b5b61226189828a01612160565b945050606087013567ffffffffffffffff81111561228257612281611e8e565b5b61228e89828a01612160565b935050608061229f89828a016121b0565b92505060a06122b089828a016121b0565b9150509295509295509295565b5f805f805f606086880312156122d6576122d5611e8a565b5b5f6122e388828901611ea8565b955050602086013567ffffffffffffffff81111561230457612303611e8e565b5b61231088828901611ef3565b9450945050604086013567ffffffffffffffff81111561233357612332611e8e565b5b61233f88828901611ef3565b92509250509295509295909350565b61235781611e50565b8114612361575f80fd5b50565b5f813590506123728161234e565b92915050565b5f6020828403121561238d5761238c611e8a565b5b5f61239a84828501612364565b91505092915050565b5f805f805f8060c087890312156123bd576123bc611e8a565b5b5f87013567ffffffffffffffff8111156123da576123d9611e8e565b5b6123e689828a01612160565b965050602087013567ffffffffffffffff81111561240757612406611e8e565b5b61241389828a01612160565b955050604087013567ffffffffffffffff81111561243457612433611e8e565b5b61244089828a01612160565b945050606061245189828a016121b0565b935050608061246289828a016121b0565b92505060a061247389828a01612364565b9150509295509295509295565b5f805f805f6060868803121561249957612498611e8a565b5b5f86013567ffffffffffffffff8111156124b6576124b5611e8e565b5b6124c288828901611ef3565b955095505060206124d588828901611ea8565b935050604086013567ffffffffffffffff8111156124f6576124f5611e8e565b5b61250288828901611ef3565b92509250509295509295909350565b5f8115159050919050565b61252581612511565b82525050565b5f60208201905061253e5f83018461251c565b92915050565b5f805f805f6060868803121561255d5761255c611e8a565b5b5f86013567ffffffffffffffff81111561257a57612579611e8e565b5b61258688828901611ef3565b9550955050602086013567ffffffffffffffff8111156125a9576125a8611e8e565b5b6125b588828901611ef3565b935093505060406125c8888289016121b0565b9150509295509295909350565b5f805f805f8060c087890312156125ef576125ee611e8a565b5b5f87013567ffffffffffffffff81111561260c5761260b611e8e565b5b61261889828a01612160565b965050602087013567ffffffffffffffff81111561263957612638611e8e565b5b61264589828a01612160565b955050604087013567ffffffffffffffff81111561266657612665611e8e565b5b61267289828a01612160565b945050606061268389828a016121b0565b935050608061269489828a016121b0565b92505060a06126a589828a01611ea8565b9150509295509295509295565b6126bb81612511565b81146126c5575f80fd5b50565b5f813590506126d6816126b2565b92915050565b5f805f805f805f60a0888a0312156126f7576126f6611e8a565b5b5f88013567ffffffffffffffff81111561271457612713611e8e565b5b6127208a828b01611ef3565b9750975050602088013567ffffffffffffffff81111561274357612742611e8e565b5b61274f8a828b01611ef3565b955095505060406127628a828b01612364565b93505060606127738a828b016126c8565b92505060806127848a828b016126c8565b91505092959891949750929550565b5f805f805f60a086880312156127ac576127ab611e8a565b5b5f86013567ffffffffffffffff8111156127c9576127c8611e8e565b5b6127d588828901612160565b955050602086013567ffffffffffffffff8111156127f6576127f5611e8e565b5b61280288828901612160565b945050604086013567ffffffffffffffff81111561282357612822611e8e565b5b61282f88828901612160565b9350506060612840888289016121b0565b9250506080612851888289016121b0565b9150509295509295909350565b5f805f6040848603121561287557612874611e8a565b5b5f84013567ffffffffffffffff81111561289257612891611e8e565b5b61289e86828701611ef3565b935093505060206128b186828701612364565b9150509250925092565b5f805f604084860312156128d2576128d1611e8a565b5b5f6128df86828701611ea8565b935050602084013567ffffffffffffffff811115612900576128ff611e8e565b5b61290c86828701611ef3565b92509250509250925092565b5f805f80606085870312156129305761292f611e8a565b5b5f85013567ffffffffffffffff81111561294d5761294c611e8e565b5b61295987828801611ef3565b9450945050602061296c87828801611ea8565b925050604061297d87828801612364565b91505092959194509250565b5f805f80608085870312156129a1576129a0611e8a565b5b5f85013567ffffffffffffffff8111156129be576129bd611e8e565b5b6129ca87828801612160565b945050602085013567ffffffffffffffff8111156129eb576129ea611e8e565b5b6129f787828801612160565b9350506040612a08878288016121b0565b9250506060612a19878288016121b0565b91505092959194509250565b5f8083601f840112612a3a57612a39611ee7565b5b8235905067ffffffffffffffff811115612a5757612a56611eeb565b5b602083019150836001820283011115612a7357612a72611eef565b5b9250929050565b5f805f805f805f60c0888a031215612a9557612a94611e8a565b5b5f612aa28a828b01611ea8565b9750506020612ab38a828b01611ea8565b9650506040612ac48a828b01612364565b9550506060612ad58a828b01612364565b9450506080612ae68a828b01612364565b93505060a088013567ffffffffffffffff811115612b0757612b06611e8e565b5b612b138a828b01612a25565b925092505092959891949750929550565b5f60208284031215612b3957612b38611e8a565b5b5f612b46848285016126c8565b91505092915050565b5f8060408385031215612b6557612b64611e8a565b5b5f612b7285828601612364565b9250506020612b8385828601612364565b9150509250929050565b5f805f8060408587031215612ba557612ba4611e8a565b5b5f85013567ffffffffffffffff811115612bc257612bc1611e8e565b5b612bce87828801611ef3565b9450945050602085013567ffffffffffffffff811115612bf157612bf0611e8e565b5b612bfd87828801611ef3565b925092505092959194509250565b5f8060208385031215612c2157612c20611e8a565b5b5f83013567ffffffffffffffff811115612c3e57612c3d611e8e565b5b612c4a85828601611ef3565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c8d578082015181840152602081019050612c72565b5f8484015250505050565b5f612ca282612c56565b612cac8185612c60565b9350612cbc818560208601612c70565b612cc581612059565b840191505092915050565b5f6080820190508181035f830152612ce88187612c98565b90508181036020830152612cfc8186612c98565b9050612d0b6040830185611e28565b612d186060830184611e59565b95945050505050565b5f81519050612d2f8161234e565b92915050565b5f60208284031215612d4a57612d49611e8a565b5b5f612d5784828501612d21565b91505092915050565b5f604082019050612d735f830185611e28565b612d806020830184611e28565b9392505050565b5f612d928385612c60565b9350612d9f838584612111565b612da883612059565b840190509392505050565b5f6060820190508181035f830152612dcc818688612d87565b9050612ddb6020830185611e28565b612de86040830184611e28565b95945050505050565b5f6060820190508181035f830152612e0a81888a612d87565b90508181036020830152612e1f818688612d87565b90508181036040830152612e34818486612d87565b9050979650505050505050565b612e4a8161218d565b82525050565b5f60e0820190508181035f830152612e68818a612c98565b90508181036020830152612e7c8189612c98565b90508181036040830152612e908188612c98565b90508181036060830152612ea48187612c98565b9050612eb36080830186612e41565b612ec060a0830185612e41565b612ecd60c0830184611e28565b98975050505050505050565b5f608082019050612eec5f830189611e28565b8181036020830152612eff818789612d87565b90508181036040830152612f14818587612d87565b9050612f236060830184611e28565b979650505050505050565b5f604082019050612f415f830185611e59565b612f4e6020830184611e28565b9392505050565b5f60e0820190508181035f830152612f6d818a612c98565b90508181036020830152612f818189612c98565b90508181036040830152612f958188612c98565b9050612fa46060830187612e41565b612fb16080830186612e41565b612fbe60a0830185611e59565b612fcb60c0830184611e28565b98975050505050505050565b5f6080820190508181035f830152612ff081888a612d87565b9050612fff6020830187611e28565b8181036040830152613012818587612d87565b90506130216060830184611e28565b979650505050505050565b5f8151905061303a816126b2565b92915050565b5f6020828403121561305557613054611e8a565b5b5f6130628482850161302c565b91505092915050565b5f6060820190508181035f830152613084818789612d87565b90508181036020830152613099818587612d87565b90506130a86040830184612e41565b9695505050505050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f6130e6600e83612c60565b91506130f1826130b2565b602082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b5f60e0820190508181035f830152613132818a612c98565b905081810360208301526131468189612c98565b9050818103604083015261315a8188612c98565b90506131696060830187612e41565b6131766080830186612e41565b61318360a0830185611e28565b61319060c0830184611e28565b98975050505050505050565b5f60c0820190508181035f8301526131b5818a8c612d87565b905081810360208301526131ca81888a612d87565b90506131d96040830187611e59565b6131e6606083018661251c565b6131f3608083018561251c565b61320060a0830184611e28565b9998505050505050505050565b5f60c0820190508181035f8301526132258189612c98565b905081810360208301526132398188612c98565b9050818103604083015261324d8187612c98565b905061325c6060830186612e41565b6132696080830185612e41565b61327660a0830184611e28565b979650505050505050565b5f6060820190508181035f83015261329a818688612d87565b90506132a96020830185611e59565b6132b66040830184611e28565b95945050505050565b5f6040820190506132d25f830186611e28565b81810360208301526132e5818486612d87565b9050949350505050565b5f6080820190508181035f830152613308818789612d87565b90506133176020830186611e28565b6133246040830185611e59565b6133316060830184611e28565b9695505050505050565b5f6080820190508181035f8301526133538187612c98565b905081810360208301526133678186612c98565b90506133766040830185612e41565b6133836060830184612e41565b95945050505050565b5f82825260208201905092915050565b5f6133a7838561338c565b93506133b4838584612111565b6133bd83612059565b840190509392505050565b5f60c0820190506133db5f83018a611e28565b6133e86020830189611e28565b6133f56040830188611e59565b6134026060830187611e59565b61340f6080830186611e59565b81810360a083015261342281848661339c565b905098975050505050505050565b5f6040820190506134435f830185611e59565b6134506020830184611e59565b9392505050565b5f6060820190508181035f830152613470818789612d87565b90508181036020830152613485818587612d87565b90506134946040830184611e28565b9695505050505050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f6134d2601b83612c60565b91506134dd8261349e565b602082019050919050565b5f6020820190508181035f8301526134ff816134c6565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f61354561354061353b84613506565b613522565b61350f565b9050919050565b6135558161352b565b82525050565b5f60208201905061356e5f83018461354c565b92915050565b5f6020820190508181035f83015261358d818486612d87565b90509392505050565b5f6135a86135a3846120e1565b6120c7565b9050828152602081018484840111156135c4576135c3612055565b5b6135cf848285612c70565b509392505050565b5f82601f8301126135eb576135ea611ee7565b5b81516135fb848260208601613596565b91505092915050565b5f8151905061361281611e92565b92915050565b5f805f80608085870312156136305761362f611e8a565b5b5f85015167ffffffffffffffff81111561364d5761364c611e8e565b5b613659878288016135d7565b945050602085015167ffffffffffffffff81111561367a57613679611e8e565b5b613686878288016135d7565b935050604061369787828801613604565b92505060606136a887828801612d21565b9150509295919450925056fea26469706673582212208b657cba55f78d573c72003ae34722ef2fa79622d3eadc80d0e980f01eb3be8c64736f6c63430008180033", +} + // PermInterfaceABI is the input ABI used to generate the binding from. -const PermInterfaceABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"getPermissionsImpl\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveAdminRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_nwAdminOrg\",\"type\":\"string\"},{\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_pOrgId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveBlacklistedAccountRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"assignAdminRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"updateNetworkBootStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"}],\"name\":\"connectionAllowed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNetworkBootStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"}],\"name\":\"addAdminAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_permImplementation\",\"type\":\"address\"}],\"name\":\"setPermImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_access\",\"type\":\"uint256\"},{\"name\":\"_voter\",\"type\":\"bool\"},{\"name\":\"_admin\",\"type\":\"bool\"}],\"name\":\"addNewRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"approveBlacklistedNodeRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"approveOrgStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"validateAccount\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateAccountStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"addAdminNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"startBlacklistedNodeRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_sender\",\"type\":\"address\"},{\"name\":\"_target\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_gasPrice\",\"type\":\"uint256\"},{\"name\":\"_gasLimit\",\"type\":\"uint256\"},{\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"transactionAllowed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"isOrgAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_breadth\",\"type\":\"uint256\"},{\"name\":\"_depth\",\"type\":\"uint256\"}],\"name\":\"init\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"startBlacklistedAccountRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateOrgStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isNetworkAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getPendingOp\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permImplUpgradeable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" +// Deprecated: Use PermInterfaceMetaData.ABI instead. +var PermInterfaceABI = PermInterfaceMetaData.ABI var PermInterfaceParsedABI, _ = abi.JSON(strings.NewReader(PermInterfaceABI)) // PermInterfaceBin is the compiled bytecode used for deploying new contracts. -var PermInterfaceBin = "0x608060405234801561001057600080fd5b506040516020806134518339810180604052602081101561003057600080fd5b5051600280546001600160a01b0319166001600160a01b039092169190911790556133f1806100606000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806358dcff711161010f578063a5843f08116100a2578063d1aa0c2011610071578063d1aa0c2014611673578063ef5f719614611699578063f346a3a714611858578063fa279d61146119c4576101e5565b8063a5843f08146114ad578063a6343012146114d0578063a97914bf1461158e578063bb3b6e8014611605576101e5565b80638683c7fe116100de5780638683c7fe1461109c57806391ba3f96146111d6578063936421d5146113955780639bd381011461142f576101e5565b806358dcff7114610d745780635be9672c14610f335780636b568d7614610fa157806384b7a84a1461101f576101e5565b806343de646c116101875780634fe57e7a116101565780634fe57e7a14610a90578063511bbd9f14610ab6578063513a327714610adc57806351f604c314610ca6576101e5565b806343de646c146108df57806344478e79146109aa57806345a59e5b146109c65780634cbfa82e14610a88576101e5565b80632e125a6c116101c35780632e125a6c146103955780632f7f0a12146105d95780633e239b23146106a75780633f9be4971461071e576101e5565b806303ed6933146101ea57806316724c441461020e5780631b61022014610287575b600080fd5b6101f2611b8e565b604080516001600160a01b039092168252519081900360200190f35b6102856004803603604081101561022457600080fd5b810190602081018135600160201b81111561023e57600080fd5b82018360208201111561025057600080fd5b803590602001918460018302840111600160201b8311171561027157600080fd5b9193509150356001600160a01b0316611b9d565b005b6102856004803603606081101561029d57600080fd5b810190602081018135600160201b8111156102b757600080fd5b8201836020820111156102c957600080fd5b803590602001918460018302840111600160201b831117156102ea57600080fd5b919390929091602081019035600160201b81111561030757600080fd5b82018360208201111561031957600080fd5b803590602001918460018302840111600160201b8311171561033a57600080fd5b919390929091602081019035600160201b81111561035757600080fd5b82018360208201111561036957600080fd5b803590602001918460018302840111600160201b8311171561038a57600080fd5b509092509050611c4c565b610285600480360360c08110156103ab57600080fd5b810190602081018135600160201b8111156103c557600080fd5b8201836020820111156103d757600080fd5b803590602001918460018302840111600160201b831117156103f857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561044a57600080fd5b82018360208201111561045c57600080fd5b803590602001918460018302840111600160201b8311171561047d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104cf57600080fd5b8201836020820111156104e157600080fd5b803590602001918460018302840111600160201b8311171561050257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561055457600080fd5b82018360208201111561056657600080fd5b803590602001918460018302840111600160201b8311171561058757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff8335811694506020909301359092169150611d439050565b610285600480360360608110156105ef57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561061957600080fd5b82018360208201111561062b57600080fd5b803590602001918460018302840111600160201b8311171561064c57600080fd5b919390929091602081019035600160201b81111561066957600080fd5b82018360208201111561067b57600080fd5b803590602001918460018302840111600160201b8311171561069c57600080fd5b509092509050611f52565b610285600480360360408110156106bd57600080fd5b810190602081018135600160201b8111156106d757600080fd5b8201836020820111156106e957600080fd5b803590602001918460018302840111600160201b8311171561070a57600080fd5b9193509150356001600160a01b0316612033565b610285600480360360c081101561073457600080fd5b810190602081018135600160201b81111561074e57600080fd5b82018360208201111561076057600080fd5b803590602001918460018302840111600160201b8311171561078157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156107d357600080fd5b8201836020820111156107e557600080fd5b803590602001918460018302840111600160201b8311171561080657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561085857600080fd5b82018360208201111561086a57600080fd5b803590602001918460018302840111600160201b8311171561088b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff833581169450602084013516926040013591506120c59050565b610285600480360360608110156108f557600080fd5b810190602081018135600160201b81111561090f57600080fd5b82018360208201111561092157600080fd5b803590602001918460018302840111600160201b8311171561094257600080fd5b919390926001600160a01b0383351692604081019060200135600160201b81111561096c57600080fd5b82018360208201111561097e57600080fd5b803590602001918460018302840111600160201b8311171561099f57600080fd5b509092509050612274565b6109b2612333565b604080519115158252519081900360200190f35b6109b2600480360360608110156109dc57600080fd5b810190602081018135600160201b8111156109f657600080fd5b820183602082011115610a0857600080fd5b803590602001918460018302840111600160201b83111715610a2957600080fd5b919390929091602081019035600160201b811115610a4657600080fd5b820183602082011115610a5857600080fd5b803590602001918460018302840111600160201b83111715610a7957600080fd5b91935091503561ffff166123b5565b6109b26124a1565b61028560048036036020811015610aa657600080fd5b50356001600160a01b0316612504565b61028560048036036020811015610acc57600080fd5b50356001600160a01b031661256d565b610285600480360360c0811015610af257600080fd5b810190602081018135600160201b811115610b0c57600080fd5b820183602082011115610b1e57600080fd5b803590602001918460018302840111600160201b83111715610b3f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610b9157600080fd5b820183602082011115610ba357600080fd5b803590602001918460018302840111600160201b83111715610bc457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460018302840111600160201b83111715610c4957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b031690506125f1565b610285600480360360a0811015610cbc57600080fd5b810190602081018135600160201b811115610cd657600080fd5b820183602082011115610ce857600080fd5b803590602001918460018302840111600160201b83111715610d0957600080fd5b919390929091602081019035600160201b811115610d2657600080fd5b820183602082011115610d3857600080fd5b803590602001918460018302840111600160201b83111715610d5957600080fd5b91935091508035906020810135151590604001351515612691565b610285600480360360a0811015610d8a57600080fd5b810190602081018135600160201b811115610da457600080fd5b820183602082011115610db657600080fd5b803590602001918460018302840111600160201b83111715610dd757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610e2957600080fd5b820183602082011115610e3b57600080fd5b803590602001918460018302840111600160201b83111715610e5c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610eae57600080fd5b820183602082011115610ec057600080fd5b803590602001918460018302840111600160201b83111715610ee157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff83358116945060209093013590921691506127869050565b61028560048036036040811015610f4957600080fd5b810190602081018135600160201b811115610f6357600080fd5b820183602082011115610f7557600080fd5b803590602001918460018302840111600160201b83111715610f9657600080fd5b91935091503561292f565b6109b260048036036040811015610fb757600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610fe157600080fd5b820183602082011115610ff357600080fd5b803590602001918460018302840111600160201b8311171561101457600080fd5b5090925090506129bc565b6102856004803603606081101561103557600080fd5b810190602081018135600160201b81111561104f57600080fd5b82018360208201111561106157600080fd5b803590602001918460018302840111600160201b8311171561108257600080fd5b91935091506001600160a01b038135169060200135612a74565b610285600480360360808110156110b257600080fd5b810190602081018135600160201b8111156110cc57600080fd5b8201836020820111156110de57600080fd5b803590602001918460018302840111600160201b831117156110ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561115157600080fd5b82018360208201111561116357600080fd5b803590602001918460018302840111600160201b8311171561118457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff8335811694506020909301359092169150612b2c9050565b610285600480360360a08110156111ec57600080fd5b810190602081018135600160201b81111561120657600080fd5b82018360208201111561121857600080fd5b803590602001918460018302840111600160201b8311171561123957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561128b57600080fd5b82018360208201111561129d57600080fd5b803590602001918460018302840111600160201b831117156112be57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561131057600080fd5b82018360208201111561132257600080fd5b803590602001918460018302840111600160201b8311171561134357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff8335811694506020909301359092169150612c629050565b6109b2600480360360c08110156113ab57600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a0820135600160201b8111156113f157600080fd5b82018360208201111561140357600080fd5b803590602001918460018302840111600160201b8311171561142457600080fd5b509092509050612cf7565b6109b26004803603604081101561144557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561146f57600080fd5b82018360208201111561148157600080fd5b803590602001918460018302840111600160201b831117156114a257600080fd5b509092509050612dde565b610285600480360360408110156114c357600080fd5b5080359060200135612e62565b610285600480360360408110156114e657600080fd5b810190602081018135600160201b81111561150057600080fd5b82018360208201111561151257600080fd5b803590602001918460018302840111600160201b8311171561153357600080fd5b919390929091602081019035600160201b81111561155057600080fd5b82018360208201111561156257600080fd5b803590602001918460018302840111600160201b8311171561158357600080fd5b509092509050612ed0565b610285600480360360408110156115a457600080fd5b810190602081018135600160201b8111156115be57600080fd5b8201836020820111156115d057600080fd5b803590602001918460018302840111600160201b831117156115f157600080fd5b9193509150356001600160a01b0316612f84565b6102856004803603604081101561161b57600080fd5b810190602081018135600160201b81111561163557600080fd5b82018360208201111561164757600080fd5b803590602001918460018302840111600160201b8311171561166857600080fd5b919350915035613016565b6109b26004803603602081101561168957600080fd5b50356001600160a01b03166130a3565b610285600480360360a08110156116af57600080fd5b810190602081018135600160201b8111156116c957600080fd5b8201836020820111156116db57600080fd5b803590602001918460018302840111600160201b831117156116fc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561174e57600080fd5b82018360208201111561176057600080fd5b803590602001918460018302840111600160201b8311171561178157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156117d357600080fd5b8201836020820111156117e557600080fd5b803590602001918460018302840111600160201b8311171561180657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff83358116945060209093013590921691506131269050565b6118c66004803603602081101561186e57600080fd5b810190602081018135600160201b81111561188857600080fd5b82018360208201111561189a57600080fd5b803590602001918460018302840111600160201b831117156118bb57600080fd5b5090925090506131bb565b604051808060200180602001856001600160a01b03166001600160a01b03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561192557818101518382015260200161190d565b50505050905090810190601f1680156119525780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561198557818101518382015260200161196d565b50505050905090810190601f1680156119b25780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b610285600480360360c08110156119da57600080fd5b810190602081018135600160201b8111156119f457600080fd5b820183602082011115611a0657600080fd5b803590602001918460018302840111600160201b83111715611a2757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611a7957600080fd5b820183602082011115611a8b57600080fd5b803590602001918460018302840111600160201b83111715611aac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611afe57600080fd5b820183602082011115611b1057600080fd5b803590602001918460018302840111600160201b83111715611b3157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b03169050613325565b6000546001600160a01b031690565b600054604051600160e01b63888430410281526001600160a01b03838116602483015233604483018190526060600484019081526064840187905291909316926388843041928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b505af1158015611c43573d6000803e3d6000fd5b50505050505050565b600054604051600160e51b62db0811028152606060048201908152606482018890526001600160a01b0390921691631b610220918991899189918991899189918190602481019060448101906084018a8a80828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b158015611d2357600080fd5b505af1158015611d37573d6000803e3d6000fd5b50505050505050505050565b60008054604051600160e01b6368a6127302815261ffff8086166084830152841660a48201523360c4820181905260e0600483019081528a5160e48401528a516001600160a01b03909416946368a61273948c948c948c948c948c948c9483926024820192604483019260648101926101049091019160208f01918190849084905b83811015611ddd578181015183820152602001611dc5565b50505050905090810190601f168015611e0a5780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b83811015611e3d578181015183820152602001611e25565b50505050905090810190601f168015611e6a5780820380516001836020036101000a031916815260200191505b5085810383528a5181528a516020918201918c019080838360005b83811015611e9d578181015183820152602001611e85565b50505050905090810190601f168015611eca5780820380516001836020036101000a031916815260200191505b5085810382528951815289516020918201918b019080838360005b83811015611efd578181015183820152602001611ee5565b50505050905090810190601f168015611f2a5780820380516001836020036101000a031916815260200191505b509b505050505050505050505050600060405180830381600087803b158015611d2357600080fd5b600054604051600160e01b638baa81910281526001600160a01b03878116600483019081523360648401819052608060248501908152608485018990529290941693638baa8191938a938a938a938a938a9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050505050505050565b600054604051600160e01b634b20f45f0281526001600160a01b0383811660248301523360448301819052606060048401908152606484018790529190931692634b20f45f928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b60008054604051600160e21b632e6dff9b02815261ffff80871660648301528516608482015260a481018490523360c4820181905260e0600483019081528a5160e48401528a516001600160a01b039094169463b9b7fe6c948c948c948c948c948c948c94839260248201926044830192610104019160208e0191908190849084905b83811015612160578181015183820152602001612148565b50505050905090810190601f16801561218d5780820380516001836020036101000a031916815260200191505b5084810383528a5181528a516020918201918c019080838360005b838110156121c05781810151838201526020016121a8565b50505050905090810190601f1680156121ed5780820380516001836020036101000a031916815260200191505b5084810382528951815289516020918201918b019080838360005b83811015612220578181015183820152602001612208565b50505050905090810190601f16801561224d5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b158015611d2357600080fd5b600054604051600160e01b63404bf3eb0281526001600160a01b038581166024830152336064830181905260806004840190815260848401899052919093169263404bf3eb9289928992899289928992918190604481019060a401898980828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561201457600080fd5b60008060009054906101000a90046001600160a01b03166001600160a01b03166344478e796040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561238457600080fd5b505af1158015612398573d6000803e3d6000fd5b505050506040513d60208110156123ae57600080fd5b5051905090565b60008054604051600160e01b6345a59e5b02815261ffff84166044820152606060048201908152606482018890526001600160a01b03909216916345a59e5b91899189918991899189919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505097505050505050505060206040518083038186803b15801561246b57600080fd5b505afa15801561247f573d6000803e3d6000fd5b505050506040513d602081101561249557600080fd5b50519695505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316634cbfa82e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f057600080fd5b505afa158015612398573d6000803e3d6000fd5b6000805460408051600160e11b6327f2bf3d0281526001600160a01b03858116600483015291519190921692634fe57e7a926024808201939182900301818387803b15801561255257600080fd5b505af1158015612566573d6000803e3d6000fd5b5050505050565b6002546001600160a01b031633146125cf5760408051600160e51b62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008054604051600160e01b63e91b0e1902815261ffff8087166064830152851660848201526001600160a01b0384811660a48301523360c4830181905260e0600484019081528b5160e48501528b51929094169463e91b0e19948c948c948c948c948c948c9492939092839260248201926044830192610104019160208e01919081908490849083811015612160578181015183820152602001612148565b600054604051600160e11b630d82613b02815260448101859052831515606482015282151560848201523360a4820181905260c06004830190815260c483018a90526001600160a01b0390931692631b04c276928b928b928b928b928b928b928b9291908190602481019060e4018b8b80828437600083820152601f01601f191690910184810383528981526020019050898980828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561276557600080fd5b505af1158015612779573d6000803e3d6000fd5b5050505050505050505050565b60008054604051600160e61b6302810afd02815261ffff8086166064830152841660848201523360a4820181905260c060048301908152895160c484015289516001600160a01b039094169463a042bf40948b948b948b948b948b949293919283926024810192604482019260e49092019160208d01918190849084905b8381101561281c578181015183820152602001612804565b50505050905090810190601f1680156128495780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b8381101561287c578181015183820152602001612864565b50505050905090810190601f1680156128a95780820380516001836020036101000a031916815260200191505b5084810382528851815288516020918201918a019080838360005b838110156128dc5781810151838201526020016128c4565b50505050905090810190601f1680156129095780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b15801561201457600080fd5b600054604051600160e21b632d551959028152602481018390523360448201819052606060048301908152606483018690526001600160a01b039093169263b5546564928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b6000805460408051600160e11b6335ab46bb0281526001600160a01b03878116600483019081526024830193845260448301879052931692636b568d76928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015612a4057600080fd5b505afa158015612a54573d6000803e3d6000fd5b505050506040513d6020811015612a6a57600080fd5b5051949350505050565b600054604051600160e11b6302740f8f0281526001600160a01b0384811660248301526044820184905233606483018190526080600484019081526084840188905291909316926304e81f1e92889288928892889290819060a401878780828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612b0e57600080fd5b505af1158015612b22573d6000803e3d6000fd5b5050505050505050565b60008054604051600160e11b634341e3ff02815261ffff8086166044830152841660648201526080600482019081528751608483015287516001600160a01b0390931693638683c7fe93899389938993899391928392602482019260a49092019160208a0191908190849084905b83811015612bb2578181015183820152602001612b9a565b50505050905090810190601f168015612bdf5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015612c12578181015183820152602001612bfa565b50505050905090810190601f168015612c3f5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612b0e57600080fd5b60008054604051600160e01b63d621d95702815261ffff8086166064830152841660848201523360a4820181905260c060048301908152895160c484015289516001600160a01b039094169463d621d957948b948b948b948b948b949293919283926024810192604482019260e49092019160208d01918190849084908381101561281c578181015183820152602001612804565b60008054604051600160e01b63936421d50281526001600160a01b038a8116600483019081528a82166024840152604483018a9052606483018990526084830188905260c060a4840190815260c48401879052919093169263936421d5928c928c928c928c928c928c928c929060e401848480828437600081840152601f19601f8201169050808301925050509850505050505050505060206040518083038186803b158015612da657600080fd5b505afa158015612dba573d6000803e3d6000fd5b505050506040513d6020811015612dd057600080fd5b505198975050505050505050565b6000805460408051600160e01b639bd381010281526001600160a01b03878116600483019081526024830193845260448301879052931692639bd38101928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015612a4057600080fd5b6000805460408051600160e31b6314b087e1028152600481018690526024810185905290516001600160a01b039092169263a5843f089260448084019382900301818387803b158015612eb457600080fd5b505af1158015612ec8573d6000803e3d6000fd5b505050505050565b600054604051600160e11b632e52d6df0281523360448201819052606060048301908152606483018790526001600160a01b0390931692635ca5adbe928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612b0e57600080fd5b600054604051600160e11b630e124c890281526001600160a01b0383811660248301523360448301819052606060048401908152606484018790529190931692631c249912928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b600054604051600160e01b633cf5f33b028152602481018390523360448201819052606060048301908152606483018690526001600160a01b0390931692633cf5f33b928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b6000805460408051600160e51b63068d50610281526001600160a01b0385811660048301529151919092169163d1aa0c20916024808301926020929190829003018186803b1580156130f457600080fd5b505afa158015613108573d6000803e3d6000fd5b505050506040513d602081101561311e57600080fd5b505192915050565b60008054604051600160e01b63ecad01d502815261ffff8086166064830152841660848201523360a4820181905260c060048301908152895160c484015289516001600160a01b039094169463ecad01d5948b948b948b948b948b949293919283926024810192604482019260e49092019160208d01918190849084908381101561281c578181015183820152602001612804565b60008054604051600160e01b63f346a3a7028152602060048201908152602482018590526060938493909283926001600160a01b039092169163f346a3a791899189918190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561323d57600080fd5b505afa158015613251573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561327a57600080fd5b810190808051600160201b81111561329157600080fd5b820160208101848111156132a457600080fd5b8151600160201b8111828201871017156132bd57600080fd5b50509291906020018051600160201b8111156132d857600080fd5b820160208101848111156132eb57600080fd5b8151600160201b81118282018710171561330457600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b60008054604051600160e11b637baf850302815261ffff8087166064830152851660848201526001600160a01b0384811660a48301523360c4830181905260e0600484019081528b5160e48501528b51929094169463f75f0a06948c948c948c948c948c948c9492939092839260248201926044830192610104019160208e0191908190849084908381101561216057818101518382015260200161214856fea165627a7a72305820b6e6a59155f89147a70225e82521ad7432c887b50d3e810e125f0b82322d043f0029" +// Deprecated: Use PermInterfaceMetaData.Bin instead. +var PermInterfaceBin = PermInterfaceMetaData.Bin // DeployPermInterface deploys a new Ethereum contract, binding an instance of PermInterface to it. -func DeployPermInterface(auth *bind.TransactOpts, backend bind.ContractBackend, _permImplUpgradeable common.Address) (common.Address, *types.Transaction, *PermInterface, error) { - parsed, err := abi.JSON(strings.NewReader(PermInterfaceABI)) +func DeployPermInterface(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *PermInterface, error) { + parsed, err := PermInterfaceMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PermInterfaceBin), backend, _permImplUpgradeable) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PermInterfaceBin), backend) if err != nil { return common.Address{}, nil, nil, err } @@ -221,6 +234,37 @@ func (_PermInterface *PermInterfaceCallerSession) ConnectionAllowed(_enodeId str return _PermInterface.Contract.ConnectionAllowed(&_PermInterface.CallOpts, _enodeId, _ip, _port) } +// GetAccessLevelForUnconfiguredAccount is a free data retrieval call binding the contract method 0x0dca12f6. +// +// Solidity: function getAccessLevelForUnconfiguredAccount() view returns(uint256) +func (_PermInterface *PermInterfaceCaller) GetAccessLevelForUnconfiguredAccount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _PermInterface.contract.Call(opts, &out, "getAccessLevelForUnconfiguredAccount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAccessLevelForUnconfiguredAccount is a free data retrieval call binding the contract method 0x0dca12f6. +// +// Solidity: function getAccessLevelForUnconfiguredAccount() view returns(uint256) +func (_PermInterface *PermInterfaceSession) GetAccessLevelForUnconfiguredAccount() (*big.Int, error) { + return _PermInterface.Contract.GetAccessLevelForUnconfiguredAccount(&_PermInterface.CallOpts) +} + +// GetAccessLevelForUnconfiguredAccount is a free data retrieval call binding the contract method 0x0dca12f6. +// +// Solidity: function getAccessLevelForUnconfiguredAccount() view returns(uint256) +func (_PermInterface *PermInterfaceCallerSession) GetAccessLevelForUnconfiguredAccount() (*big.Int, error) { + return _PermInterface.Contract.GetAccessLevelForUnconfiguredAccount(&_PermInterface.CallOpts) +} + // GetNetworkBootStatus is a free data retrieval call binding the contract method 0x4cbfa82e. // // Solidity: function getNetworkBootStatus() view returns(bool) @@ -483,6 +527,27 @@ func (_PermInterface *PermInterfaceTransactorSession) AddAdminNode(_enodeId stri return _PermInterface.Contract.AddAdminNode(&_PermInterface.TransactOpts, _enodeId, _ip, _port, _raftport) } +// AddContractWhitelist is a paid mutator transaction binding the contract method 0xea2f2dfe. +// +// Solidity: function addContractWhitelist(address _contractAddress) returns() +func (_PermInterface *PermInterfaceTransactor) AddContractWhitelist(opts *bind.TransactOpts, _contractAddress common.Address) (*types.Transaction, error) { + return _PermInterface.contract.Transact(opts, "addContractWhitelist", _contractAddress) +} + +// AddContractWhitelist is a paid mutator transaction binding the contract method 0xea2f2dfe. +// +// Solidity: function addContractWhitelist(address _contractAddress) returns() +func (_PermInterface *PermInterfaceSession) AddContractWhitelist(_contractAddress common.Address) (*types.Transaction, error) { + return _PermInterface.Contract.AddContractWhitelist(&_PermInterface.TransactOpts, _contractAddress) +} + +// AddContractWhitelist is a paid mutator transaction binding the contract method 0xea2f2dfe. +// +// Solidity: function addContractWhitelist(address _contractAddress) returns() +func (_PermInterface *PermInterfaceTransactorSession) AddContractWhitelist(_contractAddress common.Address) (*types.Transaction, error) { + return _PermInterface.Contract.AddContractWhitelist(&_PermInterface.TransactOpts, _contractAddress) +} + // AddNewRole is a paid mutator transaction binding the contract method 0x51f604c3. // // Solidity: function addNewRole(string _roleId, string _orgId, uint256 _access, bool _voter, bool _admin) returns() @@ -735,6 +800,27 @@ func (_PermInterface *PermInterfaceTransactorSession) Init(_breadth *big.Int, _d return _PermInterface.Contract.Init(&_PermInterface.TransactOpts, _breadth, _depth) } +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permImplUpgradeable) returns() +func (_PermInterface *PermInterfaceTransactor) Initialize(opts *bind.TransactOpts, _permImplUpgradeable common.Address) (*types.Transaction, error) { + return _PermInterface.contract.Transact(opts, "initialize", _permImplUpgradeable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permImplUpgradeable) returns() +func (_PermInterface *PermInterfaceSession) Initialize(_permImplUpgradeable common.Address) (*types.Transaction, error) { + return _PermInterface.Contract.Initialize(&_PermInterface.TransactOpts, _permImplUpgradeable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permImplUpgradeable) returns() +func (_PermInterface *PermInterfaceTransactorSession) Initialize(_permImplUpgradeable common.Address) (*types.Transaction, error) { + return _PermInterface.Contract.Initialize(&_PermInterface.TransactOpts, _permImplUpgradeable) +} + // RemoveRole is a paid mutator transaction binding the contract method 0xa6343012. // // Solidity: function removeRole(string _roleId, string _orgId) returns() @@ -756,6 +842,69 @@ func (_PermInterface *PermInterfaceTransactorSession) RemoveRole(_roleId string, return _PermInterface.Contract.RemoveRole(&_PermInterface.TransactOpts, _roleId, _orgId) } +// RevokeContractWhitelist is a paid mutator transaction binding the contract method 0x10742cdb. +// +// Solidity: function revokeContractWhitelist(address _contractAddress) returns() +func (_PermInterface *PermInterfaceTransactor) RevokeContractWhitelist(opts *bind.TransactOpts, _contractAddress common.Address) (*types.Transaction, error) { + return _PermInterface.contract.Transact(opts, "revokeContractWhitelist", _contractAddress) +} + +// RevokeContractWhitelist is a paid mutator transaction binding the contract method 0x10742cdb. +// +// Solidity: function revokeContractWhitelist(address _contractAddress) returns() +func (_PermInterface *PermInterfaceSession) RevokeContractWhitelist(_contractAddress common.Address) (*types.Transaction, error) { + return _PermInterface.Contract.RevokeContractWhitelist(&_PermInterface.TransactOpts, _contractAddress) +} + +// RevokeContractWhitelist is a paid mutator transaction binding the contract method 0x10742cdb. +// +// Solidity: function revokeContractWhitelist(address _contractAddress) returns() +func (_PermInterface *PermInterfaceTransactorSession) RevokeContractWhitelist(_contractAddress common.Address) (*types.Transaction, error) { + return _PermInterface.Contract.RevokeContractWhitelist(&_PermInterface.TransactOpts, _contractAddress) +} + +// SetAccessLevelForUnconfiguredAccount is a paid mutator transaction binding the contract method 0x3965c04a. +// +// Solidity: function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel) returns() +func (_PermInterface *PermInterfaceTransactor) SetAccessLevelForUnconfiguredAccount(opts *bind.TransactOpts, _accessLevel *big.Int) (*types.Transaction, error) { + return _PermInterface.contract.Transact(opts, "setAccessLevelForUnconfiguredAccount", _accessLevel) +} + +// SetAccessLevelForUnconfiguredAccount is a paid mutator transaction binding the contract method 0x3965c04a. +// +// Solidity: function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel) returns() +func (_PermInterface *PermInterfaceSession) SetAccessLevelForUnconfiguredAccount(_accessLevel *big.Int) (*types.Transaction, error) { + return _PermInterface.Contract.SetAccessLevelForUnconfiguredAccount(&_PermInterface.TransactOpts, _accessLevel) +} + +// SetAccessLevelForUnconfiguredAccount is a paid mutator transaction binding the contract method 0x3965c04a. +// +// Solidity: function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel) returns() +func (_PermInterface *PermInterfaceTransactorSession) SetAccessLevelForUnconfiguredAccount(_accessLevel *big.Int) (*types.Transaction, error) { + return _PermInterface.Contract.SetAccessLevelForUnconfiguredAccount(&_PermInterface.TransactOpts, _accessLevel) +} + +// SetIpValidation is a paid mutator transaction binding the contract method 0x9fc666b2. +// +// Solidity: function setIpValidation(bool _isIpValidationEnabled) returns() +func (_PermInterface *PermInterfaceTransactor) SetIpValidation(opts *bind.TransactOpts, _isIpValidationEnabled bool) (*types.Transaction, error) { + return _PermInterface.contract.Transact(opts, "setIpValidation", _isIpValidationEnabled) +} + +// SetIpValidation is a paid mutator transaction binding the contract method 0x9fc666b2. +// +// Solidity: function setIpValidation(bool _isIpValidationEnabled) returns() +func (_PermInterface *PermInterfaceSession) SetIpValidation(_isIpValidationEnabled bool) (*types.Transaction, error) { + return _PermInterface.Contract.SetIpValidation(&_PermInterface.TransactOpts, _isIpValidationEnabled) +} + +// SetIpValidation is a paid mutator transaction binding the contract method 0x9fc666b2. +// +// Solidity: function setIpValidation(bool _isIpValidationEnabled) returns() +func (_PermInterface *PermInterfaceTransactorSession) SetIpValidation(_isIpValidationEnabled bool) (*types.Transaction, error) { + return _PermInterface.Contract.SetIpValidation(&_PermInterface.TransactOpts, _isIpValidationEnabled) +} + // SetPermImplementation is a paid mutator transaction binding the contract method 0x511bbd9f. // // Solidity: function setPermImplementation(address _permImplementation) returns() @@ -923,3 +1072,139 @@ func (_PermInterface *PermInterfaceSession) UpdateOrgStatus(_orgId string, _acti func (_PermInterface *PermInterfaceTransactorSession) UpdateOrgStatus(_orgId string, _action *big.Int) (*types.Transaction, error) { return _PermInterface.Contract.UpdateOrgStatus(&_PermInterface.TransactOpts, _orgId, _action) } + +// PermInterfaceInitializedPermIfaceIterator is returned from FilterInitializedPermIface and is used to iterate over the raw logs and unpacked data for InitializedPermIface events raised by the PermInterface contract. +type PermInterfaceInitializedPermIfaceIterator struct { + Event *PermInterfaceInitializedPermIface // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PermInterfaceInitializedPermIfaceIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PermInterfaceInitializedPermIface) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PermInterfaceInitializedPermIface) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PermInterfaceInitializedPermIfaceIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PermInterfaceInitializedPermIfaceIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PermInterfaceInitializedPermIface represents a InitializedPermIface event raised by the PermInterface contract. +type PermInterfaceInitializedPermIface struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitializedPermIface is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PermInterface *PermInterfaceFilterer) FilterInitializedPermIface(opts *bind.FilterOpts) (*PermInterfaceInitializedPermIfaceIterator, error) { + + logs, sub, err := _PermInterface.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PermInterfaceInitializedPermIfaceIterator{contract: _PermInterface.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +var InitializedPermIfaceTopicHash = "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + +// WatchInitializedPermIface is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PermInterface *PermInterfaceFilterer) WatchInitializedPermIface(opts *bind.WatchOpts, sink chan<- *PermInterfaceInitializedPermIface) (event.Subscription, error) { + + logs, sub, err := _PermInterface.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PermInterfaceInitializedPermIface) + if err := _PermInterface.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitializedPermIface is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PermInterface *PermInterfaceFilterer) ParseInitializedPermIface(log types.Log) (*PermInterfaceInitializedPermIface, error) { + event := new(PermInterfaceInitializedPermIface) + if err := _PermInterface.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/permission/v2/bind/permission_upgr.go b/permission/v2/bind/permission_upgr.go index d3cfe8edc4..2aa29dc002 100644 --- a/permission/v2/bind/permission_upgr.go +++ b/permission/v2/bind/permission_upgr.go @@ -4,6 +4,7 @@ package bind import ( + "errors" "math/big" "strings" @@ -17,6 +18,7 @@ import ( // Reference imports to suppress errors if they are not otherwise used. var ( + _ = errors.New _ = big.NewInt _ = strings.NewReader _ = ethereum.NotFound @@ -26,22 +28,33 @@ var ( _ = event.NewSubscription ) +// PermUpgrMetaData contains all meta data concerning the PermUpgr contract. +var PermUpgrMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_proposedImpl\",\"type\":\"address\"}],\"name\":\"confirmImplChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGuardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPermImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPermInterface\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permInterface\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_permImpl\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50610e0e8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c80630e32cf901461006457806322bcb39a14610082578063a75b87d21461009e578063c4d66de8146100bc578063e572515c146100d8578063f09a4016146100f6575b5f80fd5b61006c610112565b6040516100799190610879565b60405180910390f35b61009c600480360381019061009791906108cd565b61013a565b005b6100a66102e2565b6040516100b39190610879565b60405180910390f35b6100d660048036038101906100d191906108cd565b610309565b005b6100e0610548565b6040516100ed9190610879565b60405180910390f35b610110600480360381019061010b91906108f8565b610570565b005b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101be90610990565b60405180910390fd5b5f805f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc9ba6fa6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610234573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061025c9190610b39565b93509350935093506102718585858585610716565b8460015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610789565b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f610312610813565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561035a5750825b90505f60018367ffffffffffffffff1614801561038d57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b90508115801561039b575080155b156103d2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561041f576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610c3b565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600260146101000a81548160ff0219169083151502179055508315610540575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516105379190610cae565b60405180910390a15b505050505050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f490610990565b60405180910390fd5b600260149054906101000a900460ff161561064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064490610d11565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106f760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610789565b6001600260146101000a81548160ff0219169083151502179055505050565b8473ffffffffffffffffffffffffffffffffffffffff1663f5ad584a858585856040518563ffffffff1660e01b81526004016107559493929190610d80565b5f604051808303815f87803b15801561076c575f80fd5b505af115801561077e573d5f803e3d5ffd5b505050505050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663511bbd9f826040518263ffffffff1660e01b81526004016107e39190610879565b5f604051808303815f87803b1580156107fa575f80fd5b505af115801561080c573d5f803e3d5ffd5b5050505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108638261083a565b9050919050565b61087381610859565b82525050565b5f60208201905061088c5f83018461086a565b92915050565b5f604051905090565b5f80fd5b5f80fd5b6108ac81610859565b81146108b6575f80fd5b50565b5f813590506108c7816108a3565b92915050565b5f602082840312156108e2576108e161089b565b5b5f6108ef848285016108b9565b91505092915050565b5f806040838503121561090e5761090d61089b565b5b5f61091b858286016108b9565b925050602061092c858286016108b9565b9150509250929050565b5f82825260208201905092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f61097a600e83610936565b915061098582610946565b602082019050919050565b5f6020820190508181035f8301526109a78161096e565b9050919050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6109fc826109b6565b810181811067ffffffffffffffff82111715610a1b57610a1a6109c6565b5b80604052505050565b5f610a2d610892565b9050610a3982826109f3565b919050565b5f67ffffffffffffffff821115610a5857610a576109c6565b5b610a61826109b6565b9050602081019050919050565b5f5b83811015610a8b578082015181840152602081019050610a70565b5f8484015250505050565b5f610aa8610aa384610a3e565b610a24565b905082815260208101848484011115610ac457610ac36109b2565b5b610acf848285610a6e565b509392505050565b5f82601f830112610aeb57610aea6109ae565b5b8151610afb848260208601610a96565b91505092915050565b5f8115159050919050565b610b1881610b04565b8114610b22575f80fd5b50565b5f81519050610b3381610b0f565b92915050565b5f805f8060808587031215610b5157610b5061089b565b5b5f85015167ffffffffffffffff811115610b6e57610b6d61089f565b5b610b7a87828801610ad7565b945050602085015167ffffffffffffffff811115610b9b57610b9a61089f565b5b610ba787828801610ad7565b935050604085015167ffffffffffffffff811115610bc857610bc761089f565b5b610bd487828801610ad7565b9250506060610be587828801610b25565b91505092959194509250565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f610c25601b83610936565b9150610c3082610bf1565b602082019050919050565b5f6020820190508181035f830152610c5281610c19565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f610c98610c93610c8e84610c59565b610c75565b610c62565b9050919050565b610ca881610c7e565b82525050565b5f602082019050610cc15f830184610c9f565b92915050565b7f63616e206265206578656375746564206f6e6c79206f6e6365000000000000005f82015250565b5f610cfb601983610936565b9150610d0682610cc7565b602082019050919050565b5f6020820190508181035f830152610d2881610cef565b9050919050565b5f81519050919050565b5f610d4382610d2f565b610d4d8185610936565b9350610d5d818560208601610a6e565b610d66816109b6565b840191505092915050565b610d7a81610b04565b82525050565b5f6080820190508181035f830152610d988187610d39565b90508181036020830152610dac8186610d39565b90508181036040830152610dc08185610d39565b9050610dcf6060830184610d71565b9594505050505056fea2646970667358221220507a72071071039bd8292da30d8d5c1d14dc5d750f55bc7197d235f9adb7a70a64736f6c63430008180033", +} + // PermUpgrABI is the input ABI used to generate the binding from. -const PermUpgrABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"getPermImpl\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_proposedImpl\",\"type\":\"address\"}],\"name\":\"confirmImplChange\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getGuardian\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPermInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_permInterface\",\"type\":\"address\"},{\"name\":\"_permImpl\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_guardian\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" +// Deprecated: Use PermUpgrMetaData.ABI instead. +var PermUpgrABI = PermUpgrMetaData.ABI var PermUpgrParsedABI, _ = abi.JSON(strings.NewReader(PermUpgrABI)) // PermUpgrBin is the compiled bytecode used for deploying new contracts. -var PermUpgrBin = "0x608060405234801561001057600080fd5b506040516020806106e78339810180604052602081101561003057600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905560028054600160a01b60ff0219169055610675806100726000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630e32cf901461005c57806322bcb39a14610080578063a75b87d2146100a8578063e572515c146100b0578063f09a4016146100b8575b600080fd5b6100646100e6565b604080516001600160a01b039092168252519081900360200190f35b6100a66004803603602081101561009657600080fd5b50356001600160a01b03166100f5565b005b61006461030b565b61006461031a565b6100a6600480360360408110156100ce57600080fd5b506001600160a01b0381358116916020013516610329565b6001546001600160a01b031690565b6000546001600160a01b0316331461014b5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60608060606000600160009054906101000a90046001600160a01b03166001600160a01b031663cc9ba6fa6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101a057600080fd5b505afa1580156101b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156101dd57600080fd5b8101908080516401000000008111156101f557600080fd5b8201602081018481111561020857600080fd5b815164010000000081118282018710171561022257600080fd5b5050929190602001805164010000000081111561023e57600080fd5b8201602081018481111561025157600080fd5b815164010000000081118282018710171561026b57600080fd5b5050929190602001805164010000000081111561028757600080fd5b8201602081018481111561029a57600080fd5b81516401000000008111828201871017156102b457600080fd5b50506020909101519498509296509194509192506102d9915086905085858585610443565b600180546001600160a01b0319166001600160a01b03878116919091179182905561030491166105e4565b5050505050565b6000546001600160a01b031690565b6002546001600160a01b031690565b6000546001600160a01b0316331461037f5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b600254600160a01b900460ff16156103e15760408051600160e51b62461bcd02815260206004820152601960248201527f63616e206265206578656375746564206f6e6c79206f6e636500000000000000604482015290519081900360640190fd5b600180546001600160a01b038084166001600160a01b031992831617928390556002805486831693169290921790915561041b91166105e4565b50506002805474ff00000000000000000000000000000000000000001916600160a01b179055565b846001600160a01b031663f5ad584a858585856040518563ffffffff1660e01b81526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b838110156104b457818101518382015260200161049c565b50505050905090810190601f1680156104e15780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156105145781810151838201526020016104fc565b50505050905090810190601f1680156105415780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561057457818101518382015260200161055c565b50505050905090810190601f1680156105a15780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b1580156105c557600080fd5b505af11580156105d9573d6000803e3d6000fd5b505050505050505050565b60025460408051600160e01b63511bbd9f0281526001600160a01b0384811660048301529151919092169163511bbd9f91602480830192600092919082900301818387803b15801561063557600080fd5b505af1158015610304573d6000803e3d6000fdfea165627a7a7230582055489d1e43ffd1f6646b629ccf78d3fb7551dd246e111ec3ccbf9ae12f8b900a0029" +// Deprecated: Use PermUpgrMetaData.Bin instead. +var PermUpgrBin = PermUpgrMetaData.Bin // DeployPermUpgr deploys a new Ethereum contract, binding an instance of PermUpgr to it. -func DeployPermUpgr(auth *bind.TransactOpts, backend bind.ContractBackend, _guardian common.Address) (common.Address, *types.Transaction, *PermUpgr, error) { - parsed, err := abi.JSON(strings.NewReader(PermUpgrABI)) +func DeployPermUpgr(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *PermUpgr, error) { + parsed, err := PermUpgrMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PermUpgrBin), backend, _guardian) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PermUpgrBin), backend) if err != nil { return common.Address{}, nil, nil, err } @@ -324,3 +337,160 @@ func (_PermUpgr *PermUpgrSession) Init(_permInterface common.Address, _permImpl func (_PermUpgr *PermUpgrTransactorSession) Init(_permInterface common.Address, _permImpl common.Address) (*types.Transaction, error) { return _PermUpgr.Contract.Init(&_PermUpgr.TransactOpts, _permInterface, _permImpl) } + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _guardian) returns() +func (_PermUpgr *PermUpgrTransactor) Initialize(opts *bind.TransactOpts, _guardian common.Address) (*types.Transaction, error) { + return _PermUpgr.contract.Transact(opts, "initialize", _guardian) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _guardian) returns() +func (_PermUpgr *PermUpgrSession) Initialize(_guardian common.Address) (*types.Transaction, error) { + return _PermUpgr.Contract.Initialize(&_PermUpgr.TransactOpts, _guardian) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _guardian) returns() +func (_PermUpgr *PermUpgrTransactorSession) Initialize(_guardian common.Address) (*types.Transaction, error) { + return _PermUpgr.Contract.Initialize(&_PermUpgr.TransactOpts, _guardian) +} + +// PermUpgrInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PermUpgr contract. +type PermUpgrInitializedIterator struct { + Event *PermUpgrInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PermUpgrInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PermUpgrInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PermUpgrInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PermUpgrInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PermUpgrInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PermUpgrInitialized represents a Initialized event raised by the PermUpgr contract. +type PermUpgrInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PermUpgr *PermUpgrFilterer) FilterInitialized(opts *bind.FilterOpts) (*PermUpgrInitializedIterator, error) { + + logs, sub, err := _PermUpgr.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PermUpgrInitializedIterator{contract: _PermUpgr.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +var InitializedTopicHash = "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PermUpgr *PermUpgrFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PermUpgrInitialized) (event.Subscription, error) { + + logs, sub, err := _PermUpgr.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PermUpgrInitialized) + if err := _PermUpgr.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PermUpgr *PermUpgrFilterer) ParseInitialized(log types.Log) (*PermUpgrInitialized, error) { + event := new(PermUpgrInitialized) + if err := _PermUpgr.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/permission/v2/bind/roles.go b/permission/v2/bind/roles.go index a2ec6237e6..6916ce5f78 100644 --- a/permission/v2/bind/roles.go +++ b/permission/v2/bind/roles.go @@ -4,6 +4,7 @@ package bind import ( + "errors" "math/big" "strings" @@ -17,6 +18,7 @@ import ( // Reference imports to suppress errors if they are not otherwise used. var ( + _ = errors.New _ = big.NewInt _ = strings.NewReader _ = ethereum.NotFound @@ -26,22 +28,33 @@ var ( _ = event.NewSubscription ) +// RoleManagerMetaData contains all meta data concerning the RoleManager contract. +var RoleManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_baseAccess\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_isVoter\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_isAdmin\",\"type\":\"bool\"}],\"name\":\"RoleCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_baseAccess\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isVoter\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_isAdmin\",\"type\":\"bool\"}],\"name\":\"addRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccessLevelForUnconfiguredAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfRoles\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getRoleDetails\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"accessType\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"voter\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"admin\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rIndex\",\"type\":\"uint256\"}],\"name\":\"getRoleDetailsFromIndex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"orgId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"accessType\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"voter\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"admin\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"isAdminRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"access\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_typeOfTxn\",\"type\":\"uint256\"}],\"name\":\"isTransactionAllowedBasedOnRoleAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"isVoterRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"roleAccess\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"roleExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_accessLevel\",\"type\":\"uint256\"}],\"name\":\"setAccessLevelForUnconfiguredAccount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_roleId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ultParent\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_typeOfTxn\",\"type\":\"uint256\"}],\"name\":\"transactionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50612dfd8061001d5f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c8063abf5739f1161008a578063cfc83dfa11610064578063cfc83dfa14610262578063d1f7786614610292578063deb16ba7146102c2578063e4604b61146102f2576100e8565b8063abf5739f146101e6578063be322e5414610216578063c4d66de814610246576100e8565b80637b713579116100c65780637b7135791461015b57806387f55d3114610177578063a451d4a814610195578063a6343012146101ca576100e8565b80630dca12f6146100ec5780631870aba31461010a5780633965c04a1461013f575b5f80fd5b6100f4610322565b6040516101019190611e93565b60405180910390f35b610124600480360381019061011f9190611f1e565b61032b565b60405161013696959493929190612040565b60405180910390f35b610159600480360381019061015491906120d7565b610708565b005b61017560048036038101906101709190612254565b61085b565b005b61017f610ba0565b60405161018c9190611e93565b60405180910390f35b6101af60048036038101906101aa91906120d7565b610bac565b6040516101c196959493929190612040565b60405180910390f35b6101e460048036038101906101df9190611f1e565b610dd7565b005b61020060048036038101906101fb9190612303565b611061565b60405161020d91906123a7565b60405180910390f35b610230600480360381019061022b91906123c0565b611179565b60405161023d91906123a7565b60405180910390f35b610260600480360381019061025b91906124ca565b61153b565b005b61027c60048036038101906102779190612303565b611768565b6040516102899190611e93565b60405180910390f35b6102ac60048036038101906102a791906124f5565b611866565b6040516102b991906123a7565b60405180910390f35b6102dc60048036038101906102d791906123c0565b611956565b6040516102e991906123a7565b60405180910390f35b61030c600480360381019061030791906125b9565b611d17565b60405161031991906123a7565b60405180910390f35b5f600454905090565b6060805f805f806103d18a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505089898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505060405180602001604052805f815250611061565b61044b5789895f805f8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050945090919293945060405180602001604052805f815250939291909550955095509550955095506106fb565b5f6104dc8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b9050600181815481106104f2576104f16125f7565b5b905f5260205f2090600402015f0160018281548110610514576105136125f7565b5b905f5260205f20906004020160010160018381548110610537576105366125f7565b5b905f5260205f209060040201600201546001848154811061055b5761055a6125f7565b5b905f5260205f2090600402016003015f9054906101000a900460ff166001858154811061058b5761058a6125f7565b5b905f5260205f20906004020160030160019054906101000a900460ff16600186815481106105bc576105bb6125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff168580546105e590612651565b80601f016020809104026020016040519081016040528092919081815260200182805461061190612651565b801561065c5780601f106106335761010080835404028352916020019161065c565b820191905f5260205f20905b81548152906001019060200180831161063f57829003601f168201915b5050505050955084805461066f90612651565b80601f016020809104026020016040519081016040528092919081815260200182805461069b90612651565b80156106e65780601f106106bd576101008083540402835291602001916106e6565b820191905f5260205f20905b8154815290600101906020018083116106c957829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610770573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107949190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f89061270a565b60405180910390fd5b5f8110158015610812575060078111155b610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890612798565b60405180910390fd5b8060048190555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e79190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094b9061270a565b60405180910390fd5b60088310610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90612800565b60405180910390fd5b5f60025f87876040516020016109ae92919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f205414610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a099061289d565b60405180910390fd5b60035f815480929190610a24906128e8565b919050555060035460025f8787604051602001610a4292919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f208190555060016040518060c001604052808781526020018681526020018581526020018415158152602001831515815260200160011515815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f019081610ad89190612acc565b506020820151816001019081610aee9190612acc565b50604082015181600201556060820151816003015f6101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555050507fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c8585858585604051610b91959493929190612b9b565b60405180910390a15050505050565b5f600180549050905090565b6060805f805f8060018781548110610bc757610bc66125f7565b5b905f5260205f2090600402015f0160018881548110610be957610be86125f7565b5b905f5260205f20906004020160010160018981548110610c0c57610c0b6125f7565b5b905f5260205f2090600402016002015460018a81548110610c3057610c2f6125f7565b5b905f5260205f2090600402016003015f9054906101000a900460ff1660018b81548110610c6057610c5f6125f7565b5b905f5260205f20906004020160030160019054906101000a900460ff1660018c81548110610c9157610c906125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff16858054610cba90612651565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce690612651565b8015610d315780601f10610d0857610100808354040283529160200191610d31565b820191905f5260205f20905b815481529060010190602001808311610d1457829003601f168201915b50505050509550848054610d4490612651565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7090612651565b8015610dbb5780601f10610d9257610100808354040283529160200191610dbb565b820191905f5260205f20905b815481529060010190602001808311610d9e57829003601f168201915b5050505050945095509550955095509550955091939550919395565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e639190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec79061270a565b60405180910390fd5b5f60025f86868686604051602001610eeb9493929190612c26565b6040516020818303038152906040528051906020012081526020019081526020015f205403610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4690612ca9565b60405180910390fd5b5f610fe085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505084848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b90505f60018281548110610ff757610ff66125f7565b5b905f5260205f20906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040516110529493929190612c26565b60405180910390a15050505050565b5f805f60025f878760405160200161107a92919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f2054146110e8576110ad8585611dcf565b9050600181815481106110c3576110c26125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff16915050611172565b5f60025f87866040516020016110ff92919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f20541461116d576111328584611dcf565b905060018181548110611148576111476125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff16915050611172565b5f9150505b9392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112079190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126b9061270a565b60405180910390fd5b61134887878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611061565b611354575f9050611531565b5f8060025f8a8a8a8a6040516020016113709493929190612c26565b6040516020818303038152906040528051906020012081526020019081526020015f2054146114305761142988888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b90506114c3565b6114c088888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b90505b600181815481106114d7576114d66125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff16801561152d57506001818154811061150f5761150e6125f7565b5b905f5260205f20906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b5f611544611e54565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561158c5750825b90505f60018367ffffffffffffffff161480156115bf57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156115cd575080155b15611604576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611651576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690612d11565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060056004819055508315611760575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516117579190612d7b565b60405180910390a15b505050505050565b5f805f60025f878760405160200161178192919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f2054146117e2576117b48585611dcf565b9050600181815481106117ca576117c96125f7565b5b905f5260205f2090600402016002015491505061185f565b5f60025f87866040516020016117f992919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f20541461185a5761182c8584611dcf565b905060018181548110611842576118416125f7565b5b905f5260205f2090600402016002015491505061185f565b5f9150505b9392505050565b5f8061193c89898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505088888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611768565b90506119488184611d17565b915050979650505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e49190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a489061270a565b60405180910390fd5b611b2587878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611061565b611b31575f9050611d0d565b5f8060025f8a8a8a8a604051602001611b4d9493929190612c26565b6040516020818303038152906040528051906020012081526020019081526020015f205414611c0d57611c0688888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b9050611ca0565b611c9d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b90505b60018181548110611cb457611cb36125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff168015611d09575060018181548110611cec57611ceb6125f7565b5b905f5260205f2090600402016003015f9054906101000a900460ff165b9150505b9695505050505050565b5f60038303611d295760019050611dc9565b600182148015611d4f57506001831480611d435750600583145b80611d4e5750600683145b5b15611d5d5760019050611dc9565b600282148015611d8357506002831480611d775750600683145b80611d825750600783145b5b15611d915760019050611dc9565b600382148015611db757506004831480611dab5750600583145b80611db65750600783145b5b15611dc55760019050611dc9565b5f90505b92915050565b5f8060025f8585604051602001611de792919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f205490505f8103611e3d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050611e4e565b600181611e4a9190612d94565b9150505b92915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f819050919050565b611e8d81611e7b565b82525050565b5f602082019050611ea65f830184611e84565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ede57611edd611ebd565b5b8235905067ffffffffffffffff811115611efb57611efa611ec1565b5b602083019150836001820283011115611f1757611f16611ec5565b5b9250929050565b5f805f8060408587031215611f3657611f35611eb5565b5b5f85013567ffffffffffffffff811115611f5357611f52611eb9565b5b611f5f87828801611ec9565b9450945050602085013567ffffffffffffffff811115611f8257611f81611eb9565b5b611f8e87828801611ec9565b925092505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611fd3578082015181840152602081019050611fb8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611ff882611f9c565b6120028185611fa6565b9350612012818560208601611fb6565b61201b81611fde565b840191505092915050565b5f8115159050919050565b61203a81612026565b82525050565b5f60c0820190508181035f8301526120588189611fee565b9050818103602083015261206c8188611fee565b905061207b6040830187611e84565b6120886060830186612031565b6120956080830185612031565b6120a260a0830184612031565b979650505050505050565b6120b681611e7b565b81146120c0575f80fd5b50565b5f813590506120d1816120ad565b92915050565b5f602082840312156120ec576120eb611eb5565b5b5f6120f9848285016120c3565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61213c82611fde565b810181811067ffffffffffffffff8211171561215b5761215a612106565b5b80604052505050565b5f61216d611eac565b90506121798282612133565b919050565b5f67ffffffffffffffff82111561219857612197612106565b5b6121a182611fde565b9050602081019050919050565b828183375f83830152505050565b5f6121ce6121c98461217e565b612164565b9050828152602081018484840111156121ea576121e9612102565b5b6121f58482856121ae565b509392505050565b5f82601f83011261221157612210611ebd565b5b81356122218482602086016121bc565b91505092915050565b61223381612026565b811461223d575f80fd5b50565b5f8135905061224e8161222a565b92915050565b5f805f805f60a0868803121561226d5761226c611eb5565b5b5f86013567ffffffffffffffff81111561228a57612289611eb9565b5b612296888289016121fd565b955050602086013567ffffffffffffffff8111156122b7576122b6611eb9565b5b6122c3888289016121fd565b94505060406122d4888289016120c3565b93505060606122e588828901612240565b92505060806122f688828901612240565b9150509295509295909350565b5f805f6060848603121561231a57612319611eb5565b5b5f84013567ffffffffffffffff81111561233757612336611eb9565b5b612343868287016121fd565b935050602084013567ffffffffffffffff81111561236457612363611eb9565b5b612370868287016121fd565b925050604084013567ffffffffffffffff81111561239157612390611eb9565b5b61239d868287016121fd565b9150509250925092565b5f6020820190506123ba5f830184612031565b92915050565b5f805f805f80606087890312156123da576123d9611eb5565b5b5f87013567ffffffffffffffff8111156123f7576123f6611eb9565b5b61240389828a01611ec9565b9650965050602087013567ffffffffffffffff81111561242657612425611eb9565b5b61243289828a01611ec9565b9450945050604087013567ffffffffffffffff81111561245557612454611eb9565b5b61246189828a01611ec9565b92509250509295509295509295565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249982612470565b9050919050565b6124a98161248f565b81146124b3575f80fd5b50565b5f813590506124c4816124a0565b92915050565b5f602082840312156124df576124de611eb5565b5b5f6124ec848285016124b6565b91505092915050565b5f805f805f805f6080888a0312156125105761250f611eb5565b5b5f88013567ffffffffffffffff81111561252d5761252c611eb9565b5b6125398a828b01611ec9565b9750975050602088013567ffffffffffffffff81111561255c5761255b611eb9565b5b6125688a828b01611ec9565b9550955050604088013567ffffffffffffffff81111561258b5761258a611eb9565b5b6125978a828b01611ec9565b935093505060606125aa8a828b016120c3565b91505092959891949750929550565b5f80604083850312156125cf576125ce611eb5565b5b5f6125dc858286016120c3565b92505060206125ed858286016120c3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061266857607f821691505b60208210810361267b5761267a612624565b5b50919050565b5f8151905061268f816124a0565b92915050565b5f602082840312156126aa576126a9611eb5565b5b5f6126b784828501612681565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f6126f4600e83611fa6565b91506126ff826126c0565b602082019050919050565b5f6020820190508181035f830152612721816126e8565b9050919050565b7f6163636573734c6576656c2076616c75652073686f756c6420626520626574775f8201527f65656e203020746f203700000000000000000000000000000000000000000000602082015250565b5f612782602a83611fa6565b915061278d82612728565b604082019050919050565b5f6020820190508181035f8301526127af81612776565b9050919050565b7f696e76616c6964206163636573732076616c75650000000000000000000000005f82015250565b5f6127ea601483611fa6565b91506127f5826127b6565b602082019050919050565b5f6020820190508181035f830152612817816127de565b9050919050565b5f6040820190508181035f8301526128368185611fee565b9050818103602083015261284a8184611fee565b90509392505050565b7f726f6c652065786973747320666f7220746865206f72670000000000000000005f82015250565b5f612887601783611fa6565b915061289282612853565b602082019050919050565b5f6020820190508181035f8301526128b48161287b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128f282611e7b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612924576129236128bb565b5b600182019050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261298b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612950565b6129958683612950565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6129d06129cb6129c684611e7b565b6129ad565b611e7b565b9050919050565b5f819050919050565b6129e9836129b6565b6129fd6129f5826129d7565b84845461295c565b825550505050565b5f90565b612a11612a05565b612a1c8184846129e0565b505050565b5b81811015612a3f57612a345f82612a09565b600181019050612a22565b5050565b601f821115612a8457612a558161292f565b612a5e84612941565b81016020851015612a6d578190505b612a81612a7985612941565b830182612a21565b50505b505050565b5f82821c905092915050565b5f612aa45f1984600802612a89565b1980831691505092915050565b5f612abc8383612a95565b9150826002028217905092915050565b612ad582611f9c565b67ffffffffffffffff811115612aee57612aed612106565b5b612af88254612651565b612b03828285612a43565b5f60209050601f831160018114612b34575f8415612b22578287015190505b612b2c8582612ab1565b865550612b93565b601f198416612b428661292f565b5f5b82811015612b6957848901518255600182019150602085019450602081019050612b44565b86831015612b865784890151612b82601f891682612a95565b8355505b6001600288020188555050505b505050505050565b5f60a0820190508181035f830152612bb38188611fee565b90508181036020830152612bc78187611fee565b9050612bd66040830186611e84565b612be36060830185612031565b612bf06080830184612031565b9695505050505050565b5f612c058385611fa6565b9350612c128385846121ae565b612c1b83611fde565b840190509392505050565b5f6040820190508181035f830152612c3f818688612bfa565b90508181036020830152612c54818486612bfa565b905095945050505050565b7f726f6c6520646f6573206e6f74206578697374000000000000000000000000005f82015250565b5f612c93601383611fa6565b9150612c9e82612c5f565b602082019050919050565b5f6020820190508181035f830152612cc081612c87565b9050919050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f612cfb601b83611fa6565b9150612d0682612cc7565b602082019050919050565b5f6020820190508181035f830152612d2881612cef565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f612d65612d60612d5b84612d2f565b6129ad565b612d38565b9050919050565b612d7581612d4b565b82525050565b5f602082019050612d8e5f830184612d6c565b92915050565b5f612d9e82611e7b565b9150612da983611e7b565b9250828203905081811115612dc157612dc06128bb565b5b9291505056fea2646970667358221220f65df7a9d4714df03659bba153a556321e9f52ce9ea307c88d815986d7af715264736f6c63430008180033", +} + // RoleManagerABI is the input ABI used to generate the binding from. -const RoleManagerABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getRoleDetails\",\"outputs\":[{\"name\":\"roleId\",\"type\":\"string\"},{\"name\":\"orgId\",\"type\":\"string\"},{\"name\":\"accessType\",\"type\":\"uint256\"},{\"name\":\"voter\",\"type\":\"bool\"},{\"name\":\"admin\",\"type\":\"bool\"},{\"name\":\"active\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_baseAccess\",\"type\":\"uint256\"},{\"name\":\"_isVoter\",\"type\":\"bool\"},{\"name\":\"_isAdmin\",\"type\":\"bool\"}],\"name\":\"addRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfRoles\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_rIndex\",\"type\":\"uint256\"}],\"name\":\"getRoleDetailsFromIndex\",\"outputs\":[{\"name\":\"roleId\",\"type\":\"string\"},{\"name\":\"orgId\",\"type\":\"string\"},{\"name\":\"accessType\",\"type\":\"uint256\"},{\"name\":\"voter\",\"type\":\"bool\"},{\"name\":\"admin\",\"type\":\"bool\"},{\"name\":\"active\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"roleExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"isAdminRole\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"roleAccess\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"},{\"name\":\"_typeOfTxn\",\"type\":\"uint256\"}],\"name\":\"transactionAllowed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"isVoterRole\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_baseAccess\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_isVoter\",\"type\":\"bool\"},{\"indexed\":false,\"name\":\"_isAdmin\",\"type\":\"bool\"}],\"name\":\"RoleCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"}]" +// Deprecated: Use RoleManagerMetaData.ABI instead. +var RoleManagerABI = RoleManagerMetaData.ABI var RoleManagerParsedABI, _ = abi.JSON(strings.NewReader(RoleManagerABI)) // RoleManagerBin is the compiled bytecode used for deploying new contracts. -var RoleManagerBin = "0x608060405234801561001057600080fd5b506040516020806128d98339810180604052602081101561003057600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055612877806100626000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063abf5739f11610066578063abf5739f1461048e578063be322e5414610650578063cfc83dfa1461075e578063d1f778661461090c578063deb16ba714610a1a5761009e565b80631870aba3146100a35780637b7135791461025f57806387f55d3114610399578063a451d4a8146103b3578063a6343012146103d0575b600080fd5b610161600480360360408110156100b957600080fd5b810190602081018135600160201b8111156100d357600080fd5b8201836020820111156100e557600080fd5b803590602001918460018302840111600160201b8311171561010657600080fd5b919390929091602081019035600160201b81111561012357600080fd5b82018360208201111561013557600080fd5b803590602001918460018302840111600160201b8311171561015657600080fd5b509092509050610b28565b604080519081018590528315156060820152821515608082015281151560a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156101be5781810151838201526020016101a6565b50505050905090810190601f1680156101eb5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b8381101561021e578181015183820152602001610206565b50505050905090810190601f16801561024b5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b610397600480360360a081101561027557600080fd5b810190602081018135600160201b81111561028f57600080fd5b8201836020820111156102a157600080fd5b803590602001918460018302840111600160201b831117156102c257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561031457600080fd5b82018360208201111561032657600080fd5b803590602001918460018302840111600160201b8311171561034757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135151590604001351515610eae565b005b6103a1611454565b60408051918252519081900360200190f35b610161600480360360208110156103c957600080fd5b503561145b565b610397600480360360408110156103e657600080fd5b810190602081018135600160201b81111561040057600080fd5b82018360208201111561041257600080fd5b803590602001918460018302840111600160201b8311171561043357600080fd5b919390929091602081019035600160201b81111561045057600080fd5b82018360208201111561046257600080fd5b803590602001918460018302840111600160201b8311171561048357600080fd5b509092509050611679565b61063c600480360360608110156104a457600080fd5b810190602081018135600160201b8111156104be57600080fd5b8201836020820111156104d057600080fd5b803590602001918460018302840111600160201b831117156104f157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561054357600080fd5b82018360208201111561055557600080fd5b803590602001918460018302840111600160201b8311171561057657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105c857600080fd5b8201836020820111156105da57600080fd5b803590602001918460018302840111600160201b831117156105fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611974945050505050565b604080519115158252519081900360200190f35b61063c6004803603606081101561066657600080fd5b810190602081018135600160201b81111561068057600080fd5b82018360208201111561069257600080fd5b803590602001918460018302840111600160201b831117156106b357600080fd5b919390929091602081019035600160201b8111156106d057600080fd5b8201836020820111156106e257600080fd5b803590602001918460018302840111600160201b8311171561070357600080fd5b919390929091602081019035600160201b81111561072057600080fd5b82018360208201111561073257600080fd5b803590602001918460018302840111600160201b8311171561075357600080fd5b509092509050611be8565b6103a16004803603606081101561077457600080fd5b810190602081018135600160201b81111561078e57600080fd5b8201836020820111156107a057600080fd5b803590602001918460018302840111600160201b831117156107c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561081357600080fd5b82018360208201111561082557600080fd5b803590602001918460018302840111600160201b8311171561084657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561089857600080fd5b8201836020820111156108aa57600080fd5b803590602001918460018302840111600160201b831117156108cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f68945050505050565b61063c6004803603608081101561092257600080fd5b810190602081018135600160201b81111561093c57600080fd5b82018360208201111561094e57600080fd5b803590602001918460018302840111600160201b8311171561096f57600080fd5b919390929091602081019035600160201b81111561098c57600080fd5b82018360208201111561099e57600080fd5b803590602001918460018302840111600160201b831117156109bf57600080fd5b919390929091602081019035600160201b8111156109dc57600080fd5b8201836020820111156109ee57600080fd5b803590602001918460018302840111600160201b83111715610a0f57600080fd5b9193509150356121c2565b61063c60048036036060811015610a3057600080fd5b810190602081018135600160201b811115610a4a57600080fd5b820183602082011115610a5c57600080fd5b803590602001918460018302840111600160201b83111715610a7d57600080fd5b919390929091602081019035600160201b811115610a9a57600080fd5b820183602082011115610aac57600080fd5b803590602001918460018302840111600160201b83111715610acd57600080fd5b919390929091602081019035600160201b811115610aea57600080fd5b820183602082011115610afc57600080fd5b803590602001918460018302840111600160201b83111715610b1d57600080fd5b50909250905061232e565b606080600080600080610bb28a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092018290525060408051602081019091529081529250611974915050565b1515610c1c57898960008060008085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152939f50929d50959b509399509197509550610ea1945050505050565b6000610c918b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c90819084018382808284376000920191909152506126a392505050565b9050600181815481101515610ca257fe5b9060005260206000209060040201600001600182815481101515610cc257fe5b9060005260206000209060040201600101600183815481101515610ce257fe5b906000526020600020906004020160020154600184815481101515610d0357fe5b60009182526020909120600360049092020101546001805460ff9092169186908110610d2b57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610d5957fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff169290918891830182828015610dfe5780601f10610dd357610100808354040283529160200191610dfe565b820191906000526020600020905b815481529060010190602001808311610de157829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015610e8c5780601f10610e6157610100808354040283529160200191610e8c565b820191906000526020600020905b815481529060010190602001808311610e6f57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610efb57600080fd5b505afa158015610f0f573d6000803e3d6000fd5b505050506040513d6020811015610f2557600080fd5b50516001600160a01b03163314610f7a5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60088310610fd25760408051600160e51b62461bcd02815260206004820152601460248201527f696e76616c6964206163636573732076616c7565000000000000000000000000604482015290519081900360640190fd5b600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561101c578181015183820152602001611004565b50505050905090810190601f1680156110495780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561107c578181015183820152602001611064565b50505050905090810190601f1680156110a95780820380516001836020036101000a031916815260200191505b5094505050505060405160208183030381529060405280519060200120815260200190815260200160002054600014151561112e5760408051600160e51b62461bcd02815260206004820152601760248201527f726f6c652065786973747320666f7220746865206f7267000000000000000000604482015290519081900360640190fd5b60038054600101908190556040805160208082018381528951606084015289516002946000948c948c94938493830192608001918701908083838b5b8381101561118257818101518382015260200161116a565b50505050905090810190601f1680156111af5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208852878201989098529587016000908120989098555050845160c0810186528b81528085018b905294850189905250505084151560608301528315156080830152600160a083018190528054808201808355919094528251805191946004027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601926112b9928492909101906127b3565b5060208281015180516112d292600185019201906127b3565b5060408281015160028301556060808401516003909301805460808087015160a09788015160ff199093169615159690961761ff001916610100961515969096029590951762ff0000191662010000911515919091021790558151918201889052861515908201528415159181019190915281815287519181019190915286517fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c92508791879187918791879190819060208083019160c08401918a019080838360005b838110156113ae578181015183820152602001611396565b50505050905090810190601f1680156113db5780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b8381101561140e5781810151838201526020016113f6565b50505050905090810190601f16801561143b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6001545b90565b60608060008060008060018781548110151561147357fe5b906000526020600020906004020160000160018881548110151561149357fe5b90600052602060002090600402016001016001898154811015156114b357fe5b90600052602060002090600402016002015460018a8154811015156114d457fe5b60009182526020909120600360049092020101546001805460ff909216918c9081106114fc57fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c81548110151561152a57fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff1692909188918301828280156115cf5780601f106115a4576101008083540402835291602001916115cf565b820191906000526020600020905b8154815290600101906020018083116115b257829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a94509250840190508282801561165d5780601f106116325761010080835404028352916020019161165d565b820191906000526020600020905b81548152906001019060200180831161164057829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c657600080fd5b505afa1580156116da573d6000803e3d6000fd5b505050506040513d60208110156116f057600080fd5b50516001600160a01b031633146117455760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60026000858585856040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515156118315760408051600160e51b62461bcd02815260206004820152601360248201527f726f6c6520646f6573206e6f7420657869737400000000000000000000000000604482015290519081900360640190fd5b60006118a685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284376000920191909152506126a392505050565b905060006001828154811015156118b957fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156119c15781810151838201526020016119a9565b50505050905090810190601f1680156119ee5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a21578181015183820152602001611a09565b50505050905090810190601f168015611a4e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611ac557611a8d85856126a3565b9050600181815481101515611a9e57fe5b906000526020600020906004020160030160029054906101000a900460ff16915050611be1565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611b0f578181015183820152602001611af7565b50505050905090810190601f168015611b3c5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611b6f578181015183820152602001611b57565b50505050905090810190601f168015611b9c5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611bdb57611a8d85846126a3565b60009150505b9392505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3757600080fd5b505afa158015611c4b573d6000803e3d6000fd5b505050506040513d6020811015611c6157600080fd5b50516001600160a01b03163314611cb65760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b611d5d87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061197492505050565b1515611d6b57506000611f5e565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611e8257611e7b88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a91508990819084018382808284376000920191909152506126a392505050565b9050611ef8565b611ef588888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506126a392505050565b90505b6001805482908110611f0657fe5b906000526020600020906004020160030160029054906101000a900460ff168015611f5a57506001805482908110611f3a57fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611fb5578181015183820152602001611f9d565b50505050905090810190601f168015611fe25780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612015578181015183820152602001611ffd565b50505050905090810190601f1680156120425780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156120ac5761208185856126a3565b905060018181548110151561209257fe5b906000526020600020906004020160020154915050611be1565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156120f65781810151838201526020016120de565b50505050905090810190601f1680156121235780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561215657818101518382015260200161213e565b50505050905090810190601f1680156121835780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611bdb5761208185846126a3565b60008061226c89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611f6892505050565b90508060031415612281576001915050612323565b8260011480156122a65750806001148061229b5750806005145b806122a65750806006145b156122b5576001915050612323565b8260021480156122da575080600214806122cf5750806006145b806122da5750806007145b156122e9576001915050612323565b82600314801561230e575080600414806123035750806005145b8061230e5750806007145b1561231d576001915050612323565b60009150505b979650505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561237d57600080fd5b505afa158015612391573d6000803e3d6000fd5b505050506040513d60208110156123a757600080fd5b50516001600160a01b031633146123fc5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b6124a387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061197492505050565b15156124b157506000611f5e565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f82011690508083019250505096505050505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156125c8576125c188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a91508990819084018382808284376000920191909152506126a392505050565b905061263e565b61263b88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506126a392505050565b90505b600180548290811061264c57fe5b906000526020600020906004020160030160029054906101000a900460ff168015611f5a5750600180548290811061268057fe5b600091825260209091206004909102016003015460ff1698975050505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156126f15781810151838201526020016126d9565b50505050905090810190601f16801561271e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612751578181015183820152602001612739565b50505050905090810190601f16801561277e5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127f457805160ff1916838001178555612821565b82800160010185558215612821579182015b82811115612821578251825591602001919060010190612806565b5061282d929150612831565b5090565b61145891905b8082111561282d576000815560010161283756fea165627a7a7230582075c8fd5504ba38b54f31bd0f3c28ac8ef88060c8e359bff58088d242f8cd256c0029" +// Deprecated: Use RoleManagerMetaData.Bin instead. +var RoleManagerBin = RoleManagerMetaData.Bin // DeployRoleManager deploys a new Ethereum contract, binding an instance of RoleManager to it. -func DeployRoleManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *RoleManager, error) { - parsed, err := abi.JSON(strings.NewReader(RoleManagerABI)) +func DeployRoleManager(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RoleManager, error) { + parsed, err := RoleManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RoleManagerBin), backend, _permUpgradable) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(RoleManagerBin), backend) if err != nil { return common.Address{}, nil, nil, err } @@ -190,6 +203,37 @@ func (_RoleManager *RoleManagerTransactorRaw) Transact(opts *bind.TransactOpts, return _RoleManager.Contract.contract.Transact(opts, method, params...) } +// GetAccessLevelForUnconfiguredAccount is a free data retrieval call binding the contract method 0x0dca12f6. +// +// Solidity: function getAccessLevelForUnconfiguredAccount() view returns(uint256) +func (_RoleManager *RoleManagerCaller) GetAccessLevelForUnconfiguredAccount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _RoleManager.contract.Call(opts, &out, "getAccessLevelForUnconfiguredAccount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAccessLevelForUnconfiguredAccount is a free data retrieval call binding the contract method 0x0dca12f6. +// +// Solidity: function getAccessLevelForUnconfiguredAccount() view returns(uint256) +func (_RoleManager *RoleManagerSession) GetAccessLevelForUnconfiguredAccount() (*big.Int, error) { + return _RoleManager.Contract.GetAccessLevelForUnconfiguredAccount(&_RoleManager.CallOpts) +} + +// GetAccessLevelForUnconfiguredAccount is a free data retrieval call binding the contract method 0x0dca12f6. +// +// Solidity: function getAccessLevelForUnconfiguredAccount() view returns(uint256) +func (_RoleManager *RoleManagerCallerSession) GetAccessLevelForUnconfiguredAccount() (*big.Int, error) { + return _RoleManager.Contract.GetAccessLevelForUnconfiguredAccount(&_RoleManager.CallOpts) +} + // GetNumberOfRoles is a free data retrieval call binding the contract method 0x87f55d31. // // Solidity: function getNumberOfRoles() view returns(uint256) @@ -243,13 +287,16 @@ func (_RoleManager *RoleManagerCaller) GetRoleDetails(opts *bind.CallOpts, _role Admin bool Active bool }) + if err != nil { + return *outstruct, err + } - outstruct.RoleId = out[0].(string) - outstruct.OrgId = out[1].(string) - outstruct.AccessType = out[2].(*big.Int) - outstruct.Voter = out[3].(bool) - outstruct.Admin = out[4].(bool) - outstruct.Active = out[5].(bool) + outstruct.RoleId = *abi.ConvertType(out[0], new(string)).(*string) + outstruct.OrgId = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.AccessType = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.Voter = *abi.ConvertType(out[3], new(bool)).(*bool) + outstruct.Admin = *abi.ConvertType(out[4], new(bool)).(*bool) + outstruct.Active = *abi.ConvertType(out[5], new(bool)).(*bool) return *outstruct, err @@ -305,13 +352,16 @@ func (_RoleManager *RoleManagerCaller) GetRoleDetailsFromIndex(opts *bind.CallOp Admin bool Active bool }) + if err != nil { + return *outstruct, err + } - outstruct.RoleId = out[0].(string) - outstruct.OrgId = out[1].(string) - outstruct.AccessType = out[2].(*big.Int) - outstruct.Voter = out[3].(bool) - outstruct.Admin = out[4].(bool) - outstruct.Active = out[5].(bool) + outstruct.RoleId = *abi.ConvertType(out[0], new(string)).(*string) + outstruct.OrgId = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.AccessType = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.Voter = *abi.ConvertType(out[3], new(bool)).(*bool) + outstruct.Admin = *abi.ConvertType(out[4], new(bool)).(*bool) + outstruct.Active = *abi.ConvertType(out[5], new(bool)).(*bool) return *outstruct, err @@ -376,6 +426,37 @@ func (_RoleManager *RoleManagerCallerSession) IsAdminRole(_roleId string, _orgId return _RoleManager.Contract.IsAdminRole(&_RoleManager.CallOpts, _roleId, _orgId, _ultParent) } +// IsTransactionAllowedBasedOnRoleAccess is a free data retrieval call binding the contract method 0xe4604b61. +// +// Solidity: function isTransactionAllowedBasedOnRoleAccess(uint256 access, uint256 _typeOfTxn) pure returns(bool) +func (_RoleManager *RoleManagerCaller) IsTransactionAllowedBasedOnRoleAccess(opts *bind.CallOpts, access *big.Int, _typeOfTxn *big.Int) (bool, error) { + var out []interface{} + err := _RoleManager.contract.Call(opts, &out, "isTransactionAllowedBasedOnRoleAccess", access, _typeOfTxn) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsTransactionAllowedBasedOnRoleAccess is a free data retrieval call binding the contract method 0xe4604b61. +// +// Solidity: function isTransactionAllowedBasedOnRoleAccess(uint256 access, uint256 _typeOfTxn) pure returns(bool) +func (_RoleManager *RoleManagerSession) IsTransactionAllowedBasedOnRoleAccess(access *big.Int, _typeOfTxn *big.Int) (bool, error) { + return _RoleManager.Contract.IsTransactionAllowedBasedOnRoleAccess(&_RoleManager.CallOpts, access, _typeOfTxn) +} + +// IsTransactionAllowedBasedOnRoleAccess is a free data retrieval call binding the contract method 0xe4604b61. +// +// Solidity: function isTransactionAllowedBasedOnRoleAccess(uint256 access, uint256 _typeOfTxn) pure returns(bool) +func (_RoleManager *RoleManagerCallerSession) IsTransactionAllowedBasedOnRoleAccess(access *big.Int, _typeOfTxn *big.Int) (bool, error) { + return _RoleManager.Contract.IsTransactionAllowedBasedOnRoleAccess(&_RoleManager.CallOpts, access, _typeOfTxn) +} + // IsVoterRole is a free data retrieval call binding the contract method 0xdeb16ba7. // // Solidity: function isVoterRole(string _roleId, string _orgId, string _ultParent) view returns(bool) @@ -521,6 +602,27 @@ func (_RoleManager *RoleManagerTransactorSession) AddRole(_roleId string, _orgId return _RoleManager.Contract.AddRole(&_RoleManager.TransactOpts, _roleId, _orgId, _baseAccess, _isVoter, _isAdmin) } +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_RoleManager *RoleManagerTransactor) Initialize(opts *bind.TransactOpts, _permUpgradable common.Address) (*types.Transaction, error) { + return _RoleManager.contract.Transact(opts, "initialize", _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_RoleManager *RoleManagerSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _RoleManager.Contract.Initialize(&_RoleManager.TransactOpts, _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_RoleManager *RoleManagerTransactorSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _RoleManager.Contract.Initialize(&_RoleManager.TransactOpts, _permUpgradable) +} + // RemoveRole is a paid mutator transaction binding the contract method 0xa6343012. // // Solidity: function removeRole(string _roleId, string _orgId) returns() @@ -542,6 +644,163 @@ func (_RoleManager *RoleManagerTransactorSession) RemoveRole(_roleId string, _or return _RoleManager.Contract.RemoveRole(&_RoleManager.TransactOpts, _roleId, _orgId) } +// SetAccessLevelForUnconfiguredAccount is a paid mutator transaction binding the contract method 0x3965c04a. +// +// Solidity: function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel) returns() +func (_RoleManager *RoleManagerTransactor) SetAccessLevelForUnconfiguredAccount(opts *bind.TransactOpts, _accessLevel *big.Int) (*types.Transaction, error) { + return _RoleManager.contract.Transact(opts, "setAccessLevelForUnconfiguredAccount", _accessLevel) +} + +// SetAccessLevelForUnconfiguredAccount is a paid mutator transaction binding the contract method 0x3965c04a. +// +// Solidity: function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel) returns() +func (_RoleManager *RoleManagerSession) SetAccessLevelForUnconfiguredAccount(_accessLevel *big.Int) (*types.Transaction, error) { + return _RoleManager.Contract.SetAccessLevelForUnconfiguredAccount(&_RoleManager.TransactOpts, _accessLevel) +} + +// SetAccessLevelForUnconfiguredAccount is a paid mutator transaction binding the contract method 0x3965c04a. +// +// Solidity: function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel) returns() +func (_RoleManager *RoleManagerTransactorSession) SetAccessLevelForUnconfiguredAccount(_accessLevel *big.Int) (*types.Transaction, error) { + return _RoleManager.Contract.SetAccessLevelForUnconfiguredAccount(&_RoleManager.TransactOpts, _accessLevel) +} + +// RoleManagerInitializedRolesIterator is returned from FilterInitializedRoles and is used to iterate over the raw logs and unpacked data for InitializedRoles events raised by the RoleManager contract. +type RoleManagerInitializedRolesIterator struct { + Event *RoleManagerInitializedRoles // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *RoleManagerInitializedRolesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(RoleManagerInitializedRoles) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(RoleManagerInitializedRoles) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *RoleManagerInitializedRolesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *RoleManagerInitializedRolesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// RoleManagerInitializedRoles represents a InitializedRoles event raised by the RoleManager contract. +type RoleManagerInitializedRoles struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitializedRoles is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_RoleManager *RoleManagerFilterer) FilterInitializedRoles(opts *bind.FilterOpts) (*RoleManagerInitializedRolesIterator, error) { + + logs, sub, err := _RoleManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &RoleManagerInitializedRolesIterator{contract: _RoleManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +var InitializedRolesTopicHash = "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + +// WatchInitializedRoles is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_RoleManager *RoleManagerFilterer) WatchInitializedRoles(opts *bind.WatchOpts, sink chan<- *RoleManagerInitializedRoles) (event.Subscription, error) { + + logs, sub, err := _RoleManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(RoleManagerInitializedRoles) + if err := _RoleManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitializedRoles is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_RoleManager *RoleManagerFilterer) ParseInitializedRoles(log types.Log) (*RoleManagerInitializedRoles, error) { + event := new(RoleManagerInitializedRoles) + if err := _RoleManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // RoleManagerRoleCreatedIterator is returned from FilterRoleCreated and is used to iterate over the raw logs and unpacked data for RoleCreated events raised by the RoleManager contract. type RoleManagerRoleCreatedIterator struct { Event *RoleManagerRoleCreated // Event containing the contract specifics and raw log @@ -678,6 +937,7 @@ func (_RoleManager *RoleManagerFilterer) ParseRoleCreated(log types.Log) (*RoleM if err := _RoleManager.contract.UnpackLog(event, "RoleCreated", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -814,5 +1074,6 @@ func (_RoleManager *RoleManagerFilterer) ParseRoleRevoked(log types.Log) (*RoleM if err := _RoleManager.contract.UnpackLog(event, "RoleRevoked", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/permission/v2/bind/voter.go b/permission/v2/bind/voter.go index 8c8ee0d18f..fe0d58323b 100644 --- a/permission/v2/bind/voter.go +++ b/permission/v2/bind/voter.go @@ -4,6 +4,7 @@ package bind import ( + "errors" "math/big" "strings" @@ -17,6 +18,7 @@ import ( // Reference imports to suppress errors if they are not otherwise used. var ( + _ = errors.New _ = big.NewInt _ = strings.NewReader _ = ethereum.NotFound @@ -26,22 +28,33 @@ var ( _ = event.NewSubscription ) +// VoterManagerMetaData contains all meta data concerning the VoterManager contract. +var VoterManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"VoteProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"VoterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"VoterDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"VotingItemAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"addVoter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_authOrg\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_enodeId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pendingOp\",\"type\":\"uint256\"}],\"name\":\"addVotingItem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"deleteVoter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getPendingOpDetails\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_authOrg\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_vAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pendingOp\",\"type\":\"uint256\"}],\"name\":\"processVote\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040525f600355348015610013575f80fd5b50612d52806100215f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c8063014e6acc146100645780635607395b1461009757806359cbd6fe146100b3578063b0213864146100cf578063c4d66de8146100ff578063e98ac22d1461011b575b5f80fd5b61007e60048036038101906100799190611fd5565b610137565b60405161008e9493929190612101565b60405180910390f35b6100b160048036038101906100ac919061217c565b610462565b005b6100cd60048036038101906100c8919061217c565b610d73565b005b6100e960048036038101906100e49190612203565b611073565b6040516100f6919061228e565b60405180910390f35b610119600480360381019061011491906122a7565b61161f565b005b610135600480360381019061013091906122d2565b611844565b005b6060805f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c891906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022c90612432565b60405180910390fd5b5f61028287878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b90506001818154811061029857610297612450565b5b905f5260205f2090600b02016004015f01600182815481106102bd576102bc612450565b5b905f5260205f2090600b0201600401600101600183815481106102e3576102e2612450565b5b905f5260205f2090600b02016004016002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001848154811061032957610328612450565b5b905f5260205f2090600b020160040160030154838054610348906124aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610374906124aa565b80156103bf5780601f10610396576101008083540402835291602001916103bf565b820191905f5260205f20905b8154815290600101906020018083116103a257829003601f168201915b505050505093508280546103d2906124aa565b80601f01602080910402602001604051908101604052809291908181526020018280546103fe906124aa565b80156104495780601f1061042057610100808354040283529160200191610449565b820191905f5260205f20905b81548152906001019060200180831161042c57829003601f168201915b5050505050925094509450945094505092959194509250565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ee91906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461055b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055290612432565b60405180910390fd5b5f60025f8585604051602001610572929190612514565b6040516020818303038152906040528051906020012081526020019081526020015f2054036109365760035f8154809291906105ad90612563565b919050555060035460025f85856040516020016105cb929190612514565b6040516020818303038152906040528051906020012081526020019081526020015f20819055505f60018054905090506001808160018154018082558091505003905f5260205f2090505083836001838154811061062c5761062b612450565b5b905f5260205f2090600b02015f01918261064792919061277e565b50600180828154811061065d5761065c612450565b5b905f5260205f2090600b020160010181905550600180828154811061068557610684612450565b5b905f5260205f2090600b0201600201819055505f600182815481106106ad576106ac612450565b5b905f5260205f2090600b02016003018190555060405180602001604052805f815250600182815481106106e3576106e2612450565b5b905f5260205f2090600b02016004015f019081610700919061284b565b5060405180602001604052805f8152506001828154811061072457610723612450565b5b905f5260205f2090600b02016004016001019081610742919061284b565b505f6001828154811061075857610757612450565b5b905f5260205f2090600b02016004016002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600182815481106107bc576107bb612450565b5b905f5260205f2090600b020160040160030181905550600181815481106107e6576107e5612450565b5b905f5260205f2090600b0201600101546001828154811061080a57610809612450565b5b905f5260205f2090600b02016009015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001818154811061086c5761086b612450565b5b905f5260205f2090600b020160080160405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548160ff021916908315150217905550505050610d33565b5f61098384848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b90505f6001828154811061099a57610999612450565b5b905f5260205f2090600b02016009015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610bbd57600181815481106109fe576109fd612450565b5b905f5260205f2090600b02016001015f815480929190610a1d90612563565b919050555060018181548110610a3657610a35612450565b5b905f5260205f2090600b02016001015460018281548110610a5a57610a59612450565b5b905f5260205f2090600b02016009015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060018181548110610abc57610abb612450565b5b905f5260205f2090600b020160080160405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548160ff021916908315150217905550505060018181548110610b9457610b93612450565b5b905f5260205f2090600b02016002015f815480929190610bb390612563565b9190505550610d31565b5f610c0b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505084611d73565b90506001151560018381548110610c2557610c24612450565b5b905f5260205f2090600b02016008018281548110610c4657610c45612450565b5b905f5260205f20015f0160149054906101000a900460ff16151503610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790612964565b60405180910390fd5b6001808381548110610cb557610cb4612450565b5b905f5260205f2090600b02016008018281548110610cd657610cd5612450565b5b905f5260205f20015f0160146101000a81548160ff02191690831515021790555060018281548110610d0b57610d0a612450565b5b905f5260205f2090600b02016002015f815480929190610d2a90612563565b9190505550505b505b7f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574838383604051610d6693929190612982565b60405180910390a1505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff91906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390612432565b60405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508160011515610ebf8383611e2b565b151514610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef8906129fc565b60405180910390fd5b5f610f4e86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b90505f610f9e87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505086611d73565b905060018281548110610fb457610fb3612450565b5b905f5260205f2090600b02016002015f815480929190610fd390612a1a565b91905055505f60018381548110610fed57610fec612450565b5b905f5260205f2090600b0201600801828154811061100e5761100d612450565b5b905f5260205f20015f0160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b687878760405161106293929190612982565b60405180910390a150505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110191906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461116e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116590612432565b60405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505083600115156111c18383611e2b565b151514611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa906129fc565b60405180910390fd5b6001151561125488888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505086611f0b565b151514611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612a8b565b60405180910390fd5b5f6112e388888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b905060011515600182815481106112fd576112fc612450565b5b905f5260205f2090600b0201600a015f8381526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90612af3565b60405180910390fd5b600181815481106113b9576113b8612450565b5b905f5260205f2090600b02016003015f8154809291906113d890612563565b919050555060018082815481106113f2576113f1612450565b5b905f5260205f2090600b0201600a015f8381526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b435088888604051611492929190612514565b60405180910390a16002600182815481106114b0576114af612450565b5b905f5260205f2090600b0201600201546114ca9190612b3e565b600182815481106114de576114dd612450565b5b905f5260205f2090600b02016003015411156116105760405180602001604052805f8152506001828154811061151757611516612450565b5b905f5260205f2090600b02016004015f019081611534919061284b565b5060405180602001604052805f8152506001828154811061155857611557612450565b5b905f5260205f2090600b02016004016001019081611576919061284b565b505f6001828154811061158c5761158b612450565b5b905f5260205f2090600b02016004016002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600182815481106115f0576115ef612450565b5b905f5260205f2090600b0201600401600301819055506001935050611615565b5f9350505b5050949350505050565b5f611628611f45565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156116705750825b90505f60018367ffffffffffffffff161480156116a357505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156116b1575080155b156116e8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611735576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90612bb8565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550831561183c575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516118339190612c22565b60405180910390a15b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d091906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193490612432565b60405180910390fd5b61198a88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050505f611f0b565b6119c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c090612cab565b60405180910390fd5b5f611a1689898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b9050868660018381548110611a2e57611a2d612450565b5b905f5260205f2090600b02016004015f019182611a4c92919061277e565b50848460018381548110611a6357611a62612450565b5b905f5260205f2090600b02016004016001019182611a8292919061277e565b508260018281548110611a9857611a97612450565b5b905f5260205f2090600b02016004016002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160018281548110611afc57611afb612450565b5b905f5260205f2090600b0201600401600301819055505f5b60018281548110611b2857611b27612450565b5b905f5260205f2090600b020160080180549050811015611c845760018281548110611b5657611b55612450565b5b905f5260205f2090600b02016008018181548110611b7757611b76612450565b5b905f5260205f20015f0160149054906101000a900460ff1615611c77575f60018381548110611ba957611ba8612450565b5b905f5260205f2090600b0201600a015f8481526020019081526020015f205f60018581548110611bdc57611bdb612450565b5b905f5260205f2090600b02016008018481548110611bfd57611bfc612450565b5b905f5260205f20015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b8080600101915050611b14565b505f60018281548110611c9a57611c99612450565b5b905f5260205f2090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca38989604051611cde929190612514565b60405180910390a1505050505050505050565b5f8060025f84604051602001611d079190612cc9565b6040516020818303038152906040528051906020012081526020019081526020015f205490505f8103611d5d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050611d6e565b600181611d6a9190612ce9565b9150505b919050565b5f80611d7e84611cf1565b90505f60018281548110611d9557611d94612450565b5b905f5260205f2090600b02016009015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8103611e13577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92505050611e25565b600181611e209190612ce9565b925050505b92915050565b5f80611e3684611cf1565b90505f60018281548110611e4d57611e4c612450565b5b905f5260205f2090600b02016009015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403611ea6575f915050611f05565b5f611eb18585611d73565b905060018281548110611ec757611ec6612450565b5b905f5260205f2090600b02016008018181548110611ee857611ee7612450565b5b905f5260205f20015f0160149054906101000a900460ff16925050505b92915050565b5f816001611f1885611cf1565b81548110611f2957611f28612450565b5b905f5260205f2090600b02016004016003015414905092915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f9557611f94611f74565b5b8235905067ffffffffffffffff811115611fb257611fb1611f78565b5b602083019150836001820283011115611fce57611fcd611f7c565b5b9250929050565b5f8060208385031215611feb57611fea611f6c565b5b5f83013567ffffffffffffffff81111561200857612007611f70565b5b61201485828601611f80565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561205757808201518184015260208101905061203c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61207c82612020565b612086818561202a565b935061209681856020860161203a565b61209f81612062565b840191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120d3826120aa565b9050919050565b6120e3816120c9565b82525050565b5f819050919050565b6120fb816120e9565b82525050565b5f6080820190508181035f8301526121198187612072565b9050818103602083015261212d8186612072565b905061213c60408301856120da565b61214960608301846120f2565b95945050505050565b61215b816120c9565b8114612165575f80fd5b50565b5f8135905061217681612152565b92915050565b5f805f6040848603121561219357612192611f6c565b5b5f84013567ffffffffffffffff8111156121b0576121af611f70565b5b6121bc86828701611f80565b935093505060206121cf86828701612168565b9150509250925092565b6121e2816120e9565b81146121ec575f80fd5b50565b5f813590506121fd816121d9565b92915050565b5f805f806060858703121561221b5761221a611f6c565b5b5f85013567ffffffffffffffff81111561223857612237611f70565b5b61224487828801611f80565b9450945050602061225787828801612168565b9250506040612268878288016121ef565b91505092959194509250565b5f8115159050919050565b61228881612274565b82525050565b5f6020820190506122a15f83018461227f565b92915050565b5f602082840312156122bc576122bb611f6c565b5b5f6122c984828501612168565b91505092915050565b5f805f805f805f8060a0898b0312156122ee576122ed611f6c565b5b5f89013567ffffffffffffffff81111561230b5761230a611f70565b5b6123178b828c01611f80565b9850985050602089013567ffffffffffffffff81111561233a57612339611f70565b5b6123468b828c01611f80565b9650965050604089013567ffffffffffffffff81111561236957612368611f70565b5b6123758b828c01611f80565b945094505060606123888b828c01612168565b92505060806123998b828c016121ef565b9150509295985092959890939650565b5f815190506123b781612152565b92915050565b5f602082840312156123d2576123d1611f6c565b5b5f6123df848285016123a9565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f61241c600e8361202a565b9150612427826123e8565b602082019050919050565b5f6020820190508181035f83015261244981612410565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124c157607f821691505b6020821081036124d4576124d361247d565b5b50919050565b828183375f83830152505050565b5f6124f3838561202a565b93506125008385846124da565b61250983612062565b840190509392505050565b5f6020820190508181035f83015261252d8184866124e8565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61256d826120e9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361259f5761259e612536565b5b600182019050919050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261263d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612602565b6126478683612602565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61268261267d612678846120e9565b61265f565b6120e9565b9050919050565b5f819050919050565b61269b83612668565b6126af6126a782612689565b84845461260e565b825550505050565b5f90565b6126c36126b7565b6126ce818484612692565b505050565b5b818110156126f1576126e65f826126bb565b6001810190506126d4565b5050565b601f82111561273657612707816125e1565b612710846125f3565b8101602085101561271f578190505b61273361272b856125f3565b8301826126d3565b50505b505050565b5f82821c905092915050565b5f6127565f198460080261273b565b1980831691505092915050565b5f61276e8383612747565b9150826002028217905092915050565b61278883836125aa565b67ffffffffffffffff8111156127a1576127a06125b4565b5b6127ab82546124aa565b6127b68282856126f5565b5f601f8311600181146127e3575f84156127d1578287013590505b6127db8582612763565b865550612842565b601f1984166127f1866125e1565b5f5b82811015612818578489013582556001820191506020850194506020810190506127f3565b868310156128355784890135612831601f891682612747565b8355505b6001600288020188555050505b50505050505050565b61285482612020565b67ffffffffffffffff81111561286d5761286c6125b4565b5b61287782546124aa565b6128828282856126f5565b5f60209050601f8311600181146128b3575f84156128a1578287015190505b6128ab8582612763565b865550612912565b601f1984166128c1866125e1565b5f5b828110156128e8578489015182556001820191506020850194506020810190506128c3565b868310156129055784890151612901601f891682612747565b8355505b6001600288020188555050505b505050505050565b7f616c7265616479206120766f74657200000000000000000000000000000000005f82015250565b5f61294e600f8361202a565b91506129598261291a565b602082019050919050565b5f6020820190508181035f83015261297b81612942565b9050919050565b5f6040820190508181035f83015261299b8185876124e8565b90506129aa60208301846120da565b949350505050565b7f6d757374206265206120766f74657200000000000000000000000000000000005f82015250565b5f6129e6600f8361202a565b91506129f1826129b2565b602082019050919050565b5f6020820190508181035f830152612a13816129da565b9050919050565b5f612a24826120e9565b91505f8203612a3657612a35612536565b5b600182039050919050565b7f6e6f7468696e6720746f20617070726f766500000000000000000000000000005f82015250565b5f612a7560128361202a565b9150612a8082612a41565b602082019050919050565b5f6020820190508181035f830152612aa281612a69565b9050919050565b7f63616e6e6f7420646f75626c6520766f746500000000000000000000000000005f82015250565b5f612add60128361202a565b9150612ae882612aa9565b602082019050919050565b5f6020820190508181035f830152612b0a81612ad1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b48826120e9565b9150612b53836120e9565b925082612b6357612b62612b11565b5b828204905092915050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f612ba2601b8361202a565b9150612bad82612b6e565b602082019050919050565b5f6020820190508181035f830152612bcf81612b96565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f612c0c612c07612c0284612bd6565b61265f565b612bdf565b9050919050565b612c1c81612bf2565b82525050565b5f602082019050612c355f830184612c13565b92915050565b7f6974656d732070656e64696e6720666f7220617070726f76616c2e206e6577205f8201527f6974656d2063616e6e6f74206265206164646564000000000000000000000000602082015250565b5f612c9560348361202a565b9150612ca082612c3b565b604082019050919050565b5f6020820190508181035f830152612cc281612c89565b9050919050565b5f6020820190508181035f830152612ce18184612072565b905092915050565b5f612cf3826120e9565b9150612cfe836120e9565b9250828203905081811115612d1657612d15612536565b5b9291505056fea26469706673582212200e739070aa6d77efa044c7c065c37ef5f85890f577daa7b3aefe64a17e0cb78564736f6c63430008180033", +} + // VoterManagerABI is the input ABI used to generate the binding from. -const VoterManagerABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getPendingOpDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"addVoter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"deleteVoter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_authOrg\",\"type\":\"string\"},{\"name\":\"_vAccount\",\"type\":\"address\"},{\"name\":\"_pendingOp\",\"type\":\"uint256\"}],\"name\":\"processVote\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_authOrg\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_pendingOp\",\"type\":\"uint256\"}],\"name\":\"addVotingItem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"VoterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"VoterDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"VotingItemAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"VoteProcessed\",\"type\":\"event\"}]" +// Deprecated: Use VoterManagerMetaData.ABI instead. +var VoterManagerABI = VoterManagerMetaData.ABI var VoterManagerParsedABI, _ = abi.JSON(strings.NewReader(VoterManagerABI)) // VoterManagerBin is the compiled bytecode used for deploying new contracts. -var VoterManagerBin = "0x6080604052600060035534801561001557600080fd5b50604051602080611fe48339810180604052602081101561003557600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055611f7d806100676000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063014e6acc1461005c5780635607395b146101c857806359cbd6fe14610241578063b0213864146102b8578063e98ac22d14610349575b600080fd5b6100ca6004803603602081101561007257600080fd5b810190602081018135600160201b81111561008c57600080fd5b82018360208201111561009e57600080fd5b803590602001918460018302840111600160201b831117156100bf57600080fd5b509092509050610466565b604051808060200180602001856001600160a01b03166001600160a01b03168152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015610129578181015183820152602001610111565b50505050905090810190601f1680156101565780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61023f600480360360408110156101de57600080fd5b810190602081018135600160201b8111156101f857600080fd5b82018360208201111561020a57600080fd5b803590602001918460018302840111600160201b8311171561022b57600080fd5b9193509150356001600160a01b0316610740565b005b61023f6004803603604081101561025757600080fd5b810190602081018135600160201b81111561027157600080fd5b82018360208201111561028357600080fd5b803590602001918460018302840111600160201b831117156102a457600080fd5b9193509150356001600160a01b0316610f06565b610335600480360360608110156102ce57600080fd5b810190602081018135600160201b8111156102e857600080fd5b8201836020820111156102fa57600080fd5b803590602001918460018302840111600160201b8311171561031b57600080fd5b91935091506001600160a01b0381351690602001356111e8565b604080519115158252519081900360200190f35b61023f600480360360a081101561035f57600080fd5b810190602081018135600160201b81111561037957600080fd5b82018360208201111561038b57600080fd5b803590602001918460018302840111600160201b831117156103ac57600080fd5b919390929091602081019035600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b919390929091602081019035600160201b81111561041957600080fd5b82018360208201111561042b57600080fd5b803590602001918460018302840111600160201b8311171561044c57600080fd5b91935091506001600160a01b0381351690602001356116f8565b6060806000806000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b957600080fd5b505afa1580156104cd573d6000803e3d6000fd5b505050506040513d60208110156104e357600080fd5b50516001600160a01b031633146105385760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b600061057987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b905060018181548110151561058a57fe5b90600052602060002090600b02016004016000016001828154811015156105ad57fe5b90600052602060002090600b02016004016001016001838154811015156105d057fe5b600091825260209091206006600b909202010154600180546001600160a01b0390921691859081106105fe57fe5b60009182526020918290206007600b909202010154845460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928691908301828280156106995780601f1061066e57610100808354040283529160200191610699565b820191906000526020600020905b81548152906001019060200180831161067c57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156107275780601f106106fc57610100808354040283529160200191610727565b820191906000526020600020905b81548152906001019060200180831161070a57829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561078d57600080fd5b505afa1580156107a1573d6000803e3d6000fd5b505050506040513d60208110156107b757600080fd5b50516001600160a01b0316331461080c5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60026000848460405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415610b78576003805460010190819055604080516020808201908152918101859052600291600091879187918190606001848480828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020819055506000600180548091906001016109069190611cdd565b9050838360018381548110151561091957fe5b6000918252602090912061093393600b9092020191611d0e565b506001808281548110151561094457fe5b90600052602060002090600b0201600101819055506001808281548110151561096957fe5b90600052602060002090600b020160020181905550600060018281548110151561098f57fe5b90600052602060002090600b020160030181905550604051806020016040528060008152506001828154811015156109c357fe5b90600052602060002090600b020160040160000190805190602001906109ea929190611d8c565b506040805160208101909152600081526001805483908110610a0857fe5b90600052602060002090600b02016004016001019080519060200190610a2f929190611d8c565b506000600182815481101515610a4157fe5b600091825260208220600b919091020160060180546001600160a01b0319166001600160a01b0393909316929092179091556001805483908110610a8157fe5b600091825260209091206007600b9092020101556001805482908110610aa357fe5b90600052602060002090600b020160010154600182815481101515610ac457fe5b600091825260208083206001600160a01b03871684526009600b9093020191909101905260409020556001805482908110610afb57fe5b60009182526020808320604080518082019091526001600160a01b0387811682526001828501818152600b969096029093016008018054938401815586529290942093519301805492516001600160a01b03199093169390911692909217600160a01b60ff021916600160a01b9115159190910217905550610e90565b6000610bb984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b9050600181815481101515610bca57fe5b600091825260208083206001600160a01b03861684526009600b9093020191909101905260409020541515610d2c576001805482908110610c0757fe5b600091825260209091206001600b909202018101805482019055805482908110610c2d57fe5b90600052602060002090600b020160010154600182815481101515610c4e57fe5b600091825260208083206001600160a01b03871684526009600b9093020191909101905260409020556001805482908110610c8557fe5b60009182526020808320604080518082019091526001600160a01b0387811682526001828501818152600b96909602909301600801805480850182559087529390952090519201805493516001600160a01b03199094169290941691909117600160a01b60ff021916600160a01b9215159290920291909117909155805482908110610d0d57fe5b600091825260209091206002600b909202010180546001019055610e8e565b6000610d6f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611ba5915050565b9050600182815481101515610d8057fe5b90600052602060002090600b020160080181815481101515610d9e57fe5b600091825260209091200154600160a01b900460ff16151560011415610e0e5760408051600160e51b62461bcd02815260206004820152600f60248201527f616c7265616479206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b60018083815481101515610e1e57fe5b90600052602060002090600b020160080182815481101515610e3c57fe5b60009182526020909120018054911515600160a01b02600160a01b60ff02199092169190911790556001805483908110610e7257fe5b600091825260209091206002600b909202010180546001019055505b505b604080516001600160a01b03831660208201528181529081018390527f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574908490849084908060608101858580828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610f5357600080fd5b505afa158015610f67573d6000803e3d6000fd5b505050506040513d6020811015610f7d57600080fd5b50516001600160a01b03163314610fd25760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250611016915083905082611bf7565b15156001146110645760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e36bab9ba1031329030903b37ba32b902604482015290519081900360640190fd5b60006110a586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b905060006110ea87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611ba5915050565b90506001828154811015156110fb57fe5b6000918252602082206002600b90920201018054600019019055600180548490811061112357fe5b90600052602060002090600b02016008018281548110151561114157fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b68787876040518080602001836001600160a01b03166001600160a01b031681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561123757600080fd5b505afa15801561124b573d6000803e3d6000fd5b505050506040513d602081101561126157600080fd5b50516001600160a01b031633146112b65760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506112fa915083905082611bf7565b15156001146113485760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e36bab9ba1031329030903b37ba32b902604482015290519081900360640190fd5b61138987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250611ca7915050565b15156001146113e25760408051600160e51b62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061142388888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b905060018181548110151561143457fe5b60009182526020808320848452600a600b9093020191909101815260408083206001600160a01b038a16845290915290205460ff161515600114156114c35760408051600160e51b62461bcd02815260206004820152601260248201527f63616e6e6f7420646f75626c6520766f74650000000000000000000000000000604482015290519081900360640190fd5b60018054829081106114d157fe5b600091825260209091206003600b90920201018054600190810190915580548190839081106114fc57fe5b60009182526020808320858452600b92909202909101600a01815260408083206001600160a01b038b168452825291829020805460ff19169315159390931790925580518281529182018990527f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a160026001828154811015156115ac57fe5b90600052602060002090600b0201600201548115156115c757fe5b046001828154811015156115d757fe5b90600052602060002090600b02016003015411156116e857604080516020810190915260008152600180548390811061160c57fe5b90600052602060002090600b02016004016000019080519060200190611633929190611d8c565b50604080516020810190915260008152600180548390811061165157fe5b90600052602060002090600b02016004016001019080519060200190611678929190611d8c565b50600060018281548110151561168a57fe5b600091825260208220600b919091020160060180546001600160a01b0319166001600160a01b03939093169290921790915560018054839081106116ca57fe5b600091825260209091206007600b90920201015550600192506116ee565b60009350505b5050949350505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561174557600080fd5b505afa158015611759573d6000803e3d6000fd5b505050506040513d602081101561176f57600080fd5b50516001600160a01b031633146117c45760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b61180388888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611ca7915050565b151561184357604051600160e51b62461bcd028152600401808060200182810382526034815260200180611f1e6034913960400191505060405180910390fd5b600061188489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b9050868660018381548110151561189757fe5b90600052602060002090600b020160040160000191906118b8929190611d0e565b5084846001838154811015156118ca57fe5b90600052602060002090600b020160040160010191906118eb929190611d0e565b50826001828154811015156118fc57fe5b90600052602060002090600b020160040160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508160018281548110151561194457fe5b6000918252602082206007600b9092020101919091555b600180548390811061196957fe5b90600052602060002090600b020160080180549050811015611a6b57600180548390811061199357fe5b90600052602060002090600b0201600801818154811015156119b157fe5b600091825260209091200154600160a01b900460ff1615611a635760006001838154811015156119dd57fe5b90600052602060002090600b0201600a0160008481526020019081526020016000206000600185815481101515611a1057fe5b90600052602060002090600b020160080184815481101515611a2e57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b60010161195b565b506000600182815481101515611a7d57fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611b46578181015183820152602001611b2e565b50505050905090810190601f168015611b735780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b600080611bb184611afd565b905060018082815481101515611bc357fe5b600091825260208083206001600160a01b03881684526009600b909302019190910190526040902054039150505b92915050565b600080611c0384611afd565b9050600181815481101515611c1457fe5b600091825260208083206001600160a01b03871684526009600b9093020191909101905260409020541515611c4d576000915050611bf1565b6000611c598585611ba5565b9050600182815481101515611c6a57fe5b90600052602060002090600b020160080181815481101515611c8857fe5b600091825260209091200154600160a01b900460ff1695945050505050565b6000816001611cb585611afd565b81548110611cbf57fe5b90600052602060002090600b02016004016003015414905092915050565b815481835581811115611d0957600b0281600b028360005260206000209182019101611d099190611dfa565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611d4f5782800160ff19823516178555611d7c565b82800160010185558215611d7c579182015b82811115611d7c578235825591602001919060010190611d61565b50611d88929150611e7f565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dcd57805160ff1916838001178555611d7c565b82800160010185558215611d7c579182015b82811115611d7c578251825591602001919060010190611ddf565b611e7c91905b80821115611d88576000611e148282611e99565b60006001830181905560028301819055600383018190556004830190611e3a8282611e99565b611e48600183016000611e99565b506002810180546001600160a01b031916905560006003909101819055611e73906008840190611ee0565b50600b01611e00565b90565b611e7c91905b80821115611d885760008155600101611e85565b50805460018160011615610100020316600290046000825580601f10611ebf5750611edd565b601f016020900490600052602060002090810190611edd9190611e7f565b50565b5080546000825590600052602060002090810190611edd9190611e7c91905b80821115611d885780546001600160a81b0319168155600101611eff56fe6974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a723058207dc9a68c6931494f043f7420dfa8288733d9a3a676ed30b4ac8e9cc704bd928b0029" +// Deprecated: Use VoterManagerMetaData.Bin instead. +var VoterManagerBin = VoterManagerMetaData.Bin // DeployVoterManager deploys a new Ethereum contract, binding an instance of VoterManager to it. -func DeployVoterManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *VoterManager, error) { - parsed, err := abi.JSON(strings.NewReader(VoterManagerABI)) +func DeployVoterManager(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *VoterManager, error) { + parsed, err := VoterManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(VoterManagerBin), backend, _permUpgradable) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(VoterManagerBin), backend) if err != nil { return common.Address{}, nil, nil, err } @@ -287,6 +300,27 @@ func (_VoterManager *VoterManagerTransactorSession) DeleteVoter(_orgId string, _ return _VoterManager.Contract.DeleteVoter(&_VoterManager.TransactOpts, _orgId, _vAccount) } +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_VoterManager *VoterManagerTransactor) Initialize(opts *bind.TransactOpts, _permUpgradable common.Address) (*types.Transaction, error) { + return _VoterManager.contract.Transact(opts, "initialize", _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_VoterManager *VoterManagerSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _VoterManager.Contract.Initialize(&_VoterManager.TransactOpts, _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_VoterManager *VoterManagerTransactorSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _VoterManager.Contract.Initialize(&_VoterManager.TransactOpts, _permUpgradable) +} + // ProcessVote is a paid mutator transaction binding the contract method 0xb0213864. // // Solidity: function processVote(string _authOrg, address _vAccount, uint256 _pendingOp) returns(bool) @@ -308,6 +342,142 @@ func (_VoterManager *VoterManagerTransactorSession) ProcessVote(_authOrg string, return _VoterManager.Contract.ProcessVote(&_VoterManager.TransactOpts, _authOrg, _vAccount, _pendingOp) } +// VoterManagerInitializedVoterIterator is returned from FilterInitializedVoter and is used to iterate over the raw logs and unpacked data for InitializedVoter events raised by the VoterManager contract. +type VoterManagerInitializedVoterIterator struct { + Event *VoterManagerInitializedVoter // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *VoterManagerInitializedVoterIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(VoterManagerInitializedVoter) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(VoterManagerInitializedVoter) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *VoterManagerInitializedVoterIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *VoterManagerInitializedVoterIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// VoterManagerInitializedVoter represents a InitializedVoter event raised by the VoterManager contract. +type VoterManagerInitializedVoter struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitializedVoter is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_VoterManager *VoterManagerFilterer) FilterInitializedVoter(opts *bind.FilterOpts) (*VoterManagerInitializedVoterIterator, error) { + + logs, sub, err := _VoterManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &VoterManagerInitializedVoterIterator{contract: _VoterManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +var InitializedVoterTopicHash = "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + +// WatchInitializedVoter is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_VoterManager *VoterManagerFilterer) WatchInitializedVoter(opts *bind.WatchOpts, sink chan<- *VoterManagerInitializedVoter) (event.Subscription, error) { + + logs, sub, err := _VoterManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(VoterManagerInitializedVoter) + if err := _VoterManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitializedVoter is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_VoterManager *VoterManagerFilterer) ParseInitializedVoter(log types.Log) (*VoterManagerInitializedVoter, error) { + event := new(VoterManagerInitializedVoter) + if err := _VoterManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // VoterManagerVoteProcessedIterator is returned from FilterVoteProcessed and is used to iterate over the raw logs and unpacked data for VoteProcessed events raised by the VoterManager contract. type VoterManagerVoteProcessedIterator struct { Event *VoterManagerVoteProcessed // Event containing the contract specifics and raw log @@ -440,6 +610,7 @@ func (_VoterManager *VoterManagerFilterer) ParseVoteProcessed(log types.Log) (*V if err := _VoterManager.contract.UnpackLog(event, "VoteProcessed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -576,6 +747,7 @@ func (_VoterManager *VoterManagerFilterer) ParseVoterAdded(log types.Log) (*Vote if err := _VoterManager.contract.UnpackLog(event, "VoterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -712,6 +884,7 @@ func (_VoterManager *VoterManagerFilterer) ParseVoterDeleted(log types.Log) (*Vo if err := _VoterManager.contract.UnpackLog(event, "VoterDeleted", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -847,5 +1020,6 @@ func (_VoterManager *VoterManagerFilterer) ParseVotingItemAdded(log types.Log) ( if err := _VoterManager.contract.UnpackLog(event, "VotingItemAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/permission/v2/bind/whitelist.go b/permission/v2/bind/whitelist.go new file mode 100644 index 0000000000..c9937b853d --- /dev/null +++ b/permission/v2/bind/whitelist.go @@ -0,0 +1,788 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bind + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// ContractWhitelistManagerMetaData contains all meta data concerning the ContractWhitelistManager contract. +var ContractWhitelistManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddr\",\"type\":\"address\"}],\"name\":\"ContractWhitelistAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddr\",\"type\":\"address\"}],\"name\":\"ContractWhitelistRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"}],\"name\":\"addWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfWhitelistedContracts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWhitelistedContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"}],\"name\":\"isContractWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"}],\"name\":\"revokeWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50610f6f8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c80637e47daa1146100645780639c7f331514610082578063b5a93e261461009e578063c057058a146100bc578063c4d66de8146100ec578063f80f5dd514610108575b5f80fd5b61006c610124565b6040516100799190610b45565b60405180910390f35b61009c60048036038101906100979190610b93565b61013e565b005b6100a66102ff565b6040516100b39190610bd6565b60405180910390f35b6100d660048036038101906100d19190610b93565b610318565b6040516100e39190610c09565b60405180910390f35b61010660048036038101906101019190610b93565b61033d565b005b610122600480360381019061011d9190610b93565b61056b565b005b606061013961013161072d565b600101610793565b905090565b61014661072d565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d49190610c36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023890610cbb565b60405180910390fd5b5f61024a61072d565b905061026282826001016107b290919063ffffffff16565b6102a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029890610d23565b60405180910390fd5b6102b782826001016107df90919063ffffffff16565b508173ffffffffffffffffffffffffffffffffffffffff167fe5044c30eab65bda022826bec45e211a3f9c73ed493965c7fef15d626fb065d960405160405180910390a25050565b5f61031361030b61072d565b60010161080c565b905090565b5f6103368261032561072d565b6001016107b290919063ffffffff16565b9050919050565b5f61034661081f565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561038e5750825b90505f60018367ffffffffffffffff161480156103c157505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156103cf575080155b15610406576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610453576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036104c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b890610d8b565b60405180910390fd5b856104ca61072d565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315610563575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161055a9190610dfe565b60405180910390a15b505050505050565b61057361072d565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106019190610c36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066590610cbb565b60405180910390fd5b5f61067761072d565b905061068f82826001016107b290919063ffffffff16565b156106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690610e61565b60405180910390fd5b6106e5828260010161084690919063ffffffff16565b508173ffffffffffffffffffffffffffffffffffffffff167f69d296e2418833651c8d83f409c6339e9f1243ad2653b985e62a39d4307ee50b60405160405180910390a25050565b5f8060ff5f1b1960017fdc0a0fb9b8c3742858130ce0eafb2fa7793d4ff4fec8654c10918f0e0dfd8c765f1c6107639190610eac565b6040516020016107739190610bd6565b604051602081830303815290604052805190602001201690508091505090565b60605f6107a1835f01610873565b905060608190508092505050919050565b5f6107d7835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6108cc565b905092915050565b5f610804835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6108ec565b905092915050565b5f610818825f016109e8565b9050919050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f61086b835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6109f7565b905092915050565b6060815f018054806020026020016040519081016040528092919081815260200182805480156108c057602002820191905f5260205f20905b8154815260200190600101908083116108ac575b50505050509050919050565b5f80836001015f8481526020019081526020015f20541415905092915050565b5f80836001015f8481526020019081526020015f205490505f81146109dd575f6001826109199190610eac565b90505f6001865f018054905061092f9190610eac565b9050808214610995575f865f01828154811061094e5761094d610edf565b5b905f5260205f200154905080875f01848154811061096f5761096e610edf565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f018054806109a8576109a7610f0c565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109e2565b5f9150505b92915050565b5f815f01805490509050919050565b5f610a0283836108cc565b610a5457825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050610a58565b5f90505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ab082610a87565b9050919050565b610ac081610aa6565b82525050565b5f610ad18383610ab7565b60208301905092915050565b5f602082019050919050565b5f610af382610a5e565b610afd8185610a68565b9350610b0883610a78565b805f5b83811015610b38578151610b1f8882610ac6565b9750610b2a83610add565b925050600181019050610b0b565b5085935050505092915050565b5f6020820190508181035f830152610b5d8184610ae9565b905092915050565b5f80fd5b610b7281610aa6565b8114610b7c575f80fd5b50565b5f81359050610b8d81610b69565b92915050565b5f60208284031215610ba857610ba7610b65565b5b5f610bb584828501610b7f565b91505092915050565b5f819050919050565b610bd081610bbe565b82525050565b5f602082019050610be95f830184610bc7565b92915050565b5f8115159050919050565b610c0381610bef565b82525050565b5f602082019050610c1c5f830184610bfa565b92915050565b5f81519050610c3081610b69565b92915050565b5f60208284031215610c4b57610c4a610b65565b5b5f610c5884828501610c22565b91505092915050565b5f82825260208201905092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f610ca5600e83610c61565b9150610cb082610c71565b602082019050919050565b5f6020820190508181035f830152610cd281610c99565b9050919050565b7f77686974656c69737420646f6573206e6f7420657869737400000000000000005f82015250565b5f610d0d601883610c61565b9150610d1882610cd9565b602082019050919050565b5f6020820190508181035f830152610d3a81610d01565b9050919050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f610d75601b83610c61565b9150610d8082610d41565b602082019050919050565b5f6020820190508181035f830152610da281610d69565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f610de8610de3610dde84610da9565b610dc5565b610db2565b9050919050565b610df881610dce565b82525050565b5f602082019050610e115f830184610def565b92915050565b7f77686974656c69737420616c72656164792065786973747300000000000000005f82015250565b5f610e4b601883610c61565b9150610e5682610e17565b602082019050919050565b5f6020820190508181035f830152610e7881610e3f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610eb682610bbe565b9150610ec183610bbe565b9250828203905081811115610ed957610ed8610e7f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220ac597c0c8eed2f244d40ea629ef71261069daac05f3a2df25a9c31fb65fb6e6264736f6c63430008180033", +} + +// ContractWhitelistManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ContractWhitelistManagerMetaData.ABI instead. +var ContractWhitelistManagerABI = ContractWhitelistManagerMetaData.ABI + +var ContractWhitelistManagerParsedABI, _ = abi.JSON(strings.NewReader(ContractWhitelistManagerABI)) + +// ContractWhitelistManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ContractWhitelistManagerMetaData.Bin instead. +var ContractWhitelistManagerBin = ContractWhitelistManagerMetaData.Bin + +// DeployContractWhitelistManager deploys a new Ethereum contract, binding an instance of ContractWhitelistManager to it. +func DeployContractWhitelistManager(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ContractWhitelistManager, error) { + parsed, err := ContractWhitelistManagerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractWhitelistManagerBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ContractWhitelistManager{ContractWhitelistManagerCaller: ContractWhitelistManagerCaller{contract: contract}, ContractWhitelistManagerTransactor: ContractWhitelistManagerTransactor{contract: contract}, ContractWhitelistManagerFilterer: ContractWhitelistManagerFilterer{contract: contract}}, nil +} + +// ContractWhitelistManager is an auto generated Go binding around an Ethereum contract. +type ContractWhitelistManager struct { + ContractWhitelistManagerCaller // Read-only binding to the contract + ContractWhitelistManagerTransactor // Write-only binding to the contract + ContractWhitelistManagerFilterer // Log filterer for contract events +} + +// ContractWhitelistManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContractWhitelistManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractWhitelistManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContractWhitelistManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractWhitelistManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContractWhitelistManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContractWhitelistManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContractWhitelistManagerSession struct { + Contract *ContractWhitelistManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContractWhitelistManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContractWhitelistManagerCallerSession struct { + Contract *ContractWhitelistManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContractWhitelistManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContractWhitelistManagerTransactorSession struct { + Contract *ContractWhitelistManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContractWhitelistManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContractWhitelistManagerRaw struct { + Contract *ContractWhitelistManager // Generic contract binding to access the raw methods on +} + +// ContractWhitelistManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContractWhitelistManagerCallerRaw struct { + Contract *ContractWhitelistManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// ContractWhitelistManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContractWhitelistManagerTransactorRaw struct { + Contract *ContractWhitelistManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContractWhitelistManager creates a new instance of ContractWhitelistManager, bound to a specific deployed contract. +func NewContractWhitelistManager(address common.Address, backend bind.ContractBackend) (*ContractWhitelistManager, error) { + contract, err := bindContractWhitelistManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContractWhitelistManager{ContractWhitelistManagerCaller: ContractWhitelistManagerCaller{contract: contract}, ContractWhitelistManagerTransactor: ContractWhitelistManagerTransactor{contract: contract}, ContractWhitelistManagerFilterer: ContractWhitelistManagerFilterer{contract: contract}}, nil +} + +// NewContractWhitelistManagerCaller creates a new read-only instance of ContractWhitelistManager, bound to a specific deployed contract. +func NewContractWhitelistManagerCaller(address common.Address, caller bind.ContractCaller) (*ContractWhitelistManagerCaller, error) { + contract, err := bindContractWhitelistManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContractWhitelistManagerCaller{contract: contract}, nil +} + +// NewContractWhitelistManagerTransactor creates a new write-only instance of ContractWhitelistManager, bound to a specific deployed contract. +func NewContractWhitelistManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractWhitelistManagerTransactor, error) { + contract, err := bindContractWhitelistManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContractWhitelistManagerTransactor{contract: contract}, nil +} + +// NewContractWhitelistManagerFilterer creates a new log filterer instance of ContractWhitelistManager, bound to a specific deployed contract. +func NewContractWhitelistManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractWhitelistManagerFilterer, error) { + contract, err := bindContractWhitelistManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContractWhitelistManagerFilterer{contract: contract}, nil +} + +// bindContractWhitelistManager binds a generic wrapper to an already deployed contract. +func bindContractWhitelistManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(ContractWhitelistManagerABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContractWhitelistManager *ContractWhitelistManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractWhitelistManager.Contract.ContractWhitelistManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContractWhitelistManager *ContractWhitelistManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.ContractWhitelistManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractWhitelistManager *ContractWhitelistManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.ContractWhitelistManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContractWhitelistManager *ContractWhitelistManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContractWhitelistManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContractWhitelistManager *ContractWhitelistManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContractWhitelistManager *ContractWhitelistManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.contract.Transact(opts, method, params...) +} + +// GetNumberOfWhitelistedContracts is a free data retrieval call binding the contract method 0xb5a93e26. +// +// Solidity: function getNumberOfWhitelistedContracts() view returns(uint256) +func (_ContractWhitelistManager *ContractWhitelistManagerCaller) GetNumberOfWhitelistedContracts(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ContractWhitelistManager.contract.Call(opts, &out, "getNumberOfWhitelistedContracts") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetNumberOfWhitelistedContracts is a free data retrieval call binding the contract method 0xb5a93e26. +// +// Solidity: function getNumberOfWhitelistedContracts() view returns(uint256) +func (_ContractWhitelistManager *ContractWhitelistManagerSession) GetNumberOfWhitelistedContracts() (*big.Int, error) { + return _ContractWhitelistManager.Contract.GetNumberOfWhitelistedContracts(&_ContractWhitelistManager.CallOpts) +} + +// GetNumberOfWhitelistedContracts is a free data retrieval call binding the contract method 0xb5a93e26. +// +// Solidity: function getNumberOfWhitelistedContracts() view returns(uint256) +func (_ContractWhitelistManager *ContractWhitelistManagerCallerSession) GetNumberOfWhitelistedContracts() (*big.Int, error) { + return _ContractWhitelistManager.Contract.GetNumberOfWhitelistedContracts(&_ContractWhitelistManager.CallOpts) +} + +// GetWhitelistedContracts is a free data retrieval call binding the contract method 0x7e47daa1. +// +// Solidity: function getWhitelistedContracts() view returns(address[]) +func (_ContractWhitelistManager *ContractWhitelistManagerCaller) GetWhitelistedContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ContractWhitelistManager.contract.Call(opts, &out, "getWhitelistedContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetWhitelistedContracts is a free data retrieval call binding the contract method 0x7e47daa1. +// +// Solidity: function getWhitelistedContracts() view returns(address[]) +func (_ContractWhitelistManager *ContractWhitelistManagerSession) GetWhitelistedContracts() ([]common.Address, error) { + return _ContractWhitelistManager.Contract.GetWhitelistedContracts(&_ContractWhitelistManager.CallOpts) +} + +// GetWhitelistedContracts is a free data retrieval call binding the contract method 0x7e47daa1. +// +// Solidity: function getWhitelistedContracts() view returns(address[]) +func (_ContractWhitelistManager *ContractWhitelistManagerCallerSession) GetWhitelistedContracts() ([]common.Address, error) { + return _ContractWhitelistManager.Contract.GetWhitelistedContracts(&_ContractWhitelistManager.CallOpts) +} + +// IsContractWhitelisted is a free data retrieval call binding the contract method 0xc057058a. +// +// Solidity: function isContractWhitelisted(address _contract) view returns(bool) +func (_ContractWhitelistManager *ContractWhitelistManagerCaller) IsContractWhitelisted(opts *bind.CallOpts, _contract common.Address) (bool, error) { + var out []interface{} + err := _ContractWhitelistManager.contract.Call(opts, &out, "isContractWhitelisted", _contract) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsContractWhitelisted is a free data retrieval call binding the contract method 0xc057058a. +// +// Solidity: function isContractWhitelisted(address _contract) view returns(bool) +func (_ContractWhitelistManager *ContractWhitelistManagerSession) IsContractWhitelisted(_contract common.Address) (bool, error) { + return _ContractWhitelistManager.Contract.IsContractWhitelisted(&_ContractWhitelistManager.CallOpts, _contract) +} + +// IsContractWhitelisted is a free data retrieval call binding the contract method 0xc057058a. +// +// Solidity: function isContractWhitelisted(address _contract) view returns(bool) +func (_ContractWhitelistManager *ContractWhitelistManagerCallerSession) IsContractWhitelisted(_contract common.Address) (bool, error) { + return _ContractWhitelistManager.Contract.IsContractWhitelisted(&_ContractWhitelistManager.CallOpts, _contract) +} + +// AddWhitelist is a paid mutator transaction binding the contract method 0xf80f5dd5. +// +// Solidity: function addWhitelist(address _contract) returns() +func (_ContractWhitelistManager *ContractWhitelistManagerTransactor) AddWhitelist(opts *bind.TransactOpts, _contract common.Address) (*types.Transaction, error) { + return _ContractWhitelistManager.contract.Transact(opts, "addWhitelist", _contract) +} + +// AddWhitelist is a paid mutator transaction binding the contract method 0xf80f5dd5. +// +// Solidity: function addWhitelist(address _contract) returns() +func (_ContractWhitelistManager *ContractWhitelistManagerSession) AddWhitelist(_contract common.Address) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.AddWhitelist(&_ContractWhitelistManager.TransactOpts, _contract) +} + +// AddWhitelist is a paid mutator transaction binding the contract method 0xf80f5dd5. +// +// Solidity: function addWhitelist(address _contract) returns() +func (_ContractWhitelistManager *ContractWhitelistManagerTransactorSession) AddWhitelist(_contract common.Address) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.AddWhitelist(&_ContractWhitelistManager.TransactOpts, _contract) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_ContractWhitelistManager *ContractWhitelistManagerTransactor) Initialize(opts *bind.TransactOpts, _permUpgradable common.Address) (*types.Transaction, error) { + return _ContractWhitelistManager.contract.Transact(opts, "initialize", _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_ContractWhitelistManager *ContractWhitelistManagerSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.Initialize(&_ContractWhitelistManager.TransactOpts, _permUpgradable) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _permUpgradable) returns() +func (_ContractWhitelistManager *ContractWhitelistManagerTransactorSession) Initialize(_permUpgradable common.Address) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.Initialize(&_ContractWhitelistManager.TransactOpts, _permUpgradable) +} + +// RevokeWhitelist is a paid mutator transaction binding the contract method 0x9c7f3315. +// +// Solidity: function revokeWhitelist(address _contract) returns() +func (_ContractWhitelistManager *ContractWhitelistManagerTransactor) RevokeWhitelist(opts *bind.TransactOpts, _contract common.Address) (*types.Transaction, error) { + return _ContractWhitelistManager.contract.Transact(opts, "revokeWhitelist", _contract) +} + +// RevokeWhitelist is a paid mutator transaction binding the contract method 0x9c7f3315. +// +// Solidity: function revokeWhitelist(address _contract) returns() +func (_ContractWhitelistManager *ContractWhitelistManagerSession) RevokeWhitelist(_contract common.Address) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.RevokeWhitelist(&_ContractWhitelistManager.TransactOpts, _contract) +} + +// RevokeWhitelist is a paid mutator transaction binding the contract method 0x9c7f3315. +// +// Solidity: function revokeWhitelist(address _contract) returns() +func (_ContractWhitelistManager *ContractWhitelistManagerTransactorSession) RevokeWhitelist(_contract common.Address) (*types.Transaction, error) { + return _ContractWhitelistManager.Contract.RevokeWhitelist(&_ContractWhitelistManager.TransactOpts, _contract) +} + +// ContractWhitelistManagerContractWhitelistAddedIterator is returned from FilterContractWhitelistAdded and is used to iterate over the raw logs and unpacked data for ContractWhitelistAdded events raised by the ContractWhitelistManager contract. +type ContractWhitelistManagerContractWhitelistAddedIterator struct { + Event *ContractWhitelistManagerContractWhitelistAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContractWhitelistManagerContractWhitelistAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContractWhitelistManagerContractWhitelistAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContractWhitelistManagerContractWhitelistAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContractWhitelistManagerContractWhitelistAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractWhitelistManagerContractWhitelistAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractWhitelistManagerContractWhitelistAdded represents a ContractWhitelistAdded event raised by the ContractWhitelistManager contract. +type ContractWhitelistManagerContractWhitelistAdded struct { + ContractAddr common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterContractWhitelistAdded is a free log retrieval operation binding the contract event 0x69d296e2418833651c8d83f409c6339e9f1243ad2653b985e62a39d4307ee50b. +// +// Solidity: event ContractWhitelistAdded(address indexed _contractAddr) +func (_ContractWhitelistManager *ContractWhitelistManagerFilterer) FilterContractWhitelistAdded(opts *bind.FilterOpts, _contractAddr []common.Address) (*ContractWhitelistManagerContractWhitelistAddedIterator, error) { + + var _contractAddrRule []interface{} + for _, _contractAddrItem := range _contractAddr { + _contractAddrRule = append(_contractAddrRule, _contractAddrItem) + } + + logs, sub, err := _ContractWhitelistManager.contract.FilterLogs(opts, "ContractWhitelistAdded", _contractAddrRule) + if err != nil { + return nil, err + } + return &ContractWhitelistManagerContractWhitelistAddedIterator{contract: _ContractWhitelistManager.contract, event: "ContractWhitelistAdded", logs: logs, sub: sub}, nil +} + +var ContractWhitelistAddedTopicHash = "0x69d296e2418833651c8d83f409c6339e9f1243ad2653b985e62a39d4307ee50b" + +// WatchContractWhitelistAdded is a free log subscription operation binding the contract event 0x69d296e2418833651c8d83f409c6339e9f1243ad2653b985e62a39d4307ee50b. +// +// Solidity: event ContractWhitelistAdded(address indexed _contractAddr) +func (_ContractWhitelistManager *ContractWhitelistManagerFilterer) WatchContractWhitelistAdded(opts *bind.WatchOpts, sink chan<- *ContractWhitelistManagerContractWhitelistAdded, _contractAddr []common.Address) (event.Subscription, error) { + + var _contractAddrRule []interface{} + for _, _contractAddrItem := range _contractAddr { + _contractAddrRule = append(_contractAddrRule, _contractAddrItem) + } + + logs, sub, err := _ContractWhitelistManager.contract.WatchLogs(opts, "ContractWhitelistAdded", _contractAddrRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContractWhitelistManagerContractWhitelistAdded) + if err := _ContractWhitelistManager.contract.UnpackLog(event, "ContractWhitelistAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseContractWhitelistAdded is a log parse operation binding the contract event 0x69d296e2418833651c8d83f409c6339e9f1243ad2653b985e62a39d4307ee50b. +// +// Solidity: event ContractWhitelistAdded(address indexed _contractAddr) +func (_ContractWhitelistManager *ContractWhitelistManagerFilterer) ParseContractWhitelistAdded(log types.Log) (*ContractWhitelistManagerContractWhitelistAdded, error) { + event := new(ContractWhitelistManagerContractWhitelistAdded) + if err := _ContractWhitelistManager.contract.UnpackLog(event, "ContractWhitelistAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractWhitelistManagerContractWhitelistRevokedIterator is returned from FilterContractWhitelistRevoked and is used to iterate over the raw logs and unpacked data for ContractWhitelistRevoked events raised by the ContractWhitelistManager contract. +type ContractWhitelistManagerContractWhitelistRevokedIterator struct { + Event *ContractWhitelistManagerContractWhitelistRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContractWhitelistManagerContractWhitelistRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContractWhitelistManagerContractWhitelistRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContractWhitelistManagerContractWhitelistRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContractWhitelistManagerContractWhitelistRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractWhitelistManagerContractWhitelistRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractWhitelistManagerContractWhitelistRevoked represents a ContractWhitelistRevoked event raised by the ContractWhitelistManager contract. +type ContractWhitelistManagerContractWhitelistRevoked struct { + ContractAddr common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterContractWhitelistRevoked is a free log retrieval operation binding the contract event 0xe5044c30eab65bda022826bec45e211a3f9c73ed493965c7fef15d626fb065d9. +// +// Solidity: event ContractWhitelistRevoked(address indexed _contractAddr) +func (_ContractWhitelistManager *ContractWhitelistManagerFilterer) FilterContractWhitelistRevoked(opts *bind.FilterOpts, _contractAddr []common.Address) (*ContractWhitelistManagerContractWhitelistRevokedIterator, error) { + + var _contractAddrRule []interface{} + for _, _contractAddrItem := range _contractAddr { + _contractAddrRule = append(_contractAddrRule, _contractAddrItem) + } + + logs, sub, err := _ContractWhitelistManager.contract.FilterLogs(opts, "ContractWhitelistRevoked", _contractAddrRule) + if err != nil { + return nil, err + } + return &ContractWhitelistManagerContractWhitelistRevokedIterator{contract: _ContractWhitelistManager.contract, event: "ContractWhitelistRevoked", logs: logs, sub: sub}, nil +} + +var ContractWhitelistRevokedTopicHash = "0xe5044c30eab65bda022826bec45e211a3f9c73ed493965c7fef15d626fb065d9" + +// WatchContractWhitelistRevoked is a free log subscription operation binding the contract event 0xe5044c30eab65bda022826bec45e211a3f9c73ed493965c7fef15d626fb065d9. +// +// Solidity: event ContractWhitelistRevoked(address indexed _contractAddr) +func (_ContractWhitelistManager *ContractWhitelistManagerFilterer) WatchContractWhitelistRevoked(opts *bind.WatchOpts, sink chan<- *ContractWhitelistManagerContractWhitelistRevoked, _contractAddr []common.Address) (event.Subscription, error) { + + var _contractAddrRule []interface{} + for _, _contractAddrItem := range _contractAddr { + _contractAddrRule = append(_contractAddrRule, _contractAddrItem) + } + + logs, sub, err := _ContractWhitelistManager.contract.WatchLogs(opts, "ContractWhitelistRevoked", _contractAddrRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContractWhitelistManagerContractWhitelistRevoked) + if err := _ContractWhitelistManager.contract.UnpackLog(event, "ContractWhitelistRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseContractWhitelistRevoked is a log parse operation binding the contract event 0xe5044c30eab65bda022826bec45e211a3f9c73ed493965c7fef15d626fb065d9. +// +// Solidity: event ContractWhitelistRevoked(address indexed _contractAddr) +func (_ContractWhitelistManager *ContractWhitelistManagerFilterer) ParseContractWhitelistRevoked(log types.Log) (*ContractWhitelistManagerContractWhitelistRevoked, error) { + event := new(ContractWhitelistManagerContractWhitelistRevoked) + if err := _ContractWhitelistManager.contract.UnpackLog(event, "ContractWhitelistRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractWhitelistManagerInitializedWhitelistIterator is returned from FilterInitializedWhitelist and is used to iterate over the raw logs and unpacked data for InitializedWhitelist events raised by the ContractWhitelistManager contract. +type ContractWhitelistManagerInitializedWhitelistIterator struct { + Event *ContractWhitelistManagerInitializedWhitelist // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContractWhitelistManagerInitializedWhitelistIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContractWhitelistManagerInitializedWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContractWhitelistManagerInitializedWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContractWhitelistManagerInitializedWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractWhitelistManagerInitializedWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractWhitelistManagerInitializedWhitelist represents a InitializedWhitelist event raised by the ContractWhitelistManager contract. +type ContractWhitelistManagerInitializedWhitelist struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitializedWhitelist is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContractWhitelistManager *ContractWhitelistManagerFilterer) FilterInitializedWhitelist(opts *bind.FilterOpts) (*ContractWhitelistManagerInitializedWhitelistIterator, error) { + + logs, sub, err := _ContractWhitelistManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ContractWhitelistManagerInitializedWhitelistIterator{contract: _ContractWhitelistManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +var InitializedWhitelistTopicHash = "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + +// WatchInitializedWhitelist is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContractWhitelistManager *ContractWhitelistManagerFilterer) WatchInitializedWhitelist(opts *bind.WatchOpts, sink chan<- *ContractWhitelistManagerInitializedWhitelist) (event.Subscription, error) { + + logs, sub, err := _ContractWhitelistManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContractWhitelistManagerInitializedWhitelist) + if err := _ContractWhitelistManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitializedWhitelist is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContractWhitelistManager *ContractWhitelistManagerFilterer) ParseInitializedWhitelist(log types.Log) (*ContractWhitelistManagerInitializedWhitelist, error) { + event := new(ContractWhitelistManagerInitializedWhitelist) + if err := _ContractWhitelistManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/permission/v2/contract.go b/permission/v2/contract.go index 6e4b368c4b..9ae3f008db 100644 --- a/permission/v2/contract.go +++ b/permission/v2/contract.go @@ -45,21 +45,27 @@ type Node struct { Backend *PermissionModelV2 } +type ContractWhitelist struct { + Backend *PermissionModelV2 +} + type Init struct { Backend ptype.ContractBackend //binding contracts - PermUpgr *binding.PermUpgr - PermInterf *binding.PermInterface - PermNode *binding.NodeManager - PermAcct *binding.AcctManager - PermRole *binding.RoleManager - PermOrg *binding.OrgManager + PermUpgr *binding.PermUpgr + PermInterf *binding.PermInterface + PermNode *binding.NodeManager + PermAcct *binding.AcctManager + PermRole *binding.RoleManager + PermOrg *binding.OrgManager + PermCtrWhitelist *binding.ContractWhitelistManager //sessions - PermInterfSession *binding.PermInterfaceSession - permOrgSession *binding.OrgManagerSession - permNodeSession *binding.NodeManagerSession - permRoleSession *binding.RoleManagerSession - permAcctSession *binding.AcctManagerSession + PermInterfSession *binding.PermInterfaceSession + permOrgSession *binding.OrgManagerSession + permNodeSession *binding.NodeManagerSession + permRoleSession *binding.RoleManagerSession + permAcctSession *binding.AcctManagerSession + permCtrWhitelistSession *binding.ContractWhitelistManagerSession } func (a *Account) AssignAccountRole(_args ptype.TxArgs) (*types.Transaction, error) { @@ -317,6 +323,18 @@ func (n *Node) UpdateNodeStatus(_args ptype.TxArgs) (*types.Transaction, error) return n.Backend.PermInterfSession.UpdateNodeStatus(_args.OrgId, enodeId, ip, port, raftPort, big.NewInt(int64(_args.Action))) } +func (i *Init) GetWhitelistedContracts() ([]common.Address, error) { + return i.permCtrWhitelistSession.GetWhitelistedContracts() +} + +func (c *ContractWhitelist) AddWhitelist(_args ptype.TxArgs) (*types.Transaction, error) { + return c.Backend.PermInterfSession.AddContractWhitelist(_args.ContractAddress) +} + +func (c *ContractWhitelist) RevokeWhitelistByAddress(_args ptype.TxArgs) (*types.Transaction, error) { + return c.Backend.PermInterfSession.RevokeContractWhitelist(_args.ContractAddress) +} + func (i *Init) bindContract() error { if err := ptype.BindContract(&i.PermUpgr, func() (interface{}, error) { return binding.NewPermUpgr(i.Backend.PermConfig.UpgrdAddress, i.Backend.EthClnt) @@ -348,6 +366,11 @@ func (i *Init) bindContract() error { }); err != nil { return err } + if err := ptype.BindContract(&i.PermCtrWhitelist, func() (interface{}, error) { + return binding.NewContractWhitelistManager(i.Backend.PermConfig.ContractWhitelistAddress, i.Backend.EthClnt) + }); err != nil { + return err + } return nil } @@ -401,6 +424,14 @@ func (i *Init) initSession() { Pending: true, }, } + + //populate contract whitelist + i.permCtrWhitelistSession = &binding.ContractWhitelistManagerSession{ + Contract: i.PermCtrWhitelist, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } } // checks if the passed URL is no nil and then calls GetNodeDetails diff --git a/permission/v2/contract/AccountManager.sol b/permission/v2/contract/AccountManager.sol index 0baaa0b59e..6f6470528f 100644 --- a/permission/v2/contract/AccountManager.sol +++ b/permission/v2/contract/AccountManager.sol @@ -1,6 +1,7 @@ -pragma solidity ^0.5.3; +pragma solidity ^0.8.17; import "./PermissionsUpgradable.sol"; +import "./openzeppelin-v5/Initializable.sol"; /** @title Account manager contract * @notice This contract holds implementation logic for all account management @@ -24,7 +25,7 @@ import "./PermissionsUpgradable.sol"; admin account will be in revoked status and can be assigned a new role later */ -contract AccountManager { +contract AccountManager is Initializable { PermissionsUpgradable private permUpgradable; struct AccountAccessDetails { address account; @@ -66,8 +67,9 @@ contract AccountManager { _; } - /// @notice constructor. sets the permissions upgradable address - constructor (address _permUpgradable) public { + /// @notice initialized only once. sets the permissions upgradable address + function initialize(address _permUpgradable) public initializer { + require(_permUpgradable != address(0x0), "Cannot set to empty address"); permUpgradable = PermissionsUpgradable(_permUpgradable); } @@ -172,8 +174,8 @@ contract AccountManager { the time of adding a new account as org admin account. at org level there can be one org admin account only * @param _orgId - org id - * @return bool to indicate if voter update is required or not - * @return _adminRole - indicates of the role is an admin role + * @return voterUpdate - bool to indicate if voter update is required or not + * @return account - indicates of the role is an admin role */ function removeExistingAdmin(string calldata _orgId) external onlyImplementation @@ -195,7 +197,7 @@ contract AccountManager { /** @notice function to add an account as network admin or org admin. * @param _orgId - org id * @param _account - account id - * @return bool to indicate if voter update is required or not + * @return voterUpdate - bool to indicate if voter update is required or not */ function addNewAdmin(string calldata _orgId, address _account) external onlyImplementation @@ -271,7 +273,6 @@ contract AccountManager { * @param _account - account id * @param _orgId - org id * @return bool true if the account does not exists or exists and belongs - * @return passed org */ function validateAccount(address _account, string calldata _orgId) external view returns (bool){ @@ -348,6 +349,9 @@ contract AccountManager { * @return account index */ function _getAccountIndex(address _account) internal view returns (uint256) { + if (accountIndex[_account] == 0){ + return type(uint256).max; + } return accountIndex[_account] - 1; } diff --git a/permission/v2/contract/ContractWhitelistManager.sol b/permission/v2/contract/ContractWhitelistManager.sol new file mode 100644 index 0000000000..83b083522c --- /dev/null +++ b/permission/v2/contract/ContractWhitelistManager.sol @@ -0,0 +1,117 @@ +pragma solidity ^0.8.4; + +import "./openzeppelin-v5/Initializable.sol"; +import "./openzeppelin-v5/EnumerableSet.sol"; +import "./PermissionsUpgradable.sol"; + +/** @title Contract whitelist manager contract + * @notice This contract holds implementation logic for all contract whitelisting + functionality. This can be called only by the implementation contract only. + there are few view functions exposed as public and can be called directly. + these are invoked by quorum for populating permissions data in cache + */ +contract ContractWhitelistManager is Initializable { + bytes32 private constant CONTRACT_WHITELIST_STORAGE_POSITION = + keccak256( + abi.encode( + uint256(keccak256("quorum.storage.contractwhitelist")) - 1 + ) + ) & ~bytes32(uint256(0xff)); + + using EnumerableSet for EnumerableSet.AddressSet; + + struct ContractWhitelistStorage { + PermissionsUpgradable permUpgradable; + EnumerableSet.AddressSet contractAddressSet; + } + + // contract whitelist events + event ContractWhitelistAdded(address indexed _contractAddr); + event ContractWhitelistRevoked(address indexed _contractAddr); + + /** @notice confirms that the caller is the address of implementation + contract + */ + modifier onlyImplementation() { + require( + msg.sender == + contractWhitelistStorage().permUpgradable.getPermImpl(), + "invalid caller" + ); + _; + } + + /// @notice initialized only once. sets the permissions upgradable address + function initialize(address _permUpgradable) external initializer { + require(_permUpgradable != address(0x0), "Cannot set to empty address"); + contractWhitelistStorage().permUpgradable = PermissionsUpgradable( + _permUpgradable + ); + } + + /** @notice returns the total number of whitelisted contracts + * @return total number whitelisted contracts + */ + function getNumberOfWhitelistedContracts() external view returns (uint) { + return contractWhitelistStorage().contractAddressSet.length(); + } + + /** @notice returns the array of whitelisted contracts + * @return whitelisted contracts + */ + function getWhitelistedContracts() external view returns (address[] memory) { + return contractWhitelistStorage().contractAddressSet.values(); + } + + /** @notice returns the contract whitelist details a given contract whitelist index + * @param _contract contract address + * @return status bool whether contract is whitelisted + */ + function isContractWhitelisted( + address _contract + ) external view returns (bool) { + return + contractWhitelistStorage().contractAddressSet.contains(_contract); + } + + /** @notice function to add whitelisted contract + * @param _contract - contract address + */ + function addWhitelist(address _contract) external onlyImplementation { + // Check if contract already exists + ContractWhitelistStorage storage cs = contractWhitelistStorage(); + require( + !cs.contractAddressSet.contains(_contract), + "whitelist already exists" + ); + cs.contractAddressSet.add(_contract); + emit ContractWhitelistAdded(_contract); + } + + /** @notice function to revoke whitelisted contract by address + * @param _contract - contract address + */ + function revokeWhitelist(address _contract) external onlyImplementation { + // Check if contract already exists + ContractWhitelistStorage storage cs = contractWhitelistStorage(); + require( + cs.contractAddressSet.contains(_contract), + "whitelist does not exist" + ); + cs.contractAddressSet.remove(_contract); + emit ContractWhitelistRevoked(_contract); + } + + function contractWhitelistStorage() + internal + pure + returns (ContractWhitelistStorage storage cs) + { + // Specifies a random position from a hash of a string + bytes32 storagePosition = CONTRACT_WHITELIST_STORAGE_POSITION; + // Set the position of our struct in contract storage + assembly { + cs.slot := storagePosition + } + } +} \ No newline at end of file diff --git a/permission/v2/contract/NodeManager.sol b/permission/v2/contract/NodeManager.sol index 7446ad6d79..b3f5c8bec1 100644 --- a/permission/v2/contract/NodeManager.sol +++ b/permission/v2/contract/NodeManager.sol @@ -1,6 +1,7 @@ -pragma solidity ^0.5.3; +pragma solidity ^0.8.17; import "./PermissionsUpgradable.sol"; +import "./openzeppelin-v5/Initializable.sol"; /** @title Node manager contract * @notice This contract holds implementation logic for all node management functionality. This can be called only by the implementation contract. @@ -18,7 +19,7 @@ import "./PermissionsUpgradable.sol"; Once the node is blacklisted no further activity on the node is possible. */ -contract NodeManager { +contract NodeManager is Initializable{ PermissionsUpgradable private permUpgradable; struct NodeDetails { @@ -38,7 +39,8 @@ contract NodeManager { mapping(bytes32 => uint256) private enodeIdToIndex; // tracking total number of nodes in network uint256 private numberOfNodes; - + // whether to do source IP validation during checks of connection is allowed. This is enabled by default. + bool private isIpValidationEnabled = true; // node permission events for new node propose event NodeProposed(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId); @@ -87,17 +89,20 @@ contract NodeManager { _; } - /** @notice constructor. sets the permissions upgradable address - */ - constructor (address _permUpgradable) public { + // @notice initialized only once. sets the permissions upgradable address + function initialize(address _permUpgradable) public initializer { + require(_permUpgradable != address(0x0), "Cannot set to empty address"); permUpgradable = PermissionsUpgradable(_permUpgradable); } /** @notice fetches the node details given an enode id * @param _enodeId full enode id - * @return org id - * @return enode id - * @return status of the node + * @return _orgId + * @return _enodeId + * @return _ip + * @return _port + * @return _raftport + * @return _nodeStatus - status of the node */ function getNodeDetails(string calldata enodeId) external view returns (string memory _orgId, string memory _enodeId, string memory _ip, uint16 _port, uint16 _raftport, uint256 _nodeStatus) { @@ -112,12 +117,12 @@ contract NodeManager { /** @notice fetches the node details given the index of the enode * @param _nodeIndex node index - * @return org id - * @return enode id - * @return ip of the node - * @return port of the node - * @return raftport of the node - * @return status of the node + * @return _orgId + * @return _enodeId + * @return _ip of the node + * @return _port of the node + * @return _raftport of the node + * @return _nodeStatus of the node */ function getNodeDetailsFromIndex(uint256 _nodeIndex) external view returns (string memory _orgId, string memory _enodeId, string memory _ip, uint16 _port, uint16 _raftport, uint256 _nodeStatus) { @@ -265,7 +270,11 @@ contract NodeManager { */ function _getNodeIndex(string memory _enodeId) internal view returns (uint256) { - return enodeIdToIndex[keccak256(abi.encode(_enodeId))] - 1; + uint256 enodeIndex = enodeIdToIndex[keccak256(abi.encode(_enodeId))]; + if (enodeIndex == 0){ + return type(uint256).max; + } + return enodeIndex - 1; } /** @notice checks if enode id is linked to the org id passed @@ -289,6 +298,15 @@ contract NodeManager { return nodeList[_getNodeIndex(_enodeId)].status; } + /** @notice specify whether to perform source node IP validation in determining the connection permission. + This is enabled by default. + * @param _isIpValidationEnabled whether to enable or disable the IP validation + */ + function setIpValidation(bool _isIpValidationEnabled) public + onlyImplementation { + isIpValidationEnabled = _isIpValidationEnabled; + } + /** @notice checks if the node is allowed to connect or not * @param _enodeId enode id * @param _ip IP of node @@ -301,7 +319,11 @@ contract NodeManager { return false; } uint256 nodeIndex = _getNodeIndex(_enodeId); - if (nodeList[nodeIndex].status == 2 && keccak256(abi.encode(nodeList[nodeIndex].ip)) == keccak256(abi.encode(_ip))) { + if (nodeList[nodeIndex].status == 2 + && (!isIpValidationEnabled + || keccak256(abi.encode(nodeList[nodeIndex].ip)) == keccak256(abi.encode(_ip)) + ) + ) { return true; } diff --git a/permission/v2/contract/OrgManager.sol b/permission/v2/contract/OrgManager.sol index 00d012b213..8c281bcc0c 100644 --- a/permission/v2/contract/OrgManager.sol +++ b/permission/v2/contract/OrgManager.sol @@ -1,6 +1,7 @@ -pragma solidity ^0.5.3; +pragma solidity ^0.8.17; import "./PermissionsUpgradable.sol"; +import "./openzeppelin-v5/Initializable.sol"; /** @title Organization manager contract * @notice This contract holds implementation logic for all org management functionality. This can be called only by the implementation @@ -17,7 +18,7 @@ import "./PermissionsUpgradable.sol"; Once the node is blacklisted no further activity on the node is possible. */ -contract OrgManager { +contract OrgManager is Initializable { string private adminOrgId; PermissionsUpgradable private permUpgradable; // checks if first time network boot up has happened or not @@ -52,7 +53,7 @@ contract OrgManager { event OrgSuspensionRevoked(string _orgId, string _porgId, string _ultParent, uint _level); - /** @notice confirms that the caller is the address of implementation + /** notice: confirms that the caller is the address of implementation contract */ modifier onlyImplementation{ @@ -60,29 +61,29 @@ contract OrgManager { _; } - /** @notice checks if the org id does not exists - * @param _orgId - org id - * @return true if org does not exist + /** notice: checks if the org id does not exists + * param: _orgId - org id + * return: true if org does not exist */ modifier orgDoesNotExist(string memory _orgId) { require(checkOrgExists(_orgId) == false, "org exists"); _; } - /** @notice checks if the org id does exists - * @param _orgId - org id - * @return true if org exists + /** notice: checks if the org id does exists + * param: _orgId - org id + * return: true if org exists */ modifier orgExists(string memory _orgId) { require(checkOrgExists(_orgId) == true, "org does not exist"); _; } - /** @notice constructor. sets the permissions upgradable address - */ - constructor (address _permUpgradable) public { + // @notice initialized only once. sets the permissions upgradable address + function initialize(address _permUpgradable) public initializer { + require(_permUpgradable != address(0x0), "Cannot set to empty address"); permUpgradable = PermissionsUpgradable(_permUpgradable); - } + } /** @notice called at the time of network initialization. sets the depth breadth for sub orgs creation. and creates the default network @@ -346,7 +347,9 @@ contract OrgManager { } orgNum++; OrgIndex[oid] = orgNum; - uint256 id = orgList.length++; + + uint256 id = orgList.length; + orgList.push(); if (_level == 1) { orgList[id].level = _level; orgList[id].pindex = 0; @@ -363,8 +366,7 @@ contract OrgManager { orgList[id].level = orgList[parentIndex].level + 1; orgList[id].pindex = parentIndex; orgList[id].ultParent = orgList[parentIndex].ultParent; - uint256 subOrgId = orgList[parentIndex].subOrgIndexList.length++; - orgList[parentIndex].subOrgIndexList[subOrgId] = id; + orgList[parentIndex].subOrgIndexList.push(id); orgList[id].fullOrgId = string(abi.encodePacked(_pOrgId, ".", _orgId)); } orgList[id].orgId = _orgId; @@ -384,7 +386,10 @@ contract OrgManager { * @return org index */ function _getOrgIndex(string memory _orgId) private view returns (uint){ - return OrgIndex[keccak256(abi.encodePacked(_orgId))] - 1; + uint _orgIndex = OrgIndex[keccak256(abi.encodePacked(_orgId))]; + if (_orgIndex == 0) { + return type(uint).max; + } + return _orgIndex - 1; } - } diff --git a/permission/v2/contract/PermissionsImplementation.sol b/permission/v2/contract/PermissionsImplementation.sol index 44cf21a09f..f40055f7cd 100644 --- a/permission/v2/contract/PermissionsImplementation.sol +++ b/permission/v2/contract/PermissionsImplementation.sol @@ -1,23 +1,26 @@ -pragma solidity ^0.5.3; +pragma solidity ^0.8.17; import "./RoleManager.sol"; import "./AccountManager.sol"; import "./VoterManager.sol"; import "./NodeManager.sol"; import "./OrgManager.sol"; +import "./ContractWhitelistManager.sol"; import "./PermissionsUpgradable.sol"; +import "./openzeppelin-v5/Initializable.sol"; /** @title Permissions Implementation Contract * @notice This contract holds implementation logic for all permissions related functionality. This can be called only by the interface contract. */ -contract PermissionsImplementation { +contract PermissionsImplementation is Initializable { AccountManager private accountManager; RoleManager private roleManager; VoterManager private voterManager; NodeManager private nodeManager; OrgManager private orgManager; + ContractWhitelistManager private contractWhitelistManager; PermissionsUpgradable private permUpgradable; string private adminOrg; @@ -86,7 +89,7 @@ contract PermissionsImplementation { * @param _orgId org id */ modifier orgExists(string memory _orgId) { - require(_checkOrgExists(_orgId) == true, "org does not exist"); + require(_checkOrgExists(_orgId), "org does not exist"); _; } @@ -94,11 +97,11 @@ contract PermissionsImplementation { * @param _orgId org id */ modifier orgApproved(string memory _orgId) { - require(checkOrgApproved(_orgId) == true, "org not in approved status"); + require(checkOrgApproved(_orgId), "org not in approved status"); _; } - /** @notice constructor accepts the contracts addresses of other deployed + /** @notice initialize accepts the contracts addresses of other deployed contracts of the permissions model * @param _permUpgradable - address of permissions upgradable contract * @param _orgManager - address of org manager contract @@ -107,14 +110,24 @@ contract PermissionsImplementation { * @param _voterManager - address of voter manager contract * @param _nodeManager - address of node manager contract */ - constructor (address _permUpgradable, address _orgManager, address _rolesManager, - address _accountManager, address _voterManager, address _nodeManager) public { + function initialize(address _permUpgradable, address _orgManager, address _rolesManager, + address _accountManager, address _voterManager, address _nodeManager, address _contractWhitelistManager) public initializer { + + require(_permUpgradable!=address(0x0), "_permUpgradable cannot be an empty address"); + require(_orgManager!=address(0x0), "_orgManager cannot be an empty address"); + require(_rolesManager!=address(0x0), "_rolesManager cannot be an empty address"); + require(_accountManager!=address(0x0), "_accountManager cannot be an empty address"); + require(_voterManager!=address(0x0), "_voterManager cannot be an empty address"); + require(_nodeManager!=address(0x0), "_nodeManager cannot be an empty address"); + require(_contractWhitelistManager!=address(0x0), "_contractWhitelistManager cannot be an empty address"); + permUpgradable = PermissionsUpgradable(_permUpgradable); orgManager = OrgManager(_orgManager); roleManager = RoleManager(_rolesManager); accountManager = AccountManager(_accountManager); voterManager = VoterManager(_voterManager); nodeManager = NodeManager(_nodeManager); + contractWhitelistManager = ContractWhitelistManager(_contractWhitelistManager); } // initial set up related functions @@ -165,6 +178,18 @@ contract PermissionsImplementation { roleManager.addRole(adminRole, adminOrg, fullAccess, true, true); accountManager.setDefaults(adminRole, orgAdminRole); } + + /** @notice specify whether to perform source node IP validation in determining the connection permission. + This can only be set before network initialization is finalized + * @param _isIpValidationEnabled whether to enable or disable the IP validation + */ + function setIpValidation(bool _isIpValidationEnabled) external + onlyInterface + networkBootStatus(false) + { + nodeManager.setIpValidation(_isIpValidationEnabled); + } + /** @notice as a part of network initialization add all nodes which are part of static-nodes.json as nodes belonging to network admin org @@ -316,6 +341,25 @@ contract PermissionsImplementation { } } + // Contract whitelist related functions + + /** @notice function to add/update contract whitelist + * @param _contractAddress contract address to be added to whitelist + */ + function addContractWhitelist(address _contractAddress, address _caller) external + onlyInterface networkAdmin(_caller) { + //add new roles can be created by org admins only + contractWhitelistManager.addWhitelist(_contractAddress); + } + + /** @notice interface to revoke a contract whitelist by contract address + * @param _contractAddress contract address to be removed from whitelist + */ + function revokeContractWhitelist(address _contractAddress, address _caller) external + onlyInterface networkAdmin(_caller) { + contractWhitelistManager.revokeWhitelist(_contractAddress); + } + // Role related functions /** @notice function to add new role definition to an organization @@ -733,28 +777,56 @@ contract PermissionsImplementation { */ function transactionAllowed(address _sender, address _target, uint256 _value, uint256 _gasPrice, uint256 _gasLimit, bytes calldata _payload) external view returns (bool) { + if (!networkBoot){ return true; } - if (accountManager.getAccountStatus(_sender) == 2) { + uint256 accountStatus = accountManager.getAccountStatus(_sender); + if (accountStatus == 2 || accountStatus == 0) { + + uint256 typeOfxn = 1; // value transfer + if (_target == address(0)) { + typeOfxn = 2; // contract deploy + } + else if (_payload.length > 0) { + typeOfxn = 3; // contract call + } + + if (accountStatus == 0) { // account is unconfigured or does not exist in EP records will use default access level + return roleManager.isTransactionAllowedBasedOnRoleAccess( + roleManager.getAccessLevelForUnconfiguredAccount(), + typeOfxn); + } + (string memory act_org, string memory act_role) = accountManager.getAccountOrgRole(_sender); string memory act_uOrg = _getUltimateParent(act_org); if (orgManager.checkOrgActive(act_org)) { if (isNetworkAdmin(_sender) || isOrgAdmin(_sender, act_org)) { return true; } - - uint256 typeOfxn = 1; - if (_target == address(0)) { - typeOfxn = 2; - } - else if (_payload.length > 0) { - typeOfxn = 3; - } return roleManager.transactionAllowed(act_role, act_org, act_uOrg, typeOfxn); } } return false; } + + /** @notice function to set the default access level for unconfigured account. + Unconfigured account does not have role and org membership but is assigned + a default access level of 5 (transfer value and/or call contract) + * @param _accessLevel - set the default access level for unconfigured account. + * @param _caller - the account address doing the operation + */ + function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel, address _caller) public + onlyInterface + networkAdmin(_caller) + { + roleManager.setAccessLevelForUnconfiguredAccount(_accessLevel); + } + + /** @notice get the default access level for unconfigured account. */ + function getAccessLevelForUnconfiguredAccount() external view returns (uint256) + { + return roleManager.getAccessLevelForUnconfiguredAccount(); + } } diff --git a/permission/v2/contract/PermissionsInterface.sol b/permission/v2/contract/PermissionsInterface.sol index 60406761dc..4e3d40eb6f 100644 --- a/permission/v2/contract/PermissionsInterface.sol +++ b/permission/v2/contract/PermissionsInterface.sol @@ -1,24 +1,24 @@ -pragma solidity ^0.5.3; +pragma solidity ^0.8.17; import "./PermissionsImplementation.sol"; import "./PermissionsUpgradable.sol"; +import "./openzeppelin-v5/Initializable.sol"; /** @title Permissions Interface Contract * @notice This contract is the interface for permissions implementation contract. for any call, it forwards the call to the implementation contract */ -contract PermissionsInterface { +contract PermissionsInterface is Initializable { PermissionsImplementation private permImplementation; PermissionsUpgradable private permUpgradable; address private permImplUpgradeable; - /** @notice constructor - * @param _permImplUpgradeable permissions upgradable contract address - */ - constructor(address _permImplUpgradeable) public { + // @notice initialized only once. sets the permissions upgradable contract address + function initialize(address _permImplUpgradeable) public initializer { + require(_permImplUpgradeable != address(0x0), "Cannot set to empty address"); permImplUpgradeable = _permImplUpgradeable; - } + } /** @notice confirms that the caller is the address of upgradable contract @@ -47,6 +47,13 @@ contract PermissionsInterface { permImplementation.init(_breadth, _depth); } + /** @notice specify whether to perform source node IP validation in determining the connection permission. + * @param _isIpValidationEnabled whether to enable or disable the IP validation + */ + function setIpValidation(bool _isIpValidationEnabled) external { + permImplementation.setIpValidation(_isIpValidationEnabled); + } + /** @notice interface to add new node to an admin organization * @param _enodeId enode id of the node to be added * @param _ip IP of node @@ -201,7 +208,6 @@ contract PermissionsInterface { */ function addNode(string memory _orgId, string memory _enodeId, string memory _ip, uint16 _port, uint16 _raftport) public { permImplementation.addNode(_orgId, _enodeId, _ip, _port, _raftport, msg.sender); - } /** @notice interface to update node status @@ -217,6 +223,20 @@ contract PermissionsInterface { permImplementation.updateNodeStatus(_orgId, _enodeId, _ip, _port, _raftport, _action, msg.sender); } + /** @notice interface to add/update contract whitelist + * @param _contractAddress contract address to be added to whitelist + */ + function addContractWhitelist(address _contractAddress) external { + permImplementation.addContractWhitelist(_contractAddress, msg.sender); + } + + /** @notice interface to revoke a contract whitelist by contract address + * @param _contractAddress contract address to be removed from whitelist + */ + function revokeContractWhitelist(address _contractAddress) external { + permImplementation.revokeContractWhitelist(_contractAddress, msg.sender); + } + /** @notice interface to initiate blacklisted node recovery * @param _orgId unique id of the organization to which the account belongs * @param _enodeId enode id being recovered @@ -292,7 +312,6 @@ contract PermissionsInterface { function assignAccountRole(address _account, string calldata _orgId, string calldata _roleId) external { permImplementation.assignAccountRole(_account, _orgId, _roleId, msg.sender); - } /** @notice interface to check if passed account is an network admin account @@ -348,4 +367,20 @@ contract PermissionsInterface { return permImplementation.transactionAllowed(_sender, _target, _value, _gasPrice, _gasLimit, _payload); } + /** @notice function to set the default access level for unconfigured account. + Unconfigured account does not have role and org membership but is assigned + a default access level of 5 (transfer value and/or call contract) + * @param _accessLevel - set the default access level for unconfigured account. + */ + function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel) external + { + permImplementation.setAccessLevelForUnconfiguredAccount(_accessLevel, msg.sender); + } + + /** @notice get the default access level for unconfigured account. */ + function getAccessLevelForUnconfiguredAccount() external view returns (uint256) + { + return permImplementation.getAccessLevelForUnconfiguredAccount(); + } + } diff --git a/permission/v2/contract/PermissionsUpgradable.sol b/permission/v2/contract/PermissionsUpgradable.sol index 6481666421..7f62d9e554 100644 --- a/permission/v2/contract/PermissionsUpgradable.sol +++ b/permission/v2/contract/PermissionsUpgradable.sol @@ -1,6 +1,7 @@ -pragma solidity ^0.5.3; +pragma solidity ^0.8.17; import "./PermissionsInterface.sol"; +import "./openzeppelin-v5/Initializable.sol"; /** @title Permissions Upgradable Contract * @notice This contract holds the address of current permissions implementation @@ -8,7 +9,7 @@ import "./PermissionsInterface.sol"; guardian account can change the implementation contract address as business needs. */ -contract PermissionsUpgradable { +contract PermissionsUpgradable is Initializable { address private guardian; address private permImpl; @@ -16,10 +17,9 @@ contract PermissionsUpgradable { // initDone ensures that init can be called only once bool private initDone; - /** @notice constructor - * @param _guardian account address - */ - constructor (address _guardian) public{ + /// @notice initialized only once. sets the permissions upgradable address + function initialize(address _guardian) public initializer { + require(_guardian != address(0x0), "Cannot set to empty address"); guardian = _guardian; initDone = false; } diff --git a/permission/v2/contract/RoleManager.sol b/permission/v2/contract/RoleManager.sol index 9868962d35..ce72c41c41 100644 --- a/permission/v2/contract/RoleManager.sol +++ b/permission/v2/contract/RoleManager.sol @@ -1,6 +1,7 @@ -pragma solidity ^0.5.3; +pragma solidity ^0.8.17; import "./PermissionsUpgradable.sol"; +import "./openzeppelin-v5/Initializable.sol"; /** @title Role manager contract * @notice This contract holds implementation logic for all role management functionality. This can be called only by the implementation @@ -8,7 +9,7 @@ import "./PermissionsUpgradable.sol"; can be called directly. these are invoked by quorum for populating permissions data in cache */ -contract RoleManager { +contract RoleManager is Initializable { PermissionsUpgradable private permUpgradable; struct RoleDetails { @@ -23,12 +24,13 @@ contract RoleManager { RoleDetails[] private roleList; mapping(bytes32 => uint256) private roleIndex; uint256 private numberOfRoles; + uint256 private defaultAccessForUnconfiguredAccounts; event RoleCreated(string _roleId, string _orgId, uint256 _baseAccess, bool _isVoter, bool _isAdmin); event RoleRevoked(string _roleId, string _orgId); - /** @notice confirms that the caller is the address of implementation + /** notice: confirms that the caller is the address of implementation contract */ modifier onlyImplementation { @@ -36,11 +38,13 @@ contract RoleManager { _; } - /** @notice constructor. sets the permissions upgradable address - */ - constructor (address _permUpgradable) public { + // @notice initialized only once. sets the permissions upgradable address + function initialize(address _permUpgradable) public initializer { + require(_permUpgradable != address(0x0), "Cannot set to empty address"); + permUpgradable = PermissionsUpgradable(_permUpgradable); - } + defaultAccessForUnconfiguredAccounts = 5; + } /** @notice function to add a new role definition to an organization * @param _roleId - unique identifier for the role being added @@ -67,7 +71,6 @@ contract RoleManager { roleIndex[keccak256(abi.encode(_roleId, _orgId))] = numberOfRoles; roleList.push(RoleDetails(_roleId, _orgId, _baseAccess, _isVoter, _isAdmin, true)); emit RoleCreated(_roleId, _orgId, _baseAccess, _isVoter, _isAdmin); - } /** @notice function to remove an existing role definition from an organization @@ -129,11 +132,12 @@ contract RoleManager { /** @notice returns the role details for a passed role id and org * @param _roleId - unique identifier for the role being added * @param _orgId - org id to which the role belongs - * @return role id - * @return org id - * @return access type - * @return bool to indicate if the role is a voter role - * @return bool to indicate if the role is active + * @return roleId + * @return orgId + * @return accessType + * @return voter - bool to indicate if the role is a voter role + * @return admin + * @return active - bool to indicate if the role is active */ function getRoleDetails(string calldata _roleId, string calldata _orgId) external view returns (string memory roleId, string memory orgId, @@ -149,11 +153,12 @@ contract RoleManager { /** @notice returns the role details for a passed role index * @param _rIndex - unique identifier for the role being added - * @return role id - * @return org id - * @return access type - * @return bool to indicate if the role is a voter role - * @return bool to indicate if the role is active + * @return roleId + * @return orgId + * @return accessType + * @return voter - bool to indicate if the role is a voter role + * @return admin + * @return active - bool to indicate if the role is active */ function getRoleDetailsFromIndex(uint256 _rIndex) external view returns (string memory roleId, string memory orgId, uint256 accessType, @@ -208,9 +213,20 @@ contract RoleManager { string calldata _ultParent, uint256 _typeOfTxn) external view returns (bool) { uint256 access = roleAccess(_roleId, _orgId, _ultParent); + return isTransactionAllowedBasedOnRoleAccess(access, _typeOfTxn); + } + + function isTransactionAllowedBasedOnRoleAccess(uint256 access, uint256 _typeOfTxn) public pure returns (bool) { + if (access == 3) { return true; } + + /** typeOfTxn + 1 - value transfer + 2 - contract deploy + 3 - contract call **/ + if (_typeOfTxn == 1 && (access == 1 || access == 5 || access == 6)){ return true; } @@ -231,6 +247,28 @@ contract RoleManager { */ function _getRoleIndex(string memory _roleId, string memory _orgId) internal view returns (uint256) { - return roleIndex[keccak256(abi.encode(_roleId, _orgId))] - 1; + uint256 _roleIndex = roleIndex[keccak256(abi.encode(_roleId, _orgId))]; + if (_roleIndex == 0){ + return type(uint256).max; + } + return _roleIndex - 1; + } + + /** @notice function to set the default access level for unconfigured account. + Unconfigured account does not have role and org membership but is assigned + a default access level of 5 (transfer value and/or call contract) + * @param _accessLevel - set the default access level for unconfigured account. + */ + function setAccessLevelForUnconfiguredAccount(uint256 _accessLevel) external + onlyImplementation + { + require(_accessLevel >= 0 && _accessLevel <= 7, "accessLevel value should be between 0 to 7"); + defaultAccessForUnconfiguredAccounts = _accessLevel; + } + + /** @notice get the default access level for unconfigured account. */ + function getAccessLevelForUnconfiguredAccount() external view returns (uint256) + { + return defaultAccessForUnconfiguredAccounts; } } diff --git a/permission/v2/contract/VoterManager.sol b/permission/v2/contract/VoterManager.sol index 437a8f09c5..e07c15c706 100644 --- a/permission/v2/contract/VoterManager.sol +++ b/permission/v2/contract/VoterManager.sol @@ -1,6 +1,7 @@ -pragma solidity ^0.5.3; +pragma solidity ^0.8.17; import "./PermissionsUpgradable.sol"; +import "./openzeppelin-v5/Initializable.sol"; /** @title Voter manager contract * @notice This contract holds implementation logic for all account voter and @@ -19,7 +20,7 @@ import "./PermissionsUpgradable.sol"; 5 - Blacklisted node recovery 6 - Blacklisted account recovery */ -contract VoterManager { +contract VoterManager is Initializable { PermissionsUpgradable private permUpgradable; struct PendingOpDetails { string orgId; @@ -73,11 +74,12 @@ contract VoterManager { _; } - /** @notice constructor. sets the permissions upgradable address - */ - constructor (address _permUpgradable) public { + // @notice initialized only once. sets the permissions upgradable address + function initialize(address _permUpgradable) public initializer { + require(_permUpgradable != address(0x0), "Cannot set to empty address"); + permUpgradable = PermissionsUpgradable(_permUpgradable); - } + } /** @notice function to add a new voter account to the organization * @param _orgId org id @@ -91,7 +93,8 @@ contract VoterManager { if (VoterOrgIndex[keccak256(abi.encode(_orgId))] == 0) { orgNum++; VoterOrgIndex[keccak256(abi.encode(_orgId))] = orgNum; - uint256 id = orgVoterList.length++; + uint256 id = orgVoterList.length; + orgVoterList.push(); orgVoterList[id].orgId = _orgId; orgVoterList[id].voterCount = 1; orgVoterList[id].validVoterCount = 1; @@ -237,14 +240,22 @@ contract VoterManager { function _getVoterIndex(string memory _orgId, address _vAccount) internal view returns (uint256) { uint256 orgIndex = _getVoterOrgIndex(_orgId); - return orgVoterList[orgIndex].voterIndex[_vAccount] - 1; + uint256 voterIndex = orgVoterList[orgIndex].voterIndex[_vAccount]; + if (voterIndex == 0){ + return type(uint256).max; + } + return voterIndex - 1; } /** @notice returns the org index for the org from voter list */ function _getVoterOrgIndex(string memory _orgId) internal view returns (uint256) { - return VoterOrgIndex[keccak256(abi.encode(_orgId))] - 1; + uint256 voterOrgIndex = VoterOrgIndex[keccak256(abi.encode(_orgId))]; + if (voterOrgIndex == 0){ + return type(uint256).max; + } + return voterOrgIndex - 1; } } diff --git a/permission/v2/contract/gen/AccountManager.abi b/permission/v2/contract/gen/AccountManager.abi index ce8f2ba964..d3d9ad16b8 100644 --- a/permission/v2/contract/gen/AccountManager.abi +++ b/permission/v2/contract/gen/AccountManager.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"},{"name":"_roleId","type":"string"},{"name":"_adminRole","type":"bool"}],"name":"assignAccountRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"}],"name":"removeExistingAdmin","outputs":[{"name":"voterUpdate","type":"bool"},{"name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getAccountDetails","outputs":[{"name":"","type":"address"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNumberOfAccounts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getAccountOrgRole","outputs":[{"name":"","type":"string"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"}],"name":"validateAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getAccountRole","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"},{"name":"_action","type":"uint256"}],"name":"updateAccountStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"orgAdminExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_aIndex","type":"uint256"}],"name":"getAccountDetailsFromIndex","outputs":[{"name":"","type":"address"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"}],"name":"addNewAdmin","outputs":[{"name":"voterUpdate","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nwAdminRole","type":"string"},{"name":"_oAdminRole","type":"string"}],"name":"setDefaults","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"},{"name":"_roleId","type":"string"},{"name":"_status","type":"uint256"}],"name":"assignAdminRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"},{"name":"_ultParent","type":"string"}],"name":"checkOrgAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getAccountStatus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_permUpgradable","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_account","type":"address"},{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_roleId","type":"string"},{"indexed":false,"name":"_orgAdmin","type":"bool"},{"indexed":false,"name":"_status","type":"uint256"}],"name":"AccountAccessModified","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_account","type":"address"},{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_roleId","type":"string"},{"indexed":false,"name":"_orgAdmin","type":"bool"}],"name":"AccountAccessRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_account","type":"address"},{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_status","type":"uint256"}],"name":"AccountStatusChanged","type":"event"}] \ No newline at end of file +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"string","name":"_roleId","type":"string"},{"indexed":false,"internalType":"bool","name":"_orgAdmin","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_status","type":"uint256"}],"name":"AccountAccessModified","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"string","name":"_roleId","type":"string"},{"indexed":false,"internalType":"bool","name":"_orgAdmin","type":"bool"}],"name":"AccountAccessRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"uint256","name":"_status","type":"uint256"}],"name":"AccountStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"}],"name":"addNewAdmin","outputs":[{"internalType":"bool","name":"voterUpdate","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"bool","name":"_adminRole","type":"bool"}],"name":"assignAccountRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"uint256","name":"_status","type":"uint256"}],"name":"assignAdminRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_ultParent","type":"string"}],"name":"checkOrgAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccountDetails","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_aIndex","type":"uint256"}],"name":"getAccountDetailsFromIndex","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccountOrgRole","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccountRole","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccountStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_permUpgradable","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"orgAdminExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"removeExistingAdmin","outputs":[{"internalType":"bool","name":"voterUpdate","type":"bool"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_nwAdminRole","type":"string"},{"internalType":"string","name":"_oAdminRole","type":"string"}],"name":"setDefaults","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_action","type":"uint256"}],"name":"updateAccountStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"validateAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/AccountManager.bin b/permission/v2/contract/gen/AccountManager.bin index 7068e3dc7d..3da2b2071d 100644 --- a/permission/v2/contract/gen/AccountManager.bin +++ b/permission/v2/contract/gen/AccountManager.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50604051602080613d2d8339810180604052602081101561003057600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055613ccb806100626000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806384b7a84a11610097578063cef7f6af11610066578063cef7f6af1461078c578063e3483a9d1461084a578063e8b42bf414610918578063fd4fa05a14610a51576100f5565b806384b7a84a146105d7578063950145cf14610654578063b2018568146106f8578063c214e5e514610715576100f5565b8063309e36ef116100d3578063309e36ef1461038c5780636acee5fd146103a65780636b568d76146104aa57806381d66b231461053c576100f5565b8063143a5604146100fa5780631d09dc93146101cc5780632aceb5341461025d575b600080fd5b6101ca6004803603608081101561011057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561013a57600080fd5b82018360208201111561014c57600080fd5b803590602001918460018302840111600160201b8311171561016d57600080fd5b919390929091602081019035600160201b81111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111600160201b831117156101bd57600080fd5b9193509150351515610a77565b005b61023a600480360360208110156101e257600080fd5b810190602081018135600160201b8111156101fc57600080fd5b82018360208201111561020e57600080fd5b803590602001918460018302840111600160201b8311171561022f57600080fd5b509092509050610e75565b6040805192151583526001600160a01b0390911660208301528051918290030190f35b6102836004803603602081101561027357600080fd5b50356001600160a01b0316611401565b60405180866001600160a01b03166001600160a01b03168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156102ec5781810151838201526020016102d4565b50505050905090810190601f1680156103195780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561034c578181015183820152602001610334565b50505050905090810190601f1680156103795780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b610394611659565b60408051918252519081900360200190f35b6103cc600480360360208110156103bc57600080fd5b50356001600160a01b0316611660565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561040d5781810151838201526020016103f5565b50505050905090810190601f16801561043a5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561046d578181015183820152602001610455565b50505050905090810190601f16801561049a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610528600480360360408110156104c057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460018302840111600160201b8311171561051d57600080fd5b509092509050611831565b604080519115158252519081900360200190f35b6105626004803603602081101561055257600080fd5b50356001600160a01b031661198c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561059c578181015183820152602001610584565b50505050905090810190601f1680156105c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ca600480360360608110156105ed57600080fd5b810190602081018135600160201b81111561060757600080fd5b82018360208201111561061957600080fd5b803590602001918460018302840111600160201b8311171561063a57600080fd5b91935091506001600160a01b038135169060200135611ae2565b6105286004803603602081101561066a57600080fd5b810190602081018135600160201b81111561068457600080fd5b82018360208201111561069657600080fd5b803590602001918460018302840111600160201b831117156106b757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612215945050505050565b6102836004803603602081101561070e57600080fd5b5035612390565b6105286004803603604081101561072b57600080fd5b810190602081018135600160201b81111561074557600080fd5b82018360208201111561075757600080fd5b803590602001918460018302840111600160201b8311171561077857600080fd5b9193509150356001600160a01b031661257a565b6101ca600480360360408110156107a257600080fd5b810190602081018135600160201b8111156107bc57600080fd5b8201836020820111156107ce57600080fd5b803590602001918460018302840111600160201b831117156107ef57600080fd5b919390929091602081019035600160201b81111561080c57600080fd5b82018360208201111561081e57600080fd5b803590602001918460018302840111600160201b8311171561083f57600080fd5b509092509050612bcc565b6101ca6004803603608081101561086057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561088a57600080fd5b82018360208201111561089c57600080fd5b803590602001918460018302840111600160201b831117156108bd57600080fd5b919390929091602081019035600160201b8111156108da57600080fd5b8201836020820111156108ec57600080fd5b803590602001918460018302840111600160201b8311171561090d57600080fd5b919350915035612cb8565b6105286004803603606081101561092e57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561095857600080fd5b82018360208201111561096a57600080fd5b803590602001918460018302840111600160201b8311171561098b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156109dd57600080fd5b8201836020820111156109ef57600080fd5b803590602001918460018302840111600160201b83111715610a1057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061302a945050505050565b61039460048036036020811015610a6757600080fd5b50356001600160a01b0316613591565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d6020811015610aee57600080fd5b50516001600160a01b03163314610b435760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b6040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015610db457506040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015610cc15780601f10610c9657610100808354040283529160200191610cc1565b820191906000526020600020905b815481529060010190602001808311610ca457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610d69578181015183820152602001610d51565b50505050905090810190601f168015610d965780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b1515610df457604051600160e51b62461bcd028152600401808060200182810382526040815260200180613bfb6040913960400191505060405180910390fd5b610e6d8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250600292508791506135ee9050565b505050505050565b6000805460408051600160e41b62e32cf9028152905183926001600160a01b031691630e32cf90916004808301926020929190829003018186803b158015610ebc57600080fd5b505afa158015610ed0573d6000803e3d6000fd5b505050506040513d6020811015610ee657600080fd5b50516001600160a01b03163314610f3b5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b610f7a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061221592505050565b156113f357600061100260066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a90046001600160a01b03166139c8565b9050600660018281548110151561101557fe5b906000526020600020906005020160030181905550600060018281548110151561103b57fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77660018281548110151561109357fe5b6000918252602090912060059091020154600180546001600160a01b0390921691849081106110be57fe5b90600052602060002090600502016001016001848154811015156110de57fe5b90600052602060002090600502016002016001858154811015156110fe57fe5b60009182526020909120600460059092020101546001805460ff909216918790811061112657fe5b600091825260209182902060036005909202010154604080516001600160a01b038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156111d95780601f106111ae576101008083540402835291602001916111d9565b820191906000526020600020905b8154815290600101906020018083116111bc57829003601f168201915b505083810382528654600260001961010060018416150201909116048082526020909101908790801561124d5780601f106112225761010080835404028352916020019161124d565b820191906000526020600020905b81548152906001019060200180831161123057829003601f168201915b505097505050505050505060405180910390a160408051602080820190815260048054600260001961010060018416150201909116049383018490529290918291606090910190849080156112e35780601f106112b8576101008083540402835291602001916112e3565b820191906000526020600020905b8154815290600101906020018083116112c657829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561130e57fe5b6000918252602091829020604080518085019485526002600590940290920183018054600019610100600183161502011693909304908201819052919291829160600190849080156113a15780601f10611376576101008083540402835291602001916113a1565b820191906000526020600020905b81548152906001019060200180831161138457829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156113cd57fe5b60009182526020909120600590910201549093506001600160a01b031691506113fa9050565b5060009050805b9250929050565b6001600160a01b038116600090815260026020526040812054606090819083908190151561146857505060408051808201825260048152600160e01b634e4f4e45026020808301919091528251908101909252600080835286955090935090915080611650565b6000611473876139c8565b905060018181548110151561148457fe5b6000918252602090912060059091020154600180546001600160a01b0390921691839081106114af57fe5b90600052602060002090600502016001016001838154811015156114cf57fe5b90600052602060002090600502016002016001848154811015156114ef57fe5b90600052602060002090600502016003015460018581548110151561151057fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156115af5780601f10611584576101008083540402835291602001916115af565b820191906000526020600020905b81548152906001019060200180831161159257829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561163d5780601f106116125761010080835404028352916020019161163d565b820191906000526020600020905b81548152906001019060200180831161162057829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6001545b90565b6001600160a01b038116600090815260026020526040902054606090819015156116bd57604051806040016040528060048152602001600160e01b634e4f4e4502815250604051806020016040528060008152509150915061182c565b60006116c8846139c8565b90506001818154811015156116d957fe5b90600052602060002090600502016001016001828154811015156116f957fe5b6000918252602091829020835460408051601f600260001961010060018716150201909416849004908101879004870282018701909252818152600590940290920101928491908301828280156117915780601f1061176657610100808354040283529160200191611791565b820191906000526020600020905b81548152906001019060200180831161177457829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529597508694509250840190508282801561181f5780601f106117f45761010080835404028352916020019161181f565b820191906000526020600020905b81548152906001019060200180831161180257829003601f168201915b5050505050905092509250505b915091565b6001600160a01b038316600090815260026020526040812054151561185857506001611985565b6000611863856139c8565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001206001828154811015156118c757fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156119645780601f1061193957610100808354040283529160200191611964565b820191906000526020600020905b81548152906001019060200180831161194757829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b6001600160a01b03811660009081526002602052604090205460609015156119d257506040805180820190915260048152600160e01b634e4f4e45026020820152611add565b60006119dd836139c8565b90506001818154811015156119ee57fe5b9060005260206000209060050201600301546000141515611abc576001805482908110611a1757fe5b600091825260209182902060026005909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611aaf5780601f10611a8457610100808354040283529160200191611aaf565b820191906000526020600020905b815481529060010190602001808311611a9257829003601f168201915b5050505050915050611add565b50506040805180820190915260048152600160e01b634e4f4e450260208201525b919050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2f57600080fd5b505afa158015611b43573d6000803e3d6000fd5b505050506040513d6020811015611b5957600080fd5b50516001600160a01b03163314611bae5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506001600160a01b03871681526002602052604090205486935015159150611c5390505760408051600160e51b62461bcd02815260206004820152601760248201527f6163636f756e7420646f6573206e6f7420657869737473000000000000000000604482015290519081900360640190fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611c94578181015183820152602001611c7c565b50505050905090810190601f168015611cc15780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611ce7836139c8565b81548110611cf157fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611d8e5780601f10611d6357610100808354040283529160200191611d8e565b820191906000526020600020905b815481529060010190602001808311611d7157829003601f168201915b50509250505060405160208183030381529060405280519060200120141515611e015760408051600160e51b62461bcd02815260206004820152601860248201527f6163636f756e7420696e20646966666572656e74206f72670000000000000000604482015290519081900360640190fd5b600083118015611e115750600683105b1515611e675760408051600160e51b62461bcd02815260206004820152601d60248201527f696e76616c696420737461747573206368616e67652072657175657374000000604482015290519081900360640190fd5b611eb58487878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152925061302a915050565b151560011415611ef957604051600160e51b62461bcd028152600401808060200182810382526031815260200180613c6f6031913960400191505060405180910390fd5b60008360011415611f76576001611f0f866139c8565b81548110611f1957fe5b9060005260206000209060050201600301546002141515611f6e57604051600160e51b62461bcd028152600401808060200182810382526039815260200180613b9a6039913960400191505060405180910390fd5b50600461215f565b8360021415611ff1576001611f8a866139c8565b81548110611f9457fe5b9060005260206000209060050201600301546004141515611fe957604051600160e51b62461bcd02815260040180806020018281038252603c815260200180613b5e603c913960400191505060405180910390fd5b50600261215f565b836003141561206d576001612005866139c8565b8154811061200f57fe5b90600052602060002090600502016003015460051415151561206557604051600160e51b62461bcd028152600401808060200182810382526038815260200180613b266038913960400191505060405180910390fd5b50600561215f565b83600414156120e8576001612081866139c8565b8154811061208b57fe5b90600052602060002090600502016003015460051415156120e057604051600160e51b62461bcd028152600401808060200182810382526034815260200180613c3b6034913960400191505060405180910390fd5b50600761215f565b836005141561215f5760016120fc866139c8565b8154811061210657fe5b906000526020600020906005020160030154600714151561215b57604051600160e51b62461bcd028152600401808060200182810382526038815260200180613aee6038913960400191505060405180910390fd5b5060025b80600161216b876139c8565b8154811061217557fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b258588888460405180856001600160a01b03166001600160a01b03168152602001806020018381526020018281038252858582818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a150505050505050565b6000806001600160a01b031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561226657818101518382015260200161224e565b50505050905090810190601f1680156122935780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020546001600160a01b03161461238857600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156123125781810151838201526020016122fa565b50505050905090810190601f16801561233f5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020546001600160a01b0316905061237d81613591565b600214915050611add565b506000919050565b60006060806000806001868154811015156123a757fe5b6000918252602090912060059091020154600180546001600160a01b0390921691889081106123d257fe5b90600052602060002090600502016001016001888154811015156123f257fe5b906000526020600020906005020160020160018981548110151561241257fe5b90600052602060002090600502016003015460018a81548110151561243357fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156124d25780601f106124a7576101008083540402835291602001916124d2565b820191906000526020600020905b8154815290600101906020018083116124b557829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156125605780601f1061253557610100808354040283529160200191612560565b820191906000526020600020905b81548152906001019060200180831161254357829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c957600080fd5b505afa1580156125dd573d6000803e3d6000fd5b505050506040513d60208110156125f357600080fd5b50516001600160a01b031633146126485760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60606126538361198c565b9050600061266084613591565b9050600061266d856139c8565b604080516020808201908152600580546002600019610100600184161502019091160493830184905293945091829160600190849080156126ef5780601f106126c4576101008083540402835291602001916126ef565b820191906000526020600020905b8154815290600101906020018083116126d257829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561274c578181015183820152602001612734565b50505050905090810190601f1680156127795780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201480156127a15750816001145b15612831578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600260018281548110151561284257fe5b9060005260206000209060050201600301819055506001808281548110151561286757fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776856001838154811015156128c057fe5b90600052602060002090600502016001016001848154811015156128e057fe5b906000526020600020906005020160020160018581548110151561290057fe5b60009182526020909120600460059092020101546001805460ff909216918790811061292857fe5b600091825260209182902060036005909202010154604080516001600160a01b038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156129db5780601f106129b0576101008083540402835291602001916129db565b820191906000526020600020905b8154815290600101906020018083116129be57829003601f168201915b5050838103825286546002600019610100600184161502019091160480825260209091019087908015612a4f5780601f10612a2457610100808354040283529160200191612a4f565b820191906000526020600020905b815481529060010190602001808311612a3257829003601f168201915b505097505050505050505060405180910390a16040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612ae55780601f10612aba57610100808354040283529160200191612ae5565b820191906000526020600020905b815481529060010190602001808311612ac857829003601f168201915b50509250505060405160208183030381529060405280519060200120600182815481101515612b1057fe5b600091825260209182902060408051808501948552600260059094029092018301805460001961010060018316150201169390930490820181905291929182916060019084908015612ba35780601f10612b7857610100808354040283529160200191612ba3565b820191906000526020600020905b815481529060010190602001808311612b8657829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1957600080fd5b505afa158015612c2d573d6000803e3d6000fd5b505050506040513d6020811015612c4357600080fd5b50516001600160a01b03163314612c985760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b612ca4600485856139e7565b50612cb1600583836139e7565b5050505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015612d0557600080fd5b505afa158015612d19573d6000803e3d6000fd5b505050506040513d6020811015612d2f57600080fd5b50516001600160a01b03163314612d845760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b6040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015612e075780601f10612ddc57610100808354040283529160200191612e07565b820191906000526020600020905b815481529060010190602001808311612dea57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001201480612f7157506040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612f005780601f10612ed557610100808354040283529160200191612f00565b820191906000526020600020905b815481529060010190602001808311612ee357829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515612fb157604051600160e51b62461bcd028152600401808060200182810382526028815260200180613bd36028913960400191505060405180910390fd5b610e6d8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250600191506135ee9050565b604080516020808201908152600480546002600019610100600184161502019091160493830184905260009390928291606090910190849080156130af5780601f10613084576101008083540402835291602001916130af565b820191906000526020600020905b81548152906001019060200180831161309257829003601f168201915b505092505050604051602081830303815290604052805190602001206130d48561198c565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131145781810151838201526020016130fc565b50505050905090810190601f1680156131415780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120141561342257600061316d856139c8565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131b0578181015183820152602001613198565b50505050905090810190601f1680156131dd5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012060018281548110151561320757fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156132a45780601f10613279576101008083540402835291602001916132a4565b820191906000526020600020905b81548152906001019060200180831161328757829003601f168201915b50509250505060405160208183030381529060405280519060200120148061341a5750826040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156133085781810151838201526020016132f0565b50505050905090810190601f1680156133355780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012060018281548110151561335f57fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156133fc5780601f106133d1576101008083540402835291602001916133fc565b820191906000526020600020905b8154815290600101906020018083116133df57829003601f168201915b50509250505060405160208183030381529060405280519060200120145b915050611985565b836001600160a01b031660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613471578181015183820152602001613459565b50505050905090810190601f16801561349e5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020546001600160a01b031614806135895750836001600160a01b031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561352757818101518382015260200161350f565b50505050905090810190601f1680156135545780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020546001600160a01b0316145b949350505050565b6001600160a01b03811660009081526002602052604081205415156135b857506000611add565b60006135c3836139c8565b90506001818154811015156135d457fe5b906000526020600020906005020160030154915050919050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561363b57600080fd5b505afa15801561364f573d6000803e3d6000fd5b505050506040513d602081101561366557600080fd5b50516001600160a01b031633146136ba5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60006136c5866139c8565b6001600160a01b0387166000908152600260205260409020549091501561377757836001828154811015156136f657fe5b9060005260206000209060050201600201908051906020019061371a929190613a65565b508260018281548110151561372b57fe5b9060005260206000209060050201600301819055508160018281548110151561375057fe5b60009182526020909120600590910201600401805460ff1916911515919091179055613892565b600380546001908101918290556001600160a01b03888116600081815260026020908152604080832096909655855160a0810187529283528281018b81529583018a905260608301899052871515608084015284548086018087559590925282517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6600590930292830180546001600160a01b03191691909516178455945180519495929461384f937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf7909301929190910190613a65565b506040820151805161386b916002840191602090910190613a65565b50606082015160038201556080909101516004909101805460ff1916911515919091179055505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776868686858760405180866001600160a01b03166001600160a01b03168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015613921578181015183820152602001613909565b50505050905090810190601f16801561394e5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015613981578181015183820152602001613969565b50505050905090810190601f1680156139ae5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b6001600160a01b03166000908152600260205260409020546000190190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a285782800160ff19823516178555613a55565b82800160010185558215613a55579182015b82811115613a55578235825591602001919060010190613a3a565b50613a61929150613ad3565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613aa657805160ff1916838001178555613a55565b82800160010185558215613a55579182015b82811115613a55578251825591602001919060010190613ab8565b61165d91905b80821115613a615760008155600101613ad956fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a72305820f5cf4f43c37e9dae763b0a301bd310a91d3b733b1642aabb6208a69fcc6a272d0029 \ No newline at end of file +608060405234801561000f575f80fd5b506142558061001d5f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c8063950145cf11610095578063cef7f6af11610064578063cef7f6af146102fe578063e3483a9d1461031a578063e8b42bf414610336578063fd4fa05a14610366576100fe565b8063950145cf1461024e578063b20185681461027e578063c214e5e5146102b2578063c4d66de8146102e2576100fe565b80636acee5fd116100d15780636acee5fd146101a15780636b568d76146101d257806381d66b231461020257806384b7a84a14610232576100fe565b8063143a5604146101025780631d09dc931461011e5780632aceb5341461014f578063309e36ef14610183575b5f80fd5b61011c60048036038101906101179190612cb4565b610396565b005b61013860048036038101906101339190612d57565b610637565b604051610146929190612dc0565b60405180910390f35b61016960048036038101906101649190612de7565b610a2c565b60405161017a959493929190612eb4565b60405180910390f35b61018b610ce2565b6040516101989190612f13565b60405180910390f35b6101bb60048036038101906101b69190612de7565b610cee565b6040516101c9929190612f2c565b60405180910390f35b6101ec60048036038101906101e79190612f61565b610ef4565b6040516101f99190612fbe565b60405180910390f35b61021c60048036038101906102179190612de7565b610fcc565b6040516102299190612fd7565b60405180910390f35b61024c60048036038101906102479190613021565b611176565b005b610268600480360381019061026391906131ba565b6117cd565b6040516102759190612fbe565b60405180910390f35b61029860048036038101906102939190613201565b6118ce565b6040516102a9959493929190612eb4565b60405180910390f35b6102cc60048036038101906102c7919061322c565b611ad7565b6040516102d99190612fbe565b60405180910390f35b6102fc60048036038101906102f79190612de7565b611e85565b005b61031860048036038101906103139190613289565b6120aa565b005b610334600480360381019061032f9190613307565b6121cd565b005b610350600480360381019061034b91906133aa565b61244c565b60405161035d9190612fbe565b60405180910390f35b610380600480360381019061037b9190612de7565b6126c1565b60405161038d9190612f13565b60405180910390f35b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104229190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461048f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610486906134bb565b60405180910390fd5b60046040516020016104a191906135c9565b6040516020818303038152906040528051906020012083836040516020016104ca929190613615565b604051602081830303815290604052805190602001201415801561055c575060056040516020016104fb91906135c9565b604051602081830303815290604052805190602001208383604051602001610524929190613615565b6040516020818303038152906040526040516020016105439190613689565b6040516020818303038152906040528051906020012014155b61059b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059290613719565b60405180910390fd5b61062f8686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050600285612747565b505050505050565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c59190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610729906134bb565b60405180910390fd5b61077e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506117cd565b15610a1e575f6107e560065f878760405160200161079d929190613615565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612acd565b90506006600182815481106107fd576107fc613737565b5b905f5260205f209060050201600301819055505f6001828154811061082557610824613737565b5b905f5260205f2090600502016004015f6101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7766001828154811061087f5761087e613737565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600183815481106108c1576108c0613737565b5b905f5260205f209060050201600101600184815481106108e4576108e3613737565b5b905f5260205f2090600502016002016001858154811061090757610906613737565b5b905f5260205f2090600502016004015f9054906101000a900460ff166001868154811061093757610936613737565b5b905f5260205f20906005020160030154604051610958959493929190613764565b60405180910390a1600460405160200161097291906135c9565b604051602081830303815290604052805190602001206001828154811061099c5761099b613737565b5b905f5260205f2090600502016002016040516020016109bb91906135c9565b6040516020818303038152906040528051906020012014600182815481106109e6576109e5613737565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250925050610a25565b5f80915091505b9250929050565b5f6060805f805f60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610ad157855f806040518060400160405280600481526020017f4e4f4e4500000000000000000000000000000000000000000000000000000000815250919060405180602001604052805f815250919094509450945094509450610cd9565b5f610adb87612acd565b905060018181548110610af157610af0613737565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018281548110610b3357610b32613737565b5b905f5260205f20906005020160010160018381548110610b5657610b55613737565b5b905f5260205f20906005020160020160018481548110610b7957610b78613737565b5b905f5260205f2090600502016003015460018581548110610b9d57610b9c613737565b5b905f5260205f2090600502016004015f9054906101000a900460ff16838054610bc590613506565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf190613506565b8015610c3c5780601f10610c1357610100808354040283529160200191610c3c565b820191905f5260205f20905b815481529060010190602001808311610c1f57829003601f168201915b50505050509350828054610c4f90613506565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7b90613506565b8015610cc65780601f10610c9d57610100808354040283529160200191610cc6565b820191905f5260205f20905b815481529060010190602001808311610ca957829003601f168201915b5050505050925095509550955095509550505b91939590929450565b5f600180549050905090565b6060805f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610d83576040518060400160405280600481526020017f4e4f4e450000000000000000000000000000000000000000000000000000000081525060405180602001604052805f81525091509150610eef565b5f610d8d84612acd565b905060018181548110610da357610da2613737565b5b905f5260205f20906005020160010160018281548110610dc657610dc5613737565b5b905f5260205f209060050201600201818054610de190613506565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0d90613506565b8015610e585780601f10610e2f57610100808354040283529160200191610e58565b820191905f5260205f20905b815481529060010190602001808311610e3b57829003601f168201915b50505050509150808054610e6b90613506565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9790613506565b8015610ee25780601f10610eb957610100808354040283529160200191610ee2565b820191905f5260205f20905b815481529060010190602001808311610ec557829003601f168201915b5050505050905092509250505b915091565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610f425760019050610fc5565b5f610f4c85612acd565b90508383604051602001610f61929190613615565b6040516020818303038152906040528051906020012060018281548110610f8b57610f8a613737565b5b905f5260205f209060050201600101604051602001610faa91906135c9565b60405160208183030381529060405280519060200120149150505b9392505050565b60605f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361104f576040518060400160405280600481526020017f4e4f4e45000000000000000000000000000000000000000000000000000000008152509050611171565b5f61105983612acd565b90505f600182815481106110705761106f613737565b5b905f5260205f2090600502016003015414611137576001818154811061109957611098613737565b5b905f5260205f20906005020160020180546110b390613506565b80601f01602080910402602001604051908101604052809291908181526020018280546110df90613506565b801561112a5780601f106111015761010080835404028352916020019161112a565b820191905f5260205f20905b81548152906001019060200180831161110d57829003601f168201915b5050505050915050611171565b6040518060400160405280600481526020017f4e4f4e45000000000000000000000000000000000000000000000000000000008152509150505b919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112029190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611266906134bb565b60405180910390fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050825f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a9061380d565b60405180910390fd5b816040516020016113449190612fd7565b60405160208183030381529060405280519060200120600161136583612acd565b8154811061137657611375613737565b5b905f5260205f20906005020160010160405160200161139591906135c9565b60405160208183030381529060405280519060200120146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290613875565b60405180910390fd5b5f831180156113fa5750600683105b611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906138dd565b60405180910390fd5b600115156114998588888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505060405180602001604052805f81525061244c565b1515036114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061396b565b60405180910390fd5b5f6001840361155b57600260016114f187612acd565b8154811061150257611501613737565b5b905f5260205f2090600502016003015414611552576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611549906139f9565b60405180910390fd5b60049050611757565b600284036115da576004600161157087612acd565b8154811061158157611580613737565b5b905f5260205f20906005020160030154146115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c890613a87565b60405180910390fd5b60029050611756565b6003840361165957600560016115ef87612acd565b81548110611600576115ff613737565b5b905f5260205f2090600502016003015403611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790613b15565b60405180910390fd5b60059050611755565b600484036116d8576005600161166e87612acd565b8154811061167f5761167e613737565b5b905f5260205f20906005020160030154146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690613ba3565b60405180910390fd5b60079050611754565b6005840361175357600760016116ed87612acd565b815481106116fe576116fd613737565b5b905f5260205f209060050201600301541461174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590613c31565b60405180910390fd5b600290505b5b5b5b5b80600161176387612acd565b8154811061177457611773613737565b5b905f5260205f209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b25858888846040516117bc9493929190613c4f565b60405180910390a150505050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660065f846040516020016117f99190612fd7565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c5575f60065f8460405160200161186c9190612fd7565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060026118bc826126c1565b149150506118c9565b5f90505b919050565b5f6060805f80600186815481106118e8576118e7613737565b5b905f5260205f2090600502015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001878154811061192a57611929613737565b5b905f5260205f2090600502016001016001888154811061194d5761194c613737565b5b905f5260205f209060050201600201600189815481106119705761196f613737565b5b905f5260205f2090600502016003015460018a8154811061199457611993613737565b5b905f5260205f2090600502016004015f9054906101000a900460ff168380546119bc90613506565b80601f01602080910402602001604051908101604052809291908181526020018280546119e890613506565b8015611a335780601f10611a0a57610100808354040283529160200191611a33565b820191905f5260205f20905b815481529060010190602001808311611a1657829003601f168201915b50505050509350828054611a4690613506565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7290613506565b8015611abd5780601f10611a9457610100808354040283529160200191611abd565b820191905f5260205f20905b815481529060010190602001808311611aa057829003601f168201915b505050505092509450945094509450945091939590929450565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b659190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc9906134bb565b60405180910390fd5b5f611bdc83610fcc565b90505f611be8846126c1565b90505f611bf485612acd565b90506005604051602001611c0891906135c9565b6040516020818303038152906040528051906020012083604051602001611c2f9190612fd7565b60405160208183030381529060405280519060200120148015611c525750600182145b15611ccf578460065f8989604051602001611c6e929190613615565b6040516020818303038152906040528051906020012081526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600260018281548110611ce557611ce4613737565b5b905f5260205f209060050201600301819055506001808281548110611d0d57611d0c613737565b5b905f5260205f2090600502016004015f6101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768560018381548110611d6857611d67613737565b5b905f5260205f20906005020160010160018481548110611d8b57611d8a613737565b5b905f5260205f20906005020160020160018581548110611dae57611dad613737565b5b905f5260205f2090600502016004015f9054906101000a900460ff1660018681548110611dde57611ddd613737565b5b905f5260205f20906005020160030154604051611dff959493929190613764565b60405180910390a16004604051602001611e1991906135c9565b6040516020818303038152906040528051906020012060018281548110611e4357611e42613737565b5b905f5260205f209060050201600201604051602001611e6291906135c9565b604051602081830303815290604052805190602001201493505050509392505050565b5f611e8e612b8c565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff16148015611ed65750825b90505f60018367ffffffffffffffff16148015611f0957505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611f17575080155b15611f4e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611f9b576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090613cd7565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083156120a2575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516120999190613d4a565b60405180910390a15b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015612112573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121369190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a906134bb565b60405180910390fd5b8383600491826121b4929190613eef565b508181600591826121c6929190613eef565b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015612235573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122599190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd906134bb565b60405180910390fd5b60056040516020016122d891906135c9565b604051602081830303815290604052805190602001208383604051602001612301929190613615565b6040516020818303038152906040528051906020012014806123715750600460405160200161233091906135c9565b604051602081830303815290604052805190602001208383604051602001612359929190613615565b60405160208183030381529060405280519060200120145b6123b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a79061402c565b60405180910390fd5b6124448686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050846001612747565b505050505050565b5f600460405160200161245f91906135c9565b6040516020818303038152906040528051906020012061247e85610fcc565b60405160200161248e9190612fd7565b60405160208183030381529060405280519060200120036125a6575f6124b385612acd565b9050836040516020016124c69190612fd7565b60405160208183030381529060405280519060200120600182815481106124f0576124ef613737565b5b905f5260205f20906005020160010160405160200161250f91906135c9565b60405160208183030381529060405280519060200120148061259e57508260405160200161253d9190612fd7565b604051602081830303815290604052805190602001206001828154811061256757612566613737565b5b905f5260205f20906005020160010160405160200161258691906135c9565b60405160208183030381529060405280519060200120145b9150506126ba565b8373ffffffffffffffffffffffffffffffffffffffff1660065f856040516020016125d19190612fd7565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806126b757508373ffffffffffffffffffffffffffffffffffffffff1660065f8460405160200161265c9190612fd7565b6040516020818303038152906040528051906020012081526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b90505b9392505050565b5f8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361270e575f9050612742565b5f61271883612acd565b90506001818154811061272e5761272d613737565b5b905f5260205f209060050201600301549150505b919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d39190613446565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612840576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612837906134bb565b60405180910390fd5b5f61284a86612acd565b90505f60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146129285783600182815481106128a5576128a4613737565b5b905f5260205f20906005020160020190816128c0919061404a565b5082600182815481106128d6576128d5613737565b5b905f5260205f2090600502016003018190555081600182815481106128fe576128fd613737565b5b905f5260205f2090600502016004015f6101000a81548160ff021916908315150217905550612a86565b60035f81548092919061293a90614146565b919050555060035460025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060016040518060a001604052808873ffffffffffffffffffffffffffffffffffffffff168152602001878152602001868152602001858152602001841515815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019081612a43919061404a565b506040820151816002019081612a59919061404a565b50606082015181600301556080820151816004015f6101000a81548160ff02191690831515021790555050505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768686868587604051612abd95949392919061418d565b60405180910390a1505050505050565b5f8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403612b3a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050612b87565b600160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b8491906141ec565b90505b919050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bed82612bc4565b9050919050565b612bfd81612be3565b8114612c07575f80fd5b50565b5f81359050612c1881612bf4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c3f57612c3e612c1e565b5b8235905067ffffffffffffffff811115612c5c57612c5b612c22565b5b602083019150836001820283011115612c7857612c77612c26565b5b9250929050565b5f8115159050919050565b612c9381612c7f565b8114612c9d575f80fd5b50565b5f81359050612cae81612c8a565b92915050565b5f805f805f8060808789031215612cce57612ccd612bbc565b5b5f612cdb89828a01612c0a565b965050602087013567ffffffffffffffff811115612cfc57612cfb612bc0565b5b612d0889828a01612c2a565b9550955050604087013567ffffffffffffffff811115612d2b57612d2a612bc0565b5b612d3789828a01612c2a565b93509350506060612d4a89828a01612ca0565b9150509295509295509295565b5f8060208385031215612d6d57612d6c612bbc565b5b5f83013567ffffffffffffffff811115612d8a57612d89612bc0565b5b612d9685828601612c2a565b92509250509250929050565b612dab81612c7f565b82525050565b612dba81612be3565b82525050565b5f604082019050612dd35f830185612da2565b612de06020830184612db1565b9392505050565b5f60208284031215612dfc57612dfb612bbc565b5b5f612e0984828501612c0a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e49578082015181840152602081019050612e2e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e6e82612e12565b612e788185612e1c565b9350612e88818560208601612e2c565b612e9181612e54565b840191505092915050565b5f819050919050565b612eae81612e9c565b82525050565b5f60a082019050612ec75f830188612db1565b8181036020830152612ed98187612e64565b90508181036040830152612eed8186612e64565b9050612efc6060830185612ea5565b612f096080830184612da2565b9695505050505050565b5f602082019050612f265f830184612ea5565b92915050565b5f6040820190508181035f830152612f448185612e64565b90508181036020830152612f588184612e64565b90509392505050565b5f805f60408486031215612f7857612f77612bbc565b5b5f612f8586828701612c0a565b935050602084013567ffffffffffffffff811115612fa657612fa5612bc0565b5b612fb286828701612c2a565b92509250509250925092565b5f602082019050612fd15f830184612da2565b92915050565b5f6020820190508181035f830152612fef8184612e64565b905092915050565b61300081612e9c565b811461300a575f80fd5b50565b5f8135905061301b81612ff7565b92915050565b5f805f806060858703121561303957613038612bbc565b5b5f85013567ffffffffffffffff81111561305657613055612bc0565b5b61306287828801612c2a565b9450945050602061307587828801612c0a565b92505060406130868782880161300d565b91505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6130cc82612e54565b810181811067ffffffffffffffff821117156130eb576130ea613096565b5b80604052505050565b5f6130fd612bb3565b905061310982826130c3565b919050565b5f67ffffffffffffffff82111561312857613127613096565b5b61313182612e54565b9050602081019050919050565b828183375f83830152505050565b5f61315e6131598461310e565b6130f4565b90508281526020810184848401111561317a57613179613092565b5b61318584828561313e565b509392505050565b5f82601f8301126131a1576131a0612c1e565b5b81356131b184826020860161314c565b91505092915050565b5f602082840312156131cf576131ce612bbc565b5b5f82013567ffffffffffffffff8111156131ec576131eb612bc0565b5b6131f88482850161318d565b91505092915050565b5f6020828403121561321657613215612bbc565b5b5f6132238482850161300d565b91505092915050565b5f805f6040848603121561324357613242612bbc565b5b5f84013567ffffffffffffffff8111156132605761325f612bc0565b5b61326c86828701612c2a565b9350935050602061327f86828701612c0a565b9150509250925092565b5f805f80604085870312156132a1576132a0612bbc565b5b5f85013567ffffffffffffffff8111156132be576132bd612bc0565b5b6132ca87828801612c2a565b9450945050602085013567ffffffffffffffff8111156132ed576132ec612bc0565b5b6132f987828801612c2a565b925092505092959194509250565b5f805f805f806080878903121561332157613320612bbc565b5b5f61332e89828a01612c0a565b965050602087013567ffffffffffffffff81111561334f5761334e612bc0565b5b61335b89828a01612c2a565b9550955050604087013567ffffffffffffffff81111561337e5761337d612bc0565b5b61338a89828a01612c2a565b9350935050606061339d89828a0161300d565b9150509295509295509295565b5f805f606084860312156133c1576133c0612bbc565b5b5f6133ce86828701612c0a565b935050602084013567ffffffffffffffff8111156133ef576133ee612bc0565b5b6133fb8682870161318d565b925050604084013567ffffffffffffffff81111561341c5761341b612bc0565b5b6134288682870161318d565b9150509250925092565b5f8151905061344081612bf4565b92915050565b5f6020828403121561345b5761345a612bbc565b5b5f61346884828501613432565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f6134a5600e83612e1c565b91506134b082613471565b602082019050919050565b5f6020820190508181035f8301526134d281613499565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061351d57607f821691505b6020821081036135305761352f6134d9565b5b50919050565b5f819050815f5260205f209050919050565b5f815461355481613506565b61355e8186612e1c565b9450600182165f8114613578576001811461358e576135c0565b60ff1983168652811515602002860193506135c0565b61359785613536565b5f5b838110156135b857815481890152600182019150602081019050613599565b808801955050505b50505092915050565b5f6020820190508181035f8301526135e18184613548565b905092915050565b5f6135f48385612e1c565b935061360183858461313e565b61360a83612e54565b840190509392505050565b5f6020820190508181035f83015261362e8184866135e9565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f61365b82613637565b6136658185613641565b9350613675818560208601612e2c565b61367e81612e54565b840191505092915050565b5f6020820190508181035f8301526136a18184613651565b905092915050565b7f63616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f5f8201527f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c6573602082015250565b5f613703604083612e1c565b915061370e826136a9565b604082019050919050565b5f6020820190508181035f830152613730816136f7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820190506137775f830188612db1565b81810360208301526137898187613548565b9050818103604083015261379d8186613548565b90506137ac6060830185612da2565b6137b96080830184612ea5565b9695505050505050565b7f6163636f756e7420646f6573206e6f74206578697374730000000000000000005f82015250565b5f6137f7601783612e1c565b9150613802826137c3565b602082019050919050565b5f6020820190508181035f830152613824816137eb565b9050919050565b7f6163636f756e7420696e20646966666572656e74206f726700000000000000005f82015250565b5f61385f601883612e1c565b915061386a8261382b565b602082019050919050565b5f6020820190508181035f83015261388c81613853565b9050919050565b7f696e76616c696420737461747573206368616e676520726571756573740000005f82015250565b5f6138c7601d83612e1c565b91506138d282613893565b602082019050919050565b5f6020820190508181035f8301526138f4816138bb565b9050919050565b7f737461747573206368616e6765206e6f7420706f737369626c6520666f72206f5f8201527f72672061646d696e206163636f756e7473000000000000000000000000000000602082015250565b5f613955603183612e1c565b9150613960826138fb565b604082019050919050565b5f6020820190508181035f83015261398281613949565b9050919050565b7f6163636f756e74206973206e6f7420696e20616374697665207374617475732e5f8201527f206f7065726174696f6e2063616e6e6f7420626520646f6e6500000000000000602082015250565b5f6139e3603983612e1c565b91506139ee82613989565b604082019050919050565b5f6020820190508181035f830152613a10816139d7565b9050919050565b7f6163636f756e74206973206e6f7420696e2073757370656e64656420737461745f8201527f75732e206f7065726174696f6e2063616e6e6f7420626520646f6e6500000000602082015250565b5f613a71603c83612e1c565b9150613a7c82613a17565b604082019050919050565b5f6020820190508181035f830152613a9e81613a65565b9050919050565b7f6163636f756e7420697320616c726561647920626c61636b6c69737465642e205f8201527f6f7065726174696f6e2063616e6e6f7420626520646f6e650000000000000000602082015250565b5f613aff603883612e1c565b9150613b0a82613aa5565b604082019050919050565b5f6020820190508181035f830152613b2c81613af3565b9050919050565b7f6163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065725f8201527f6174696f6e2063616e6e6f7420626520646f6e65000000000000000000000000602082015250565b5f613b8d603483612e1c565b9150613b9882613b33565b604082019050919050565b5f6020820190508181035f830152613bba81613b81565b9050919050565b7f6163636f756e74207265636f76657279206e6f7420696e697469617465642e205f8201527f6f7065726174696f6e2063616e6e6f7420626520646f6e650000000000000000602082015250565b5f613c1b603883612e1c565b9150613c2682613bc1565b604082019050919050565b5f6020820190508181035f830152613c4881613c0f565b9050919050565b5f606082019050613c625f830187612db1565b8181036020830152613c758185876135e9565b9050613c846040830184612ea5565b95945050505050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f613cc1601b83612e1c565b9150613ccc82613c8d565b602082019050919050565b5f6020820190508181035f830152613cee81613cb5565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f613d34613d2f613d2a84613cf5565b613d11565b613cfe565b9050919050565b613d4481613d1a565b82525050565b5f602082019050613d5d5f830184613d3b565b92915050565b5f82905092915050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613db77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613d7c565b613dc18683613d7c565b95508019841693508086168417925050509392505050565b5f613df3613dee613de984612e9c565b613d11565b612e9c565b9050919050565b5f819050919050565b613e0c83613dd9565b613e20613e1882613dfa565b848454613d88565b825550505050565b5f90565b613e34613e28565b613e3f818484613e03565b505050565b5b81811015613e6257613e575f82613e2c565b600181019050613e45565b5050565b601f821115613ea757613e7881613536565b613e8184613d6d565b81016020851015613e90578190505b613ea4613e9c85613d6d565b830182613e44565b50505b505050565b5f82821c905092915050565b5f613ec75f1984600802613eac565b1980831691505092915050565b5f613edf8383613eb8565b9150826002028217905092915050565b613ef98383613d63565b67ffffffffffffffff811115613f1257613f11613096565b5b613f1c8254613506565b613f27828285613e66565b5f601f831160018114613f54575f8415613f42578287013590505b613f4c8582613ed4565b865550613fb3565b601f198416613f6286613536565b5f5b82811015613f8957848901358255600182019150602085019450602081019050613f64565b86831015613fa65784890135613fa2601f891682613eb8565b8355505b6001600288020188555050505b50505050505050565b7f63616e2062652063616c6c656420746f2061737369676e2061646d696e20726f5f8201527f6c6573206f6e6c79000000000000000000000000000000000000000000000000602082015250565b5f614016602883612e1c565b915061402182613fbc565b604082019050919050565b5f6020820190508181035f8301526140438161400a565b9050919050565b61405382612e12565b67ffffffffffffffff81111561406c5761406b613096565b5b6140768254613506565b614081828285613e66565b5f60209050601f8311600181146140b2575f84156140a0578287015190505b6140aa8582613ed4565b865550614111565b601f1984166140c086613536565b5f5b828110156140e7578489015182556001820191506020850194506020810190506140c2565b868310156141045784890151614100601f891682613eb8565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61415082612e9c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361418257614181614119565b5b600182019050919050565b5f60a0820190506141a05f830188612db1565b81810360208301526141b28187612e64565b905081810360408301526141c68186612e64565b90506141d56060830185612da2565b6141e26080830184612ea5565b9695505050505050565b5f6141f682612e9c565b915061420183612e9c565b925082820390508181111561421957614218614119565b5b9291505056fea26469706673582212202cef138f82e19f90de9d093c50398963432e847188f642a862ba2cee0339b03d64736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/ContractWhitelistManager.abi b/permission/v2/contract/gen/ContractWhitelistManager.abi new file mode 100644 index 0000000000..21b547a587 --- /dev/null +++ b/permission/v2/contract/gen/ContractWhitelistManager.abi @@ -0,0 +1 @@ +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contractAddr","type":"address"}],"name":"ContractWhitelistAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contractAddr","type":"address"}],"name":"ContractWhitelistRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getNumberOfWhitelistedContracts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWhitelistedContracts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_permUpgradable","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"isContractWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"revokeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/ContractWhitelistManager.bin b/permission/v2/contract/gen/ContractWhitelistManager.bin new file mode 100644 index 0000000000..3316711c92 --- /dev/null +++ b/permission/v2/contract/gen/ContractWhitelistManager.bin @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b50610f6f8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c80637e47daa1146100645780639c7f331514610082578063b5a93e261461009e578063c057058a146100bc578063c4d66de8146100ec578063f80f5dd514610108575b5f80fd5b61006c610124565b6040516100799190610b45565b60405180910390f35b61009c60048036038101906100979190610b93565b61013e565b005b6100a66102ff565b6040516100b39190610bd6565b60405180910390f35b6100d660048036038101906100d19190610b93565b610318565b6040516100e39190610c09565b60405180910390f35b61010660048036038101906101019190610b93565b61033d565b005b610122600480360381019061011d9190610b93565b61056b565b005b606061013961013161072d565b600101610793565b905090565b61014661072d565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d49190610c36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023890610cbb565b60405180910390fd5b5f61024a61072d565b905061026282826001016107b290919063ffffffff16565b6102a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029890610d23565b60405180910390fd5b6102b782826001016107df90919063ffffffff16565b508173ffffffffffffffffffffffffffffffffffffffff167fe5044c30eab65bda022826bec45e211a3f9c73ed493965c7fef15d626fb065d960405160405180910390a25050565b5f61031361030b61072d565b60010161080c565b905090565b5f6103368261032561072d565b6001016107b290919063ffffffff16565b9050919050565b5f61034661081f565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561038e5750825b90505f60018367ffffffffffffffff161480156103c157505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156103cf575080155b15610406576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610453576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036104c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b890610d8b565b60405180910390fd5b856104ca61072d565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315610563575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161055a9190610dfe565b60405180910390a15b505050505050565b61057361072d565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106019190610c36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066590610cbb565b60405180910390fd5b5f61067761072d565b905061068f82826001016107b290919063ffffffff16565b156106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690610e61565b60405180910390fd5b6106e5828260010161084690919063ffffffff16565b508173ffffffffffffffffffffffffffffffffffffffff167f69d296e2418833651c8d83f409c6339e9f1243ad2653b985e62a39d4307ee50b60405160405180910390a25050565b5f8060ff5f1b1960017fdc0a0fb9b8c3742858130ce0eafb2fa7793d4ff4fec8654c10918f0e0dfd8c765f1c6107639190610eac565b6040516020016107739190610bd6565b604051602081830303815290604052805190602001201690508091505090565b60605f6107a1835f01610873565b905060608190508092505050919050565b5f6107d7835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6108cc565b905092915050565b5f610804835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6108ec565b905092915050565b5f610818825f016109e8565b9050919050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f61086b835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6109f7565b905092915050565b6060815f018054806020026020016040519081016040528092919081815260200182805480156108c057602002820191905f5260205f20905b8154815260200190600101908083116108ac575b50505050509050919050565b5f80836001015f8481526020019081526020015f20541415905092915050565b5f80836001015f8481526020019081526020015f205490505f81146109dd575f6001826109199190610eac565b90505f6001865f018054905061092f9190610eac565b9050808214610995575f865f01828154811061094e5761094d610edf565b5b905f5260205f200154905080875f01848154811061096f5761096e610edf565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f018054806109a8576109a7610f0c565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109e2565b5f9150505b92915050565b5f815f01805490509050919050565b5f610a0283836108cc565b610a5457825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050610a58565b5f90505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ab082610a87565b9050919050565b610ac081610aa6565b82525050565b5f610ad18383610ab7565b60208301905092915050565b5f602082019050919050565b5f610af382610a5e565b610afd8185610a68565b9350610b0883610a78565b805f5b83811015610b38578151610b1f8882610ac6565b9750610b2a83610add565b925050600181019050610b0b565b5085935050505092915050565b5f6020820190508181035f830152610b5d8184610ae9565b905092915050565b5f80fd5b610b7281610aa6565b8114610b7c575f80fd5b50565b5f81359050610b8d81610b69565b92915050565b5f60208284031215610ba857610ba7610b65565b5b5f610bb584828501610b7f565b91505092915050565b5f819050919050565b610bd081610bbe565b82525050565b5f602082019050610be95f830184610bc7565b92915050565b5f8115159050919050565b610c0381610bef565b82525050565b5f602082019050610c1c5f830184610bfa565b92915050565b5f81519050610c3081610b69565b92915050565b5f60208284031215610c4b57610c4a610b65565b5b5f610c5884828501610c22565b91505092915050565b5f82825260208201905092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f610ca5600e83610c61565b9150610cb082610c71565b602082019050919050565b5f6020820190508181035f830152610cd281610c99565b9050919050565b7f77686974656c69737420646f6573206e6f7420657869737400000000000000005f82015250565b5f610d0d601883610c61565b9150610d1882610cd9565b602082019050919050565b5f6020820190508181035f830152610d3a81610d01565b9050919050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f610d75601b83610c61565b9150610d8082610d41565b602082019050919050565b5f6020820190508181035f830152610da281610d69565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f610de8610de3610dde84610da9565b610dc5565b610db2565b9050919050565b610df881610dce565b82525050565b5f602082019050610e115f830184610def565b92915050565b7f77686974656c69737420616c72656164792065786973747300000000000000005f82015250565b5f610e4b601883610c61565b9150610e5682610e17565b602082019050919050565b5f6020820190508181035f830152610e7881610e3f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610eb682610bbe565b9150610ec183610bbe565b9250828203905081811115610ed957610ed8610e7f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220ac597c0c8eed2f244d40ea629ef71261069daac05f3a2df25a9c31fb65fb6e6264736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/EnumerableSet.abi b/permission/v2/contract/gen/EnumerableSet.abi new file mode 100644 index 0000000000..0637a088a0 --- /dev/null +++ b/permission/v2/contract/gen/EnumerableSet.abi @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/permission/v2/contract/gen/EnumerableSet.bin b/permission/v2/contract/gen/EnumerableSet.bin new file mode 100644 index 0000000000..60e9d0b453 --- /dev/null +++ b/permission/v2/contract/gen/EnumerableSet.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f5f596b6fb058e26675340a513314e632274e79e3027d6f563a3642336da68c764736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/Initializable.abi b/permission/v2/contract/gen/Initializable.abi new file mode 100644 index 0000000000..bf7e800045 --- /dev/null +++ b/permission/v2/contract/gen/Initializable.abi @@ -0,0 +1 @@ +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/Initializable.bin b/permission/v2/contract/gen/Initializable.bin new file mode 100644 index 0000000000..e69de29bb2 diff --git a/permission/v2/contract/gen/NodeManager.abi b/permission/v2/contract/gen/NodeManager.abi index a4955259a5..2b489be300 100644 --- a/permission/v2/contract/gen/NodeManager.abi +++ b/permission/v2/contract/gen/NodeManager.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"}],"name":"updateNodeStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"enodeId","type":"string"}],"name":"getNodeDetails","outputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_nodeStatus","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_orgId","type":"string"}],"name":"addAdminNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"}],"name":"connectionAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_orgId","type":"string"}],"name":"addOrgNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_orgId","type":"string"}],"name":"addNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_nodeIndex","type":"uint256"}],"name":"getNodeDetailsFromIndex","outputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_nodeStatus","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNumberOfNodes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_orgId","type":"string"}],"name":"approveNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_permUpgradable","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_enodeId","type":"string"},{"indexed":false,"name":"_ip","type":"string"},{"indexed":false,"name":"_port","type":"uint16"},{"indexed":false,"name":"_raftport","type":"uint16"},{"indexed":false,"name":"_orgId","type":"string"}],"name":"NodeProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_enodeId","type":"string"},{"indexed":false,"name":"_ip","type":"string"},{"indexed":false,"name":"_port","type":"uint16"},{"indexed":false,"name":"_raftport","type":"uint16"},{"indexed":false,"name":"_orgId","type":"string"}],"name":"NodeApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_enodeId","type":"string"},{"indexed":false,"name":"_ip","type":"string"},{"indexed":false,"name":"_port","type":"uint16"},{"indexed":false,"name":"_raftport","type":"uint16"},{"indexed":false,"name":"_orgId","type":"string"}],"name":"NodeDeactivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_enodeId","type":"string"},{"indexed":false,"name":"_ip","type":"string"},{"indexed":false,"name":"_port","type":"uint16"},{"indexed":false,"name":"_raftport","type":"uint16"},{"indexed":false,"name":"_orgId","type":"string"}],"name":"NodeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_enodeId","type":"string"},{"indexed":false,"name":"_ip","type":"string"},{"indexed":false,"name":"_port","type":"uint16"},{"indexed":false,"name":"_raftport","type":"uint16"},{"indexed":false,"name":"_orgId","type":"string"}],"name":"NodeBlacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_enodeId","type":"string"},{"indexed":false,"name":"_ip","type":"string"},{"indexed":false,"name":"_port","type":"uint16"},{"indexed":false,"name":"_raftport","type":"uint16"},{"indexed":false,"name":"_orgId","type":"string"}],"name":"NodeRecoveryInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_enodeId","type":"string"},{"indexed":false,"name":"_ip","type":"string"},{"indexed":false,"name":"_port","type":"uint16"},{"indexed":false,"name":"_raftport","type":"uint16"},{"indexed":false,"name":"_orgId","type":"string"}],"name":"NodeRecoveryCompleted","type":"event"}] \ No newline at end of file +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_enodeId","type":"string"},{"indexed":false,"internalType":"string","name":"_ip","type":"string"},{"indexed":false,"internalType":"uint16","name":"_port","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_raftport","type":"uint16"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"NodeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_enodeId","type":"string"},{"indexed":false,"internalType":"string","name":"_ip","type":"string"},{"indexed":false,"internalType":"uint16","name":"_port","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_raftport","type":"uint16"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"NodeApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_enodeId","type":"string"},{"indexed":false,"internalType":"string","name":"_ip","type":"string"},{"indexed":false,"internalType":"uint16","name":"_port","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_raftport","type":"uint16"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"NodeBlacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_enodeId","type":"string"},{"indexed":false,"internalType":"string","name":"_ip","type":"string"},{"indexed":false,"internalType":"uint16","name":"_port","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_raftport","type":"uint16"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"NodeDeactivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_enodeId","type":"string"},{"indexed":false,"internalType":"string","name":"_ip","type":"string"},{"indexed":false,"internalType":"uint16","name":"_port","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_raftport","type":"uint16"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"NodeProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_enodeId","type":"string"},{"indexed":false,"internalType":"string","name":"_ip","type":"string"},{"indexed":false,"internalType":"uint16","name":"_port","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_raftport","type":"uint16"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"NodeRecoveryCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_enodeId","type":"string"},{"indexed":false,"internalType":"string","name":"_ip","type":"string"},{"indexed":false,"internalType":"uint16","name":"_port","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_raftport","type":"uint16"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"NodeRecoveryInitiated","type":"event"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"addAdminNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"addNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"addOrgNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"approveNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"}],"name":"connectionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"enodeId","type":"string"}],"name":"getNodeDetails","outputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"uint256","name":"_nodeStatus","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nodeIndex","type":"uint256"}],"name":"getNodeDetailsFromIndex","outputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"uint256","name":"_nodeStatus","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfNodes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_permUpgradable","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isIpValidationEnabled","type":"bool"}],"name":"setIpValidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_action","type":"uint256"}],"name":"updateNodeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/NodeManager.bin b/permission/v2/contract/gen/NodeManager.bin index e0598dfb5f..5de65de5a7 100644 --- a/permission/v2/contract/gen/NodeManager.bin +++ b/permission/v2/contract/gen/NodeManager.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b5060405160208061338f8339810180604052602081101561003057600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561332d806100626000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80634c573311116100665780634c5733111461042b578063549583df1461073057806397c07a9b146108f2578063b81c806a1461090f578063f82e08ac1461092957610093565b806337d50b27146100985780633f0e0e471461025e5780634530abe11461042b57806345a59e5b146105ed575b600080fd5b61025c600480360360c08110156100ae57600080fd5b810190602081018135600160201b8111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111600160201b831117156100fb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561014d57600080fd5b82018360208201111561015f57600080fd5b803590602001918460018302840111600160201b8311171561018057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b8111156101e657600080fd5b8201836020820111156101f857600080fd5b803590602001918460018302840111600160201b8311171561021957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610aeb915050565b005b6102cc6004803603602081101561027457600080fd5b810190602081018135600160201b81111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460018302840111600160201b831117156102c157600080fd5b50909250905061160a565b6040805161ffff80861660608301528416608082015260a0810183905260c080825288519082015287519091829160208084019284019160e08501918c019080838360005b83811015610329578181015183820152602001610311565b50505050905090810190601f1680156103565780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b83811015610389578181015183820152602001610371565b50505050905090810190601f1680156103b65780820380516001836020036101000a031916815260200191505b5084810382528851815288516020918201918a019080838360005b838110156103e95781810151838201526020016103d1565b50505050905090810190601f1680156104165780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b61025c600480360360a081101561044157600080fd5b810190602081018135600160201b81111561045b57600080fd5b82018360208201111561046d57600080fd5b803590602001918460018302840111600160201b8311171561048e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104e057600080fd5b8201836020820111156104f257600080fd5b803590602001918460018302840111600160201b8311171561051357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b81111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460018302840111600160201b831117156105ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506119d1945050505050565b61071c6004803603606081101561060357600080fd5b810190602081018135600160201b81111561061d57600080fd5b82018360208201111561062f57600080fd5b803590602001918460018302840111600160201b8311171561065057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106a257600080fd5b8201836020820111156106b457600080fd5b803590602001918460018302840111600160201b831117156106d557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903561ffff169150611ec79050565b604080519115158252519081900360200190f35b61025c600480360360a081101561074657600080fd5b810190602081018135600160201b81111561076057600080fd5b82018360208201111561077257600080fd5b803590602001918460018302840111600160201b8311171561079357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156107e557600080fd5b8201836020820111156107f757600080fd5b803590602001918460018302840111600160201b8311171561081857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b81111561087e57600080fd5b82018360208201111561089057600080fd5b803590602001918460018302840111600160201b831117156108b157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121e8945050505050565b6102cc6004803603602081101561090857600080fd5b50356125d5565b610917612879565b60408051918252519081900360200190f35b61025c600480360360a081101561093f57600080fd5b810190602081018135600160201b81111561095957600080fd5b82018360208201111561096b57600080fd5b803590602001918460018302840111600160201b8311171561098c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156109de57600080fd5b8201836020820111156109f057600080fd5b803590602001918460018302840111600160201b83111715610a1157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111600160201b83111715610aaa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612880945050505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b50516001600160a01b03163314610bb75760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8560036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610bfd578181015183820152602001610be5565b50505050905090810190601f168015610c2a5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020541515610caa5760408051600160e51b62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b610cb48784612eed565b1515610cf457604051600160e51b62461bcd02815260040180806020018281038252602a815260200180613265602a913960400191505060405180910390fd5b8160011480610d035750816002145b80610d0e5750816003145b80610d195750816004145b80610d245750816005145b1515610d6457604051600160e51b62461bcd0281526004018080602001828103825260268152602001806132af6026913960400191505060405180910390fd5b6000610d6f88613047565b9050866040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610db2578181015183820152602001610d9a565b50505050905090810190601f168015610ddf5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515610e0957fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b50509250505060405160208183030381529060405280519060200120141580610ef957508561ffff16600182815481101515610ede57fe5b600091825260209091206002600590920201015461ffff1614155b80610f3457508461ffff16600182815481101515610f1357fe5b600091825260209091206005909102016002015462010000900461ffff1614155b15610f3f5750611601565b826001141561114857610f51886130f0565b600214610f965760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b6003600182815481101515610fa757fe5b9060005260206000209060050201600401819055507ff631019be71bc682c59150635d714061185232e98e60de8bdd87bbee239cc5c888888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360005b8381101561104357818101518382015260200161102b565b50505050905090810190601f1680156110705780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156110a357818101518382015260200161108b565b50505050905090810190601f1680156110d05780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156111035781810151838201526020016110eb565b50505050905090810190601f1680156111305780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a16115ff565b826002141561124b5761115a886130f0565b60031461119f5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b60026001828154811015156111b057fe5b9060005260206000209060050201600401819055507ffb98f62dea866f0c373574c8523f611d0db1d8f19cc1b95d07a221d36a6a45de88888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360008381101561104357818101518382015260200161102b565b826003141561130057600460018281548110151561126557fe5b9060005260206000209060050201600401819055507f25300d4d785e654bc9b7979700cfa0fdc9ace890a46841fecfce661fd2c41a3388888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360008381101561104357818101518382015260200161102b565b826004141561140357611312886130f0565b6004146113575760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b600560018281548110151561136857fe5b9060005260206000209060050201600401819055507f72779f66ea90e28bae76fbfe03eaef5ae01699976c7493f93186ab9560ccfaa488888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360008381101561104357818101518382015260200161102b565b61140c886130f0565b6005146114515760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b600260018281548110151561146257fe5b9060005260206000209060050201600401819055507f60aac8c36efdaabf125dc9ec2124bde8b3ceafe5c8b4fc8063fc4ac9017eb0be88888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360005b838110156114fe5781810151838201526020016114e6565b50505050905090810190601f16801561152b5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b8381101561155e578181015183820152602001611546565b50505050905090810190601f16801561158b5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156115be5781810151838201526020016115a6565b50505050905090810190601f1680156115eb5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a15b505b50505050505050565b6060806060600080600060026000866040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611659578181015183820152602001611641565b50505050905090810190601f1680156116865780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054600014156116f157505060408051602080820183526000808352835180830185528181528451928301909452808252919650919450909250905080806119c7565b600061173289898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061304792505050565b905060018181548110151561174357fe5b906000526020600020906005020160030160018281548110151561176357fe5b906000526020600020906005020160000160018381548110151561178357fe5b90600052602060002090600502016001016001848154811015156117a357fe5b60009182526020909120600260059092020101546001805461ffff90921691869081106117cc57fe5b906000526020600020906005020160020160029054906101000a900461ffff166001868154811015156117fb57fe5b600091825260209182902060046005909202010154865460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928891908301828280156118965780601f1061186b57610100808354040283529160200191611896565b820191906000526020600020905b81548152906001019060200180831161187957829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156119245780601f106118f957610100808354040283529160200191611924565b820191906000526020600020905b81548152906001019060200180831161190757829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156119b25780601f10611987576101008083540402835291602001916119b2565b820191906000526020600020905b81548152906001019060200180831161199557829003601f168201915b50505050509350965096509650965096509650505b9295509295509295565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611a1e57600080fd5b505afa158015611a32573d6000803e3d6000fd5b505050506040513d6020811015611a4857600080fd5b50516001600160a01b03163314611a9d5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8460036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611ae3578181015183820152602001611acb565b50505050905090810190601f168015611b105780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415611b8f5760408051600160e51b62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b60048054600101908190556040805160208082018181528a519383019390935289516003936000938c9391928392606090920191850190808383895b83811015611be3578181015183820152602001611bcb565b50505050905090810190601f168015611c105780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652858201969096529385016000908120969096555050825160c0810184528a81528083018a905261ffff808a169482019490945292871660608401525060808201859052600260a083015260018054808201808355919094528251805191946005027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192611cbe928492909101906131cc565b506020828101518051611cd792600185019201906131cc565b506040820151600282018054606085015161ffff908116620100000263ffff0000199190941661ffff19909216919091171691909117905560808201518051611d2a9160038401916020909101906131cc565b5060a082015181600401555050507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d86868686866040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360005b83811015611dbf578181015183820152602001611da7565b50505050905090810190601f168015611dec5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015611e1f578181015183820152602001611e07565b50505050905090810190601f168015611e4c5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015611e7f578181015183820152602001611e67565b50505050905090810190601f168015611eac5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a1505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1657600080fd5b505afa158015611f2a573d6000803e3d6000fd5b505050506040513d6020811015611f4057600080fd5b50516001600160a01b03163314611f955760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60036000856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fda578181015183820152602001611fc2565b50505050905090810190601f1680156120075780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012081526020019081526020016000205460001415612041575060006121e1565b600061204c85613047565b905060018181548110151561205d57fe5b90600052602060002090600502016004015460021480156121cc5750836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156120ba5781810151838201526020016120a2565b50505050905090810190601f1680156120e75780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012060018281548110151561211157fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121ae5780601f10612183576101008083540402835291602001916121ae565b820191906000526020600020905b81548152906001019060200180831161219157829003601f168201915b50509250505060405160208183030381529060405280519060200120145b156121db5760019150506121e1565b60009150505b9392505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561223557600080fd5b505afa158015612249573d6000803e3d6000fd5b505050506040513d602081101561225f57600080fd5b50516001600160a01b031633146122b45760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8460036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122fa5781810151838201526020016122e2565b50505050905090810190601f1680156123275780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054156123a65760408051600160e51b62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b60048054600101908190556040805160208082018181528a519383019390935289516003936000938c9391928392606090920191850190808383895b838110156123fa5781810151838201526020016123e2565b50505050905090810190601f1680156124275780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652858201969096529385016000908120969096555050825160c0810184528a81528083018a905261ffff808a169482019490945292871660608401525060808201859052600160a083018190528054808201808355919094528251805191946005027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601926124d5928492909101906131cc565b5060208281015180516124ee92600185019201906131cc565b506040820151600282018054606085015161ffff908116620100000263ffff0000199190941661ffff199092169190911716919091179055608082015180516125419160038401916020909101906131cc565b5060a082015181600401555050507ff9bad9f8a2dccc52fad61273a7fd673335b420319506c19b87df9ce7a19732da86868686866040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff168152602001806020018481038452898181518152602001915080519060200190808383600083811015611dbf578181015183820152602001611da7565b606080606060008060006001878154811015156125ee57fe5b906000526020600020906005020160030160018881548110151561260e57fe5b906000526020600020906005020160000160018981548110151561262e57fe5b906000526020600020906005020160010160018a81548110151561264e57fe5b60009182526020909120600260059092020101546001805461ffff909216918c90811061267757fe5b906000526020600020906005020160020160029054906101000a900461ffff1660018c8154811015156126a657fe5b600091825260209182902060046005909202010154865460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928891908301828280156127415780601f1061271657610100808354040283529160200191612741565b820191906000526020600020905b81548152906001019060200180831161272457829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156127cf5780601f106127a4576101008083540402835291602001916127cf565b820191906000526020600020905b8154815290600101906020018083116127b257829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a508994509250840190508282801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050935095509550955095509550955091939550919395565b6004545b90565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156128cd57600080fd5b505afa1580156128e1573d6000803e3d6000fd5b505050506040513d60208110156128f757600080fd5b50516001600160a01b0316331461294c5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8460036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561299257818101518382015260200161297a565b50505050905090810190601f1680156129bf5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020541515612a3f5760408051600160e51b62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b612a498683612eed565b1515612a8957604051600160e51b62461bcd02815260040180806020018281038252602d8152602001806132d5602d913960400191505060405180910390fd5b612a92866130f0565b600114612ae95760408051600160e51b62461bcd02815260206004820152601c60248201527f6e6f7468696e672070656e64696e6720666f7220617070726f76616c00000000604482015290519081900360640190fd5b6000612af487613047565b9050856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612b37578181015183820152602001612b1f565b50505050905090810190601f168015612b645780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515612b8e57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612c2b5780601f10612c0057610100808354040283529160200191612c2b565b820191906000526020600020905b815481529060010190602001808311612c0e57829003601f168201915b50509250505060405160208183030381529060405280519060200120141580612c7e57508461ffff16600182815481101515612c6357fe5b600091825260209091206002600590920201015461ffff1614155b80612cb957508361ffff16600182815481101515612c9857fe5b600091825260209091206005909102016002015462010000900461ffff1614155b15612cc45750612ee5565b6002600182815481101515612cd557fe5b9060005260206000209060050201600401819055507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d600182815481101515612d1a57fe5b9060005260206000209060050201600001878787600186815481101515612d3d57fe5b90600052602060002090600502016003016040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612dfb5780601f10612dd057610100808354040283529160200191612dfb565b820191906000526020600020905b815481529060010190602001808311612dde57829003601f168201915b505084810383528851815288516020918201918a019080838360005b83811015612e2f578181015183820152602001612e17565b50505050905090810190601f168015612e5c5780820380516001836020036101000a031916815260200191505b50848103825285546002600019610100600184161502019091160480825260209091019086908015612ecf5780601f10612ea457610100808354040283529160200191612ecf565b820191906000526020600020905b815481529060010190602001808311612eb257829003601f168201915b50509850505050505050505060405180910390a1505b505050505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612f30578181015183820152602001612f18565b50505050905090810190601f168015612f5d5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612f8385613047565b81548110612f8d57fe5b60009182526020918290206040805180850194855260036005909402909201929092018054600260001961010060018416150201909116049282018390529291829160600190849080156130225780601f10612ff757610100808354040283529160200191613022565b820191906000526020600020905b81548152906001019060200180831161300557829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b6000600160036000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613090578181015183820152602001613078565b50505050905090810190601f1680156130bd5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020540390505b919050565b600060036000836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561313757818101518382015260200161311f565b50505050905090810190601f1680156131645780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561319e575060006130eb565b60016131a983613047565b815481106131b357fe5b9060005260206000209060050201600401549050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061320d57805160ff191683800117855561323a565b8280016001018555821561323a579182015b8281111561323a57825182559160200191906001019061321f565b5061324692915061324a565b5090565b61287d91905b80821115613246576000815560010161325056fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f72676f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a7230582033fd8af5439a9af79764088da6847651cc33d3b41698fff5d54b3e47419c5c6a0029 \ No newline at end of file +6080604052600160055f6101000a81548160ff021916908315150217905550348015610029575f80fd5b506133df806100375f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c8063549583df1161006f578063549583df1461016457806397c07a9b146101805780639fc666b2146101b5578063b81c806a146101d1578063c4d66de8146101ef578063f82e08ac1461020b576100a7565b806337d50b27146100ab5780633f0e0e47146100c75780634530abe1146100fc57806345a59e5b146101185780634c57331114610148575b5f80fd5b6100c560048036038101906100c0919061248c565b610227565b005b6100e160048036038101906100dc91906125c6565b6108d9565b6040516100f3969594939291906126a9565b60405180910390f35b6101166004803603810190610111919061271d565b610c5d565b005b610132600480360381019061012d91906127e8565b610f5b565b60405161013f919061288a565b60405180910390f35b610162600480360381019061015d919061271d565b61117a565b005b61017e6004803603810190610179919061271d565b611478565b005b61019a600480360381019061019591906128a3565b611776565b6040516101ac969594939291906126a9565b60405180910390f35b6101cf60048036038101906101ca91906128f8565b611a20565b005b6101d9611b35565b6040516101e69190612923565b60405180910390f35b61020960048036038101906102049190612996565b611b3e565b005b6102256004803603810190610220919061271d565b611d63565b005b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa15801561028f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b391906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031790612a4a565b60405180910390fd5b855f60035f836040516020016103369190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f20540361039a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039190612ad2565b60405180910390fd5b6103a4878461212f565b6103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da90612b60565b60405180910390fd5b60018214806103f25750600282145b806103fd5750600382145b806104085750600482145b806104135750600582145b610452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044990612bee565b60405180910390fd5b5f61045c886121b1565b90508660405160200161046f9190612a68565b604051602081830303815290604052805190602001206001828154811061049957610498612c0c565b5b905f5260205f2090600502016001016040516020016104b89190612d29565b6040516020818303038152906040528051906020012014158061051357508561ffff16600182815481106104ef576104ee612c0c565b5b905f5260205f2090600502016002015f9054906101000a900461ffff1661ffff1614155b8061055757508461ffff166001828154811061053257610531612c0c565b5b905f5260205f20906005020160020160029054906101000a900461ffff1661ffff1614155b1561056257506108d0565b6001830361062257600261057589612233565b146105b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ac90612d93565b60405180910390fd5b6003600182815481106105cb576105ca612c0c565b5b905f5260205f209060050201600401819055507ff631019be71bc682c59150635d714061185232e98e60de8bdd87bbee239cc5c88888888888604051610615959493929190612db1565b60405180910390a16108ce565b600283036106e257600361063589612233565b14610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066c90612d93565b60405180910390fd5b60026001828154811061068b5761068a612c0c565b5b905f5260205f209060050201600401819055507ffb98f62dea866f0c373574c8523f611d0db1d8f19cc1b95d07a221d36a6a45de88888888886040516106d5959493929190612db1565b60405180910390a16108cd565b6003830361075757600460018281548110610700576106ff612c0c565b5b905f5260205f209060050201600401819055507f25300d4d785e654bc9b7979700cfa0fdc9ace890a46841fecfce661fd2c41a33888888888860405161074a959493929190612db1565b60405180910390a16108cc565b6004830361081757600461076a89612233565b146107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a190612d93565b60405180910390fd5b6005600182815481106107c0576107bf612c0c565b5b905f5260205f209060050201600401819055507f72779f66ea90e28bae76fbfe03eaef5ae01699976c7493f93186ab9560ccfaa4888888888860405161080a959493929190612db1565b60405180910390a16108cb565b600561082289612233565b14610862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085990612d93565b60405180910390fd5b60026001828154811061087857610877612c0c565b5b905f5260205f209060050201600401819055507f60aac8c36efdaabf125dc9ec2124bde8b3ceafe5c8b4fc8063fc4ac9017eb0be88888888886040516108c2959493929190612db1565b60405180910390a15b5b5b5b505b50505050505050565b60608060605f805f8060025f876040516020016108f69190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f205403610969575f805f60405180602001604052805f81525092919060405180602001604052805f81525092919060405180602001604052805f815250929190955095509550955095509550610c53565b5f6109b689898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506121b1565b9050600181815481106109cc576109cb612c0c565b5b905f5260205f209060050201600301600182815481106109ef576109ee612c0c565b5b905f5260205f2090600502015f0160018381548110610a1157610a10612c0c565b5b905f5260205f20906005020160010160018481548110610a3457610a33612c0c565b5b905f5260205f2090600502016002015f9054906101000a900461ffff1660018581548110610a6557610a64612c0c565b5b905f5260205f20906005020160020160029054906101000a900461ffff1660018681548110610a9757610a96612c0c565b5b905f5260205f20906005020160040154858054610ab390612c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610adf90612c66565b8015610b2a5780601f10610b0157610100808354040283529160200191610b2a565b820191905f5260205f20905b815481529060010190602001808311610b0d57829003601f168201915b50505050509550848054610b3d90612c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6990612c66565b8015610bb45780601f10610b8b57610100808354040283529160200191610bb4565b820191905f5260205f20905b815481529060010190602001808311610b9757829003601f168201915b50505050509450838054610bc790612c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf390612c66565b8015610c3e5780601f10610c1557610100808354040283529160200191610c3e565b820191905f5260205f20905b815481529060010190602001808311610c2157829003601f168201915b50505050509350965096509650965096509650505b9295509295509295565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce991906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4d90612a4a565b60405180910390fd5b845f60035f83604051602001610d6c9190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f205414610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790612e61565b60405180910390fd5b60045f815480929190610de290612eac565b919050555060045460035f88604051602001610dfe9190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f208190555060016040518060c001604052808881526020018781526020018661ffff1681526020018561ffff1681526020018481526020016002815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f019081610e96919061307e565b506020820151816001019081610eac919061307e565b506040820151816002015f6101000a81548161ffff021916908361ffff16021790555060608201518160020160026101000a81548161ffff021916908361ffff1602179055506080820151816003019081610f07919061307e565b5060a0820151816004015550507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d8686868686604051610f4b959493929190612db1565b60405180910390a1505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe991906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612a4a565b60405180910390fd5b5f60035f8660405160200161106b9190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f20540361109c575f9050611173565b5f6110a6856121b1565b90506002600182815481106110be576110bd612c0c565b5b905f5260205f2090600502016004015414801561115f575060055f9054906101000a900460ff16158061115e5750836040516020016110fd9190612a68565b604051602081830303815290604052805190602001206001828154811061112757611126612c0c565b5b905f5260205f2090600502016001016040516020016111469190612d29565b60405160208183030381529060405280519060200120145b5b1561116e576001915050611173565b5f9150505b9392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120691906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a90612a4a565b60405180910390fd5b845f60035f836040516020016112899190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f2054146112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490612e61565b60405180910390fd5b60045f8154809291906112ff90612eac565b919050555060045460035f8860405160200161131b9190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f208190555060016040518060c001604052808881526020018781526020018661ffff1681526020018561ffff1681526020018481526020016002815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f0190816113b3919061307e565b5060208201518160010190816113c9919061307e565b506040820151816002015f6101000a81548161ffff021916908361ffff16021790555060608201518160020160026101000a81548161ffff021916908361ffff1602179055506080820151816003019081611424919061307e565b5060a0820151816004015550507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d8686868686604051611468959493929190612db1565b60405180910390a1505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150491906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890612a4a565b60405180910390fd5b845f60035f836040516020016115879190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f2054146115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e290612e61565b60405180910390fd5b60045f8154809291906115fd90612eac565b919050555060045460035f886040516020016116199190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f208190555060016040518060c001604052808881526020018781526020018661ffff1681526020018561ffff1681526020018481526020016001815250908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f0190816116b1919061307e565b5060208201518160010190816116c7919061307e565b506040820151816002015f6101000a81548161ffff021916908361ffff16021790555060608201518160020160026101000a81548161ffff021916908361ffff1602179055506080820151816003019081611722919061307e565b5060a0820151816004015550507ff9bad9f8a2dccc52fad61273a7fd673335b420319506c19b87df9ce7a19732da8686868686604051611766959493929190612db1565b60405180910390a1505050505050565b60608060605f805f6001878154811061179257611791612c0c565b5b905f5260205f209060050201600301600188815481106117b5576117b4612c0c565b5b905f5260205f2090600502015f01600189815481106117d7576117d6612c0c565b5b905f5260205f20906005020160010160018a815481106117fa576117f9612c0c565b5b905f5260205f2090600502016002015f9054906101000a900461ffff1660018b8154811061182b5761182a612c0c565b5b905f5260205f20906005020160020160029054906101000a900461ffff1660018c8154811061185d5761185c612c0c565b5b905f5260205f2090600502016004015485805461187990612c66565b80601f01602080910402602001604051908101604052809291908181526020018280546118a590612c66565b80156118f05780601f106118c7576101008083540402835291602001916118f0565b820191905f5260205f20905b8154815290600101906020018083116118d357829003601f168201915b5050505050955084805461190390612c66565b80601f016020809104026020016040519081016040528092919081815260200182805461192f90612c66565b801561197a5780601f106119515761010080835404028352916020019161197a565b820191905f5260205f20905b81548152906001019060200180831161195d57829003601f168201915b5050505050945083805461198d90612c66565b80601f01602080910402602001604051908101604052809291908181526020018280546119b990612c66565b8015611a045780601f106119db57610100808354040283529160200191611a04565b820191905f5260205f20905b8154815290600101906020018083116119e757829003601f168201915b5050505050935095509550955095509550955091939550919395565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aac91906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1090612a4a565b60405180910390fd5b8060055f6101000a81548160ff02191690831515021790555050565b5f600454905090565b5f611b476122ae565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff16148015611b8f5750825b90505f60018367ffffffffffffffff16148015611bc257505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611bd0575080155b15611c07576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611c54576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb990613197565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315611d5b575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611d529190613201565b60405180910390a15b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611def91906129d5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390612a4a565b60405180910390fd5b845f60035f83604051602001611e729190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f205403611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd90612ad2565b60405180910390fd5b611ee0868361212f565b611f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f169061328a565b60405180910390fd5b6001611f2a87612233565b14611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f61906132f2565b60405180910390fd5b5f611f74876121b1565b905085604051602001611f879190612a68565b6040516020818303038152906040528051906020012060018281548110611fb157611fb0612c0c565b5b905f5260205f209060050201600101604051602001611fd09190612d29565b6040516020818303038152906040528051906020012014158061202b57508461ffff166001828154811061200757612006612c0c565b5b905f5260205f2090600502016002015f9054906101000a900461ffff1661ffff1614155b8061206f57508361ffff166001828154811061204a57612049612c0c565b5b905f5260205f20906005020160020160029054906101000a900461ffff1661ffff1614155b1561207a5750612127565b6002600182815481106120905761208f612c0c565b5b905f5260205f209060050201600401819055507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d600182815481106120d8576120d7612c0c565b5b905f5260205f2090600502015f01878787600186815481106120fd576120fc612c0c565b5b905f5260205f20906005020160030160405161211d959493929190613310565b60405180910390a1505b505050505050565b5f816040516020016121419190612a68565b604051602081830303815290604052805190602001206001612162856121b1565b8154811061217357612172612c0c565b5b905f5260205f2090600502016003016040516020016121929190612d29565b6040516020818303038152906040528051906020012014905092915050565b5f8060035f846040516020016121c79190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f205490505f810361221d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91505061222e565b60018161222a9190613376565b9150505b919050565b5f8060035f846040516020016122499190612a68565b6040516020818303038152906040528051906020012081526020019081526020015f20540361227a575f90506122a9565b6001612285836121b1565b8154811061229657612295612c0c565b5b905f5260205f2090600502016004015490505b919050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612334826122ee565b810181811067ffffffffffffffff82111715612353576123526122fe565b5b80604052505050565b5f6123656122d5565b9050612371828261232b565b919050565b5f67ffffffffffffffff8211156123905761238f6122fe565b5b612399826122ee565b9050602081019050919050565b828183375f83830152505050565b5f6123c66123c184612376565b61235c565b9050828152602081018484840111156123e2576123e16122ea565b5b6123ed8482856123a6565b509392505050565b5f82601f830112612409576124086122e6565b5b81356124198482602086016123b4565b91505092915050565b5f61ffff82169050919050565b61243881612422565b8114612442575f80fd5b50565b5f813590506124538161242f565b92915050565b5f819050919050565b61246b81612459565b8114612475575f80fd5b50565b5f8135905061248681612462565b92915050565b5f805f805f8060c087890312156124a6576124a56122de565b5b5f87013567ffffffffffffffff8111156124c3576124c26122e2565b5b6124cf89828a016123f5565b965050602087013567ffffffffffffffff8111156124f0576124ef6122e2565b5b6124fc89828a016123f5565b955050604061250d89828a01612445565b945050606061251e89828a01612445565b935050608087013567ffffffffffffffff81111561253f5761253e6122e2565b5b61254b89828a016123f5565b92505060a061255c89828a01612478565b9150509295509295509295565b5f80fd5b5f80fd5b5f8083601f840112612586576125856122e6565b5b8235905067ffffffffffffffff8111156125a3576125a2612569565b5b6020830191508360018202830111156125bf576125be61256d565b5b9250929050565b5f80602083850312156125dc576125db6122de565b5b5f83013567ffffffffffffffff8111156125f9576125f86122e2565b5b61260585828601612571565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561264857808201518184015260208101905061262d565b5f8484015250505050565b5f61265d82612611565b612667818561261b565b935061267781856020860161262b565b612680816122ee565b840191505092915050565b61269481612422565b82525050565b6126a381612459565b82525050565b5f60c0820190508181035f8301526126c18189612653565b905081810360208301526126d58188612653565b905081810360408301526126e98187612653565b90506126f8606083018661268b565b612705608083018561268b565b61271260a083018461269a565b979650505050505050565b5f805f805f60a08688031215612736576127356122de565b5b5f86013567ffffffffffffffff811115612753576127526122e2565b5b61275f888289016123f5565b955050602086013567ffffffffffffffff8111156127805761277f6122e2565b5b61278c888289016123f5565b945050604061279d88828901612445565b93505060606127ae88828901612445565b925050608086013567ffffffffffffffff8111156127cf576127ce6122e2565b5b6127db888289016123f5565b9150509295509295909350565b5f805f606084860312156127ff576127fe6122de565b5b5f84013567ffffffffffffffff81111561281c5761281b6122e2565b5b612828868287016123f5565b935050602084013567ffffffffffffffff811115612849576128486122e2565b5b612855868287016123f5565b925050604061286686828701612445565b9150509250925092565b5f8115159050919050565b61288481612870565b82525050565b5f60208201905061289d5f83018461287b565b92915050565b5f602082840312156128b8576128b76122de565b5b5f6128c584828501612478565b91505092915050565b6128d781612870565b81146128e1575f80fd5b50565b5f813590506128f2816128ce565b92915050565b5f6020828403121561290d5761290c6122de565b5b5f61291a848285016128e4565b91505092915050565b5f6020820190506129365f83018461269a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129658261293c565b9050919050565b6129758161295b565b811461297f575f80fd5b50565b5f813590506129908161296c565b92915050565b5f602082840312156129ab576129aa6122de565b5b5f6129b884828501612982565b91505092915050565b5f815190506129cf8161296c565b92915050565b5f602082840312156129ea576129e96122de565b5b5f6129f7848285016129c1565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f612a34600e8361261b565b9150612a3f82612a00565b602082019050919050565b5f6020820190508181035f830152612a6181612a28565b9050919050565b5f6020820190508181035f830152612a808184612653565b905092915050565b7f70617373656420656e6f646520696420646f6573206e6f7420657869737400005f82015250565b5f612abc601e8361261b565b9150612ac782612a88565b602082019050919050565b5f6020820190508181035f830152612ae981612ab0565b9050919050565b7f656e6f646520696420646f6573206e6f742062656c6f6e6720746f20746865205f8201527f706173736564206f726700000000000000000000000000000000000000000000602082015250565b5f612b4a602a8361261b565b9150612b5582612af0565b604082019050919050565b5f6020820190508181035f830152612b7781612b3e565b9050919050565b7f696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e205f8201527f7061737365640000000000000000000000000000000000000000000000000000602082015250565b5f612bd860268361261b565b9150612be382612b7e565b604082019050919050565b5f6020820190508181035f830152612c0581612bcc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c7d57607f821691505b602082108103612c9057612c8f612c39565b5b50919050565b5f819050815f5260205f209050919050565b5f8154612cb481612c66565b612cbe818661261b565b9450600182165f8114612cd85760018114612cee57612d20565b60ff198316865281151560200286019350612d20565b612cf785612c96565b5f5b83811015612d1857815481890152600182019150602081019050612cf9565b808801955050505b50505092915050565b5f6020820190508181035f830152612d418184612ca8565b905092915050565b7f6f7065726174696f6e2063616e6e6f7420626520706572666f726d65640000005f82015250565b5f612d7d601d8361261b565b9150612d8882612d49565b602082019050919050565b5f6020820190508181035f830152612daa81612d71565b9050919050565b5f60a0820190508181035f830152612dc98188612653565b90508181036020830152612ddd8187612653565b9050612dec604083018661268b565b612df9606083018561268b565b8181036080830152612e0b8184612653565b90509695505050505050565b7f70617373656420656e6f646520696420657869737473000000000000000000005f82015250565b5f612e4b60168361261b565b9150612e5682612e17565b602082019050919050565b5f6020820190508181035f830152612e7881612e3f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612eb682612459565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee857612ee7612e7f565b5b600182019050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612f3d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612f02565b612f478683612f02565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612f82612f7d612f7884612459565b612f5f565b612459565b9050919050565b5f819050919050565b612f9b83612f68565b612faf612fa782612f89565b848454612f0e565b825550505050565b5f90565b612fc3612fb7565b612fce818484612f92565b505050565b5b81811015612ff157612fe65f82612fbb565b600181019050612fd4565b5050565b601f8211156130365761300781612c96565b61301084612ef3565b8101602085101561301f578190505b61303361302b85612ef3565b830182612fd3565b50505b505050565b5f82821c905092915050565b5f6130565f198460080261303b565b1980831691505092915050565b5f61306e8383613047565b9150826002028217905092915050565b61308782612611565b67ffffffffffffffff8111156130a05761309f6122fe565b5b6130aa8254612c66565b6130b5828285612ff5565b5f60209050601f8311600181146130e6575f84156130d4578287015190505b6130de8582613063565b865550613145565b601f1984166130f486612c96565b5f5b8281101561311b578489015182556001820191506020850194506020810190506130f6565b868310156131385784890151613134601f891682613047565b8355505b6001600288020188555050505b505050505050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f613181601b8361261b565b915061318c8261314d565b602082019050919050565b5f6020820190508181035f8301526131ae81613175565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6131eb6131e66131e1846131b5565b612f5f565b6131be565b9050919050565b6131fb816131d1565b82525050565b5f6020820190506132145f8301846131f2565b92915050565b7f656e6f646520696420646f6573206e6f742062656c6f6e6720746f20746865205f8201527f706173736564206f726720696400000000000000000000000000000000000000602082015250565b5f613274602d8361261b565b915061327f8261321a565b604082019050919050565b5f6020820190508181035f8301526132a181613268565b9050919050565b7f6e6f7468696e672070656e64696e6720666f7220617070726f76616c000000005f82015250565b5f6132dc601c8361261b565b91506132e7826132a8565b602082019050919050565b5f6020820190508181035f830152613309816132d0565b9050919050565b5f60a0820190508181035f8301526133288188612ca8565b9050818103602083015261333c8187612653565b905061334b604083018661268b565b613358606083018561268b565b818103608083015261336a8184612ca8565b90509695505050505050565b5f61338082612459565b915061338b83612459565b92508282039050818111156133a3576133a2612e7f565b5b9291505056fea26469706673582212209b35d46a158ea89445b3fccdd4b23084fec2200fc8b6c2c792a37bcca3c0db9364736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/OrgManager.abi b/permission/v2/contract/gen/OrgManager.abi index f780769fe1..5770ef1675 100644 --- a/permission/v2/contract/gen/OrgManager.abi +++ b/permission/v2/contract/gen/OrgManager.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"}],"name":"updateOrg","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"}],"name":"approveOrgStatusUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getUltimateParent","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pOrgId","type":"string"},{"name":"_orgId","type":"string"}],"name":"addSubOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"checkOrgActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_orgIndex","type":"uint256"}],"name":"getOrgInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getSubOrgIndexes","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNumberOfOrgs","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"},{"name":"_orgStatus","type":"uint256"}],"name":"checkOrgStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_breadth","type":"uint256"},{"name":"_depth","type":"uint256"}],"name":"setUpOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"}],"name":"approveOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getOrgDetails","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"}],"name":"addOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"checkOrgExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_permUpgradable","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"},{"indexed":false,"name":"_status","type":"uint256"}],"name":"OrgApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"},{"indexed":false,"name":"_status","type":"uint256"}],"name":"OrgPendingApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"}],"name":"OrgSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"}],"name":"OrgSuspensionRevoked","type":"event"}] \ No newline at end of file +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"string","name":"_porgId","type":"string"},{"indexed":false,"internalType":"string","name":"_ultParent","type":"string"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_status","type":"uint256"}],"name":"OrgApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"string","name":"_porgId","type":"string"},{"indexed":false,"internalType":"string","name":"_ultParent","type":"string"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_status","type":"uint256"}],"name":"OrgPendingApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"string","name":"_porgId","type":"string"},{"indexed":false,"internalType":"string","name":"_ultParent","type":"string"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"}],"name":"OrgSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"string","name":"_porgId","type":"string"},{"indexed":false,"internalType":"string","name":"_ultParent","type":"string"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"}],"name":"OrgSuspensionRevoked","type":"event"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"addOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_pOrgId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"addSubOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"approveOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_action","type":"uint256"}],"name":"approveOrgStatusUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"checkOrgActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"checkOrgExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_orgStatus","type":"uint256"}],"name":"checkOrgStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfOrgs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"getOrgDetails","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_orgIndex","type":"uint256"}],"name":"getOrgInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"getSubOrgIndexes","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"getUltimateParent","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_permUpgradable","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_breadth","type":"uint256"},{"internalType":"uint256","name":"_depth","type":"uint256"}],"name":"setUpOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_action","type":"uint256"}],"name":"updateOrg","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/OrgManager.bin b/permission/v2/contract/gen/OrgManager.bin index 22233141d8..b88ccfcbaf 100644 --- a/permission/v2/contract/gen/OrgManager.bin +++ b/permission/v2/contract/gen/OrgManager.bin @@ -1 +1 @@ -608060405260018054600160a01b60ff021916905560046002819055600355600060065534801561002f57600080fd5b50604051602080613bb58339810180604052602081101561004f57600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613b368061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637755ebdd1161008c578063e302831611610066578063e302831614610787578063f4d6d9f5146107f5578063f9953de514610863578063ffe40d1d146108d1576100ea565b80637755ebdd146106655780638c8642df1461066d5780639e58eb9f14610713576100ea565b80631f953480116100c85780631f953480146102c25780633fd62ae7146103805780635c4f32ee146104385780635e99f6e5146105a7576100ea565b80630cc27493146100ef57806314f775f91461016f578063177c8d8a146101df575b600080fd5b61015d6004803603604081101561010557600080fd5b810190602081018135600160201b81111561011f57600080fd5b82018360208201111561013157600080fd5b803590602001918460018302840111600160201b8311171561015257600080fd5b919350915035610975565b60408051918252519081900360200190f35b6101dd6004803603604081101561018557600080fd5b810190602081018135600160201b81111561019f57600080fd5b8201836020820111156101b157600080fd5b803590602001918460018302840111600160201b831117156101d257600080fd5b919350915035610d07565b005b61024d600480360360208110156101f557600080fd5b810190602081018135600160201b81111561020f57600080fd5b82018360208201111561022157600080fd5b803590602001918460018302840111600160201b8311171561024257600080fd5b509092509050610ef9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028757818101518382015260200161026f565b50505050905090810190601f1680156102b45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101dd600480360360408110156102d857600080fd5b810190602081018135600160201b8111156102f257600080fd5b82018360208201111561030457600080fd5b803590602001918460018302840111600160201b8311171561032557600080fd5b919390929091602081019035600160201b81111561034257600080fd5b82018360208201111561035457600080fd5b803590602001918460018302840111600160201b8311171561037557600080fd5b5090925090506110ae565b6104246004803603602081101561039657600080fd5b810190602081018135600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460018302840111600160201b831117156103e357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061128c945050505050565b604080519115158252519081900360200190f35b6104556004803603602081101561044e57600080fd5b5035611499565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b838110156104a657818101518382015260200161048e565b50505050905090810190601f1680156104d35780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156105065781810151838201526020016104ee565b50505050905090810190601f1680156105335780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b8381101561056657818101518382015260200161054e565b50505050905090810190601f1680156105935780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b610615600480360360208110156105bd57600080fd5b810190602081018135600160201b8111156105d757600080fd5b8201836020820111156105e957600080fd5b803590602001918460018302840111600160201b8311171561060a57600080fd5b50909250905061170e565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610651578181015183820152602001610639565b505050509050019250505060405180910390f35b61015d61185b565b6104246004803603604081101561068357600080fd5b810190602081018135600160201b81111561069d57600080fd5b8201836020820111156106af57600080fd5b803590602001918460018302840111600160201b831117156106d057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611862915050565b6101dd6004803603606081101561072957600080fd5b810190602081018135600160201b81111561074357600080fd5b82018360208201111561075557600080fd5b803590602001918460018302840111600160201b8311171561077657600080fd5b9193509150803590602001356119ba565b6101dd6004803603602081101561079d57600080fd5b810190602081018135600160201b8111156107b757600080fd5b8201836020820111156107c957600080fd5b803590602001918460018302840111600160201b831117156107ea57600080fd5b509092509050611ae6565b6104556004803603602081101561080b57600080fd5b810190602081018135600160201b81111561082557600080fd5b82018360208201111561083757600080fd5b803590602001918460018302840111600160201b8311171561085857600080fd5b509092509050611ef1565b6101dd6004803603602081101561087957600080fd5b810190602081018135600160201b81111561089357600080fd5b8201836020820111156108a557600080fd5b803590602001918460018302840111600160201b831117156108c657600080fd5b50909250905061225a565b610424600480360360208110156108e757600080fd5b810190602081018135600160201b81111561090157600080fd5b82018360208201111561091357600080fd5b803590602001918460018302840111600160201b8311171561093457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612407945050505050565b60015460408051600160e41b62e32cf902815290516000926001600160a01b031691630e32cf90916004808301926020929190829003018186803b1580156109bc57600080fd5b505afa1580156109d0573d6000803e3d6000fd5b505050506040513d60208110156109e657600080fd5b50516001600160a01b03163314610a3b5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a7d92508391506124079050565b1515600114610ace5760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b8260011480610add5750826002145b1515610b1d57604051600160e51b62461bcd028152600401808060200182810382526025815260200180613a646025913960400191505060405180910390fd5b6000610b5e86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b9050600481815481101515610b6f57fe5b9060005260206000209060080201600601546001141515610bc457604051600160e51b62461bcd028152600401808060200182810382526027815260200180613a896027913960400191505060405180910390fd5b6000808560011415610bdb57506002905080610bec565b8560021415610bec57506004905060035b610c2d88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250611862915050565b1515600114610c7057604051600160e51b62461bcd028152600401808060200182810382526027815260200180613ab06027913960400191505060405180910390fd5b8560011415610cbd57610cb888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061252292505050565b610cfc565b610cfc88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127e492505050565b979650505050505050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5557600080fd5b505afa158015610d69573d6000803e3d6000fd5b505050506040513d6020811015610d7f57600080fd5b50516001600160a01b03163314610dd45760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1692508391506124079050565b1515600114610e675760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b8160011415610eb457610eaf84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061299192505050565b610ef3565b610ef384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4f92505050565b50505050565b60015460408051600160e41b62e32cf902815290516060926001600160a01b031691630e32cf90916004808301926020929190829003018186803b158015610f4057600080fd5b505afa158015610f54573d6000803e3d6000fd5b505050506040513d6020811015610f6a57600080fd5b50516001600160a01b03163314610fbf5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b600461100084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b8154811061100a57fe5b6000918252602091829020600460089092020101805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156110a05780601f10611075576101008083540402835291602001916110a0565b820191906000526020600020905b81548152906001019060200180831161108357829003601f168201915b505050505090505b92915050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156110fc57600080fd5b505afa158015611110573d6000803e3d6000fd5b505050506040513d602081101561112657600080fd5b50516001600160a01b0316331461117b5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8383838360405160200180858580828437600160f91b601702920191825250600101838380828437808301925050509450505050506040516020818303038152906040526111c881612407565b1561120d5760408051600160e51b62461bcd02815260206004820152600a6024820152600160b01b696f72672065786973747302604482015290519081900360640190fd5b61128585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525060029250829150612d0e9050565b5050505050565b600060056000836040516020018082805190602001908083835b602083106112c55780518252601f1990920191602091820191016112a6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014151561149057600061132383612495565b905060048181548110151561133457fe5b906000526020600020906008020160010154600214806113735750600480548290811061135d57fe5b9060005260206000209060080201600101546003145b1561148e57600061142c60048381548110151561138c57fe5b6000918252602091829020600460089092020101805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156114225780601f106113f757610100808354040283529160200191611422565b820191906000526020600020905b81548152906001019060200180831161140557829003601f168201915b5050505050612495565b905060048181548110151561143d57fe5b9060005260206000209060080201600101546002148061147c5750600480548290811061146657fe5b9060005260206000209060080201600101546003145b1561148c57600192505050611494565b505b505b5060005b919050565b60608060606000806004868154811015156114b057fe5b90600052602060002090600802016000016004878154811015156114d057fe5b90600052602060002090600802016002016004888154811015156114f057fe5b906000526020600020906008020160040160048981548110151561151057fe5b90600052602060002090600802016006015460048a81548110151561153157fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156116665780601f1061163b57610100808354040283529160200191611666565b820191906000526020600020905b81548152906001019060200180831161164957829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156116f45780601f106116c9576101008083540402835291602001916116f4565b820191906000526020600020905b8154815290600101906020018083116116d757829003601f168201915b505050505092509450945094509450945091939590929450565b606061174f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061240792505050565b15156001146117a05760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b60006117e184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b90506004818154811015156117f257fe5b906000526020600020906008020160070180548060200260200160405190810160405280929190818152602001828054801561184d57602002820191906000526020600020905b815481526020019060010190808311611839575b505050505091505092915050565b6004545b90565b600060056000846040516020018082805190602001908083835b6020831061189b5780518252601f19909201916020918201910161187c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014156118f5575060006110a8565b600061190084612495565b905060056000856040516020018082805190602001908083835b602083106119395780518252601f19909201916020918201910161191a565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001208152602001908152602001600020546000141580156119b257508260048281548110151561199e57fe5b906000526020600020906008020160010154145b949350505050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b505afa158015611a1c573d6000803e3d6000fd5b505050506040513d6020811015611a3257600080fd5b50516001600160a01b03163314611a875760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b611adc6040518060200160405280600081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925060029150612d0e9050565b6002556003555050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3457600080fd5b505afa158015611b48573d6000803e3d6000fd5b505050506040513d6020811015611b5e57600080fd5b50516001600160a01b03163314611bb35760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b611bf582828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250611862915050565b1515600114611c465760408051600160e51b62461bcd0281526020600482015260126024820152600160701b716e6f7468696e6720746f20617070726f766502604482015290519081900360640190fd5b6000611c8783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b90506002600482815481101515611c9a57fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515611cdf57fe5b9060005260206000209060080201600001600483815481101515611cff57fe5b9060005260206000209060080201600201600484815481101515611d1f57fe5b9060005260206000209060080201600401600485815481101515611d3f57fe5b906000526020600020906008020160060154600260405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611df05780601f10611dc557610100808354040283529160200191611df0565b820191906000526020600020905b815481529060010190602001808311611dd357829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015611e645780601f10611e3957610100808354040283529160200191611e64565b820191906000526020600020905b815481529060010190602001808311611e4757829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611ed85780601f10611ead57610100808354040283529160200191611ed8565b820191906000526020600020905b815481529060010190602001808311611ebb57829003601f168201915b50509850505050505050505060405180910390a1505050565b6060806060600080611f3887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061240792505050565b1515611fa757868660008083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820183528382528251908101909252918152949d509b50929950939750919550612250945050505050565b6000611fe888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249592505050565b9050600481815481101515611ff957fe5b906000526020600020906008020160000160048281548110151561201957fe5b906000526020600020906008020160020160048381548110151561203957fe5b906000526020600020906008020160040160048481548110151561205957fe5b90600052602060002090600802016006015460048581548110151561207a57fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121215780601f106120f657610100808354040283529160200191612121565b820191906000526020600020905b81548152906001019060200180831161210457829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156121af5780601f10612184576101008083540402835291602001916121af565b820191906000526020600020905b81548152906001019060200180831161219257829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561223d5780601f106122125761010080835404028352916020019161223d565b820191906000526020600020905b81548152906001019060200180831161222057829003601f168201915b5050505050925095509550955095509550505b9295509295909350565b600160009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156122a857600080fd5b505afa1580156122bc573d6000803e3d6000fd5b505050506040513d60208110156122d257600080fd5b50516001600160a01b031633146123275760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061236992508391506124079050565b156123ae5760408051600160e51b62461bcd02815260206004820152600a6024820152600160b01b696f72672065786973747302604482015290519081900360640190fd5b6124026040518060200160405280600081525084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250829150612d0e9050565b505050565b600060056000836040516020018082805190602001908083835b602083106124405780518252601f199092019160209182019101612421565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014159050919050565b6000600160056000846040516020018082805190602001908083835b602083106124d05780518252601f1990920191602091820191016124b1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b61252d816002611862565b151560011461257057604051600160e51b62461bcd028152600401808060200182810382526034815260200180613ad76034913960400191505060405180910390fd5b600061257b82612495565b9050600360048281548110151561258e57fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b6004828154811015156125d357fe5b90600052602060002090600802016000016004838154811015156125f357fe5b906000526020600020906008020160020160048481548110151561261357fe5b906000526020600020906008020160040160048581548110151561263357fe5b9060005260206000209060080201600601546003604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156126e45780601f106126b9576101008083540402835291602001916126e4565b820191906000526020600020905b8154815290600101906020018083116126c757829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156127585780601f1061272d57610100808354040283529160200191612758565b820191906000526020600020905b81548152906001019060200180831161273b57829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156127cc5780601f106127a1576101008083540402835291602001916127cc565b820191906000526020600020905b8154815290600101906020018083116127af57829003601f168201915b50509850505050505050505060405180910390a15050565b6127ef816004611862565b15156001146128485760408051600160e51b62461bcd02815260206004820152601a60248201527f6f7267206e6f7420696e2073757370656e646564207374617465000000000000604482015290519081900360640190fd5b600061285382612495565b9050600560048281548110151561286657fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b6004828154811015156128ab57fe5b90600052602060002090600802016000016004838154811015156128cb57fe5b90600052602060002090600802016002016004848154811015156128eb57fe5b906000526020600020906008020160040160048581548110151561290b57fe5b9060005260206000209060080201600601546005604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156126e45780601f106126b9576101008083540402835291602001916126e4565b61299c816003611862565b15156001146129ed5760408051600160e51b62461bcd0281526020600482015260126024820152600160701b716e6f7468696e6720746f20617070726f766502604482015290519081900360640190fd5b60006129f882612495565b905060048082815481101515612a0a57fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d96600482815481101515612a4f57fe5b9060005260206000209060080201600001600483815481101515612a6f57fe5b9060005260206000209060080201600201600484815481101515612a8f57fe5b9060005260206000209060080201600401600485815481101515612aaf57fe5b600091825260209182902060066008909202010154604080516060810183905260808082528754600260001961010060018416150201909116049082018190529293909283929183019183019060a084019089908015612b505780601f10612b2557610100808354040283529160200191612b50565b820191906000526020600020905b815481529060010190602001808311612b3357829003601f168201915b5050848103835287546002600019610100600184161502019091160480825260209091019088908015612bc45780601f10612b9957610100808354040283529160200191612bc4565b820191906000526020600020905b815481529060010190602001808311612ba757829003601f168201915b5050848103825286546002600019610100600184161502019091160480825260209091019087908015612c385780601f10612c0d57610100808354040283529160200191612c38565b820191906000526020600020905b815481529060010190602001808311612c1b57829003601f168201915b505097505050505050505060405180910390a15050565b612c5a816005611862565b1515600114612cab5760408051600160e51b62461bcd0281526020600482015260126024820152600160701b716e6f7468696e6720746f20617070726f766502604482015290519081900360640190fd5b6000612cb682612495565b90506002600482815481101515612cc957fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f600482815481101515612a4f57fe5b600080806001851415612d9057856040516020018082805190602001908083835b60208310612d4e5780518252601f199092019160209182019101612d2f565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209150612ecf565b866040516020018082805190602001908083835b60208310612dc35780518252601f199092019160209182019101612da4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b60208310612e345780518252601f199092019160209182019101612e15565b6001836020036101000a03801982511681845116808217855250505050505090500180600160f91b60170281525060010182805190602001908083835b60208310612e905780518252601f199092019160209182019101612e71565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b600680546001908101918290556000848152600560205260408120929092556004805491612eff9190830161382a565b90508560011415612fc45785600482815481101515612f1a57fe5b9060005260206000209060080201600601819055506000600482815481101515612f4057fe5b90600052602060002090600802016005018190555086600482815481101515612f6557fe5b90600052602060002090600802016003019080519060200190612f89929190613856565b5086600482815481101515612f9a57fe5b90600052602060002090600802016004019080519060200190612fbe929190613856565b50613308565b600084815260056020526040902054600354600480546000199093019450909184908110612fee57fe5b6000918252602090912060076008909202010154106130575760408051600160e51b62461bcd02815260206004820152601660248201527f62726561647468206c6576656c20657863656564656400000000000000000000604482015290519081900360640190fd5b600254600480548490811061306857fe5b9060005260206000209060080201600601541015156130d15760408051600160e51b62461bcd02815260206004820152601460248201527f6465707468206c6576656c206578636565646564000000000000000000000000604482015290519081900360640190fd5b60048054839081106130df57fe5b90600052602060002090600802016006015460010160048281548110151561310357fe5b9060005260206000209060080201600601819055508160048281548110151561312857fe5b6000918252602090912060056008909202010155600480548390811061314a57fe5b906000526020600020906008020160040160048281548110151561316a57fe5b9060005260206000209060080201600401908054600181600116156101000203166002900461319a9291906138d4565b5060006004838154811015156131ac57fe5b906000526020600020906008020160070180548091906001016131cf9190613949565b9050816004848154811015156131e157fe5b9060005260206000209060080201600701828154811015156131ff57fe5b906000526020600020018190555088886040516020018083805190602001908083835b602083106132415780518252601f199092019160209182019101613222565b6001836020036101000a03801982511681845116808217855250505050505090500180600160f91b60170281525060010182805190602001908083835b6020831061329d5780518252601f19909201916020918201910161327e565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526004838154811015156132e157fe5b90600052602060002090600802016003019080519060200190613305929190613856565b50505b8660048281548110151561331857fe5b9060005260206000209060080201600001908051906020019061333c929190613856565b508760048281548110151561334d57fe5b90600052602060002090600802016002019080519060200190613371929190613856565b508460048281548110151561338257fe5b90600052602060002090600802016001018190555084600114156135e2577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b6004828154811015156133d057fe5b90600052602060002090600802016000016004838154811015156133f057fe5b906000526020600020906008020160020160048481548110151561341057fe5b906000526020600020906008020160040160048581548110151561343057fe5b9060005260206000209060080201600601546001604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156134e15780601f106134b6576101008083540402835291602001916134e1565b820191906000526020600020905b8154815290600101906020018083116134c457829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156135555780601f1061352a57610100808354040283529160200191613555565b820191906000526020600020905b81548152906001019060200180831161353857829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156135c95780601f1061359e576101008083540402835291602001916135c9565b820191906000526020600020905b8154815290600101906020018083116135ac57829003601f168201915b50509850505050505050505060405180910390a1613820565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110151561361257fe5b906000526020600020906008020160000160048381548110151561363257fe5b906000526020600020906008020160020160048481548110151561365257fe5b906000526020600020906008020160040160048581548110151561367257fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156137235780601f106136f857610100808354040283529160200191613723565b820191906000526020600020905b81548152906001019060200180831161370657829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156137975780601f1061376c57610100808354040283529160200191613797565b820191906000526020600020905b81548152906001019060200180831161377a57829003601f168201915b505084810382528754600260001961010060018416150201909116048082526020909101908890801561380b5780601f106137e05761010080835404028352916020019161380b565b820191906000526020600020905b8154815290600101906020018083116137ee57829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b81548183558181111561240257600802816008028360005260206000209182019101612402919061396d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061389757805160ff19168380011785556138c4565b828001600101855582156138c4579182015b828111156138c45782518255916020019190600101906138a9565b506138d09291506139e4565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061390d57805485556138c4565b828001600101855582156138c457600052602060002091601f016020900482015b828111156138c457825482559160010191906001019061392e565b815481835581811115612402576000838152602090206124029181019083016139e4565b61185f91905b808211156138d057600061398782826139fe565b600182016000905560028201600061399f91906139fe565b6139ad6003830160006139fe565b6139bb6004830160006139fe565b600582016000905560068201600090556007820160006139db9190613a45565b50600801613973565b61185f91905b808211156138d057600081556001016139ea565b50805460018160011615610100020316600290046000825580601f10613a245750613a42565b601f016020900490600052602060002090810190613a4291906139e4565b50565b5080546000825590600052602060002090810190613a4291906139e456fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f7765646f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a72305820e20472358f6cc444b5476d1b471677de46e77b7421a1bcae4549f346a29e10870029 \ No newline at end of file +60806040525f600160146101000a81548160ff021916908315150217905550600460025560046003555f600655348015610037575f80fd5b506142b2806100455f395ff3fe608060405234801561000f575f80fd5b50600436106100f3575f3560e01c80637755ebdd11610095578063e302831611610064578063e3028316146102a9578063f4d6d9f5146102c5578063f9953de5146102f9578063ffe40d1d14610315576100f3565b80637755ebdd146102235780638c8642df146102415780639e58eb9f14610271578063c4d66de81461028d576100f3565b80631f953480116100d15780631f953480146101735780633fd62ae71461018f5780635c4f32ee146101bf5780635e99f6e5146101f3576100f3565b80630cc27493146100f757806314f775f914610127578063177c8d8a14610143575b5f80fd5b610111600480360381019061010c9190612cc8565b610345565b60405161011e9190612d34565b60405180910390f35b610141600480360381019061013c9190612cc8565b610747565b005b61015d60048036038101906101589190612d4d565b610981565b60405161016a9190612e22565b60405180910390f35b61018d60048036038101906101889190612e42565b610b7b565b005b6101a960048036038101906101a49190612fe8565b610d84565b6040516101b69190613049565b60405180910390f35b6101d960048036038101906101d49190613062565b610f50565b6040516101ea95949392919061308d565b60405180910390f35b61020d60048036038101906102089190612d4d565b6111b8565b60405161021a91906131aa565b60405180910390f35b61022b611314565b6040516102389190612d34565b60405180910390f35b61025b600480360381019061025691906131ca565b611320565b6040516102689190613049565b60405180910390f35b61028b60048036038101906102869190613224565b6113e6565b005b6102a760048036038101906102a291906132ef565b611554565b005b6102c360048036038101906102be9190612d4d565b61177a565b005b6102df60048036038101906102da9190612d4d565b611a4e565b6040516102f095949392919061308d565b60405180910390f35b610313600480360381019061030e9190612d4d565b611dd7565b005b61032f600480360381019061032a9190612fe8565b611fc7565b60405161033c9190613049565b60405180910390f35b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d4919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610438906133a3565b60405180910390fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506001151561049282611fc7565b1515146104d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104cb9061340b565b60405180910390fd5b60018314806104e35750600283145b610522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051990613499565b60405180910390fd5b5f61056f86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b9050600160048281548110610587576105866134b7565b5b905f5260205f20906008020160060154146105d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ce90613554565b60405180910390fd5b5f80600186036105ee576002915060029050610600565b600286036105ff5760049150600390505b5b6001151561065189898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505084611320565b151514610693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068a906135e2565b60405180910390fd5b600186036106ec576106e788888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061208c565b610739565b61073888888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506121de565b5b809450505050509392505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d5919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906133a3565b60405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506001151561089382611fc7565b1515146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc9061340b565b60405180910390fd5b6001820361092e5761092984848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612330565b61097b565b61097a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061247e565b5b50505050565b606060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a11919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a75906133a3565b60405180910390fd5b6004610acc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b81548110610add57610adc6134b7565b5b905f5260205f2090600802016004018054610af79061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b239061362d565b8015610b6e5780601f10610b4557610100808354040283529160200191610b6e565b820191905f5260205f20905b815481529060010190602001808311610b5157829003601f168201915b5050505050905092915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c09919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d906133a3565b60405180910390fd5b83838383604051602001610c8d94939291906136d5565b6040516020818303038152906040525f1515610ca882611fc7565b151514610cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce190613751565b60405180910390fd5b610d7d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505084848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506002806125cd565b5050505050565b5f8060055f84604051602001610d9a919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f205414610f47575f610dcd8361200a565b9050600260048281548110610de557610de46134b7565b5b905f5260205f209060080201600101541480610e245750600360048281548110610e1257610e116134b7565b5b905f5260205f20906008020160010154145b15610f45575f610edc60048381548110610e4157610e406134b7565b5b905f5260205f2090600802016004018054610e5b9061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e879061362d565b8015610ed25780601f10610ea957610100808354040283529160200191610ed2565b820191905f5260205f20905b815481529060010190602001808311610eb557829003601f168201915b505050505061200a565b9050600260048281548110610ef457610ef36134b7565b5b905f5260205f209060080201600101541480610f335750600360048281548110610f2157610f206134b7565b5b905f5260205f20906008020160010154145b15610f4357600192505050610f4b565b505b505b5f90505b919050565b60608060605f8060048681548110610f6b57610f6a6134b7565b5b905f5260205f2090600802015f0160048781548110610f8d57610f8c6134b7565b5b905f5260205f20906008020160020160048881548110610fb057610faf6134b7565b5b905f5260205f20906008020160040160048981548110610fd357610fd26134b7565b5b905f5260205f2090600802016006015460048a81548110610ff757610ff66134b7565b5b905f5260205f209060080201600101548480546110139061362d565b80601f016020809104026020016040519081016040528092919081815260200182805461103f9061362d565b801561108a5780601f106110615761010080835404028352916020019161108a565b820191905f5260205f20905b81548152906001019060200180831161106d57829003601f168201915b5050505050945083805461109d9061362d565b80601f01602080910402602001604051908101604052809291908181526020018280546110c99061362d565b80156111145780601f106110eb57610100808354040283529160200191611114565b820191905f5260205f20905b8154815290600101906020018083116110f757829003601f168201915b505050505093508280546111279061362d565b80601f01602080910402602001604051908101604052809291908181526020018280546111539061362d565b801561119e5780601f106111755761010080835404028352916020019161119e565b820191905f5260205f20905b81548152906001019060200180831161118157829003601f168201915b505050505092509450945094509450945091939590929450565b60606001151561120a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611fc7565b15151461124c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112439061340b565b60405180910390fd5b5f61129984848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b9050600481815481106112af576112ae6134b7565b5b905f5260205f20906008020160070180548060200260200160405190810160405280929190818152602001828054801561130657602002820191905f5260205f20905b8154815260200190600101908083116112f2575b505050505091505092915050565b5f600480549050905090565b5f8060055f85604051602001611336919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f205403611367575f90506113e0565b5f6113718461200a565b90505f60055f86604051602001611388919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f2054141580156113dc575082600482815481106113ca576113c96134b7565b5b905f5260205f20906008020160010154145b9150505b92915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611450573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611474919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d8906133a3565b60405180910390fd5b61154060405180602001604052805f81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050600160026125cd565b806002819055508160038190555050505050565b5f61155d612bfc565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156115a55750825b90505f60018367ffffffffffffffff161480156115d857505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156115e6575080155b1561161d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561166a576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf906137ff565b60405180910390fd5b8560015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315611772575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516117699190613872565b60405180910390a15b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611808919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c906133a3565b60405180910390fd5b600115156118c783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506001611320565b151514611909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611900906138d5565b60405180910390fd5b5f61195683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b905060026004828154811061196e5761196d6134b7565b5b905f5260205f209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481106119b6576119b56134b7565b5b905f5260205f2090600802015f01600483815481106119d8576119d76134b7565b5b905f5260205f209060080201600201600484815481106119fb576119fa6134b7565b5b905f5260205f20906008020160040160048581548110611a1e57611a1d6134b7565b5b905f5260205f209060080201600601546002604051611a419594939291906139bf565b60405180910390a1505050565b60608060605f80611aa187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611fc7565b611b245786865f8083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505092509091925060405180602001604052805f815250919060405180602001604052805f815250919094509450945094509450611dcd565b5f611b7188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061200a565b905060048181548110611b8757611b866134b7565b5b905f5260205f2090600802015f0160048281548110611ba957611ba86134b7565b5b905f5260205f20906008020160020160048381548110611bcc57611bcb6134b7565b5b905f5260205f20906008020160040160048481548110611bef57611bee6134b7565b5b905f5260205f2090600802016006015460048581548110611c1357611c126134b7565b5b905f5260205f20906008020160010154848054611c2f9061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5b9061362d565b8015611ca65780601f10611c7d57610100808354040283529160200191611ca6565b820191905f5260205f20905b815481529060010190602001808311611c8957829003601f168201915b50505050509450838054611cb99061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce59061362d565b8015611d305780601f10611d0757610100808354040283529160200191611d30565b820191905f5260205f20905b815481529060010190602001808311611d1357829003601f168201915b50505050509350828054611d439061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6f9061362d565b8015611dba5780601f10611d9157610100808354040283529160200191611dba565b820191905f5260205f20905b815481529060010190602001808311611d9d57829003601f168201915b5050505050925095509550955095509550505b9295509295909350565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e65919061332e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec9906133a3565b60405180910390fd5b81818080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050505f1515611f2282611fc7565b151514611f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5b90613751565b60405180910390fd5b611fc260405180602001604052805f81525084848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506001806125cd565b505050565b5f8060055f84604051602001611fdd919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f205414159050919050565b5f8060055f84604051602001612020919061379f565b6040516020818303038152906040528051906020012081526020019081526020015f205490505f8103612076577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050612087565b6001816120839190613a52565b9150505b919050565b6001151561209b826002611320565b1515146120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d490613af5565b60405180910390fd5b5f6120e78261200a565b90506003600482815481106120ff576120fe6134b7565b5b905f5260205f209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110612147576121466134b7565b5b905f5260205f2090600802015f0160048381548110612169576121686134b7565b5b905f5260205f2090600802016002016004848154811061218c5761218b6134b7565b5b905f5260205f209060080201600401600485815481106121af576121ae6134b7565b5b905f5260205f2090600802016006015460036040516121d2959493929190613b4c565b60405180910390a15050565b600115156121ed826004611320565b15151461222f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222690613bfc565b60405180910390fd5b5f6122398261200a565b9050600560048281548110612251576122506134b7565b5b905f5260205f209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110612299576122986134b7565b5b905f5260205f2090600802015f01600483815481106122bb576122ba6134b7565b5b905f5260205f209060080201600201600484815481106122de576122dd6134b7565b5b905f5260205f20906008020160040160048581548110612301576123006134b7565b5b905f5260205f209060080201600601546005604051612324959493929190613c53565b60405180910390a15050565b6001151561233f826003611320565b151514612381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612378906138d5565b60405180910390fd5b5f61238b8261200a565b905060048082815481106123a2576123a16134b7565b5b905f5260205f209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d96600482815481106123ea576123e96134b7565b5b905f5260205f2090600802015f016004838154811061240c5761240b6134b7565b5b905f5260205f2090600802016002016004848154811061242f5761242e6134b7565b5b905f5260205f20906008020160040160048581548110612452576124516134b7565b5b905f5260205f209060080201600601546040516124729493929190613cb9565b60405180910390a15050565b6001151561248d826005611320565b1515146124cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c6906138d5565b60405180910390fd5b5f6124d98261200a565b90506002600482815481106124f1576124f06134b7565b5b905f5260205f209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f60048281548110612539576125386134b7565b5b905f5260205f2090600802015f016004838154811061255b5761255a6134b7565b5b905f5260205f2090600802016002016004848154811061257e5761257d6134b7565b5b905f5260205f209060080201600401600485815481106125a1576125a06134b7565b5b905f5260205f209060080201600601546040516125c19493929190613cb9565b60405180910390a15050565b5f805f6001850361260657856040516020016125e9919061379f565b60405160208183030381529060405280519060200120915061265b565b86604051602001612617919061379f565b6040516020818303038152906040528051906020012092508686604051602001612642929190613d11565b6040516020818303038152906040528051906020012091505b60065f81548092919061266d90613d3f565b919050555060065460055f8481526020019081526020015f20819055505f6004805490509050600460018160018154018082558091505003905f5260205f209050506001860361276e5785600482815481106126cc576126cb6134b7565b5b905f5260205f209060080201600601819055505f600482815481106126f4576126f36134b7565b5b905f5260205f20906008020160050181905550866004828154811061271c5761271b6134b7565b5b905f5260205f20906008020160030190816127379190613f08565b50866004828154811061274d5761274c6134b7565b5b905f5260205f20906008020160040190816127689190613f08565b506129cb565b600160055f8681526020019081526020015f205461278c9190613a52565b9150600354600483815481106127a5576127a46134b7565b5b905f5260205f20906008020160070180549050106127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90614021565b60405180910390fd5b6002546004838154811061280f5761280e6134b7565b5b905f5260205f209060080201600601541061285f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285690614089565b60405180910390fd5b600160048381548110612875576128746134b7565b5b905f5260205f2090600802016006015461288f91906140a7565b600482815481106128a3576128a26134b7565b5b905f5260205f2090600802016006018190555081600482815481106128cb576128ca6134b7565b5b905f5260205f20906008020160050181905550600482815481106128f2576128f16134b7565b5b905f5260205f20906008020160040160048281548110612915576129146134b7565b5b905f5260205f20906008020160040190816129309190614101565b5060048281548110612945576129446134b7565b5b905f5260205f20906008020160070181908060018154018082558091505060019003905f5260205f20015f9091909190915055878760405160200161298b929190613d11565b604051602081830303815290604052600482815481106129ae576129ad6134b7565b5b905f5260205f20906008020160030190816129c99190613f08565b505b86600482815481106129e0576129df6134b7565b5b905f5260205f2090600802015f0190816129fa9190613f08565b508760048281548110612a1057612a0f6134b7565b5b905f5260205f2090600802016002019081612a2b9190613f08565b508460048281548110612a4157612a406134b7565b5b905f5260205f2090600802016001018190555060018503612b29577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110612a9157612a906134b7565b5b905f5260205f2090600802015f0160048381548110612ab357612ab26134b7565b5b905f5260205f20906008020160020160048481548110612ad657612ad56134b7565b5b905f5260205f20906008020160040160048581548110612af957612af86134b7565b5b905f5260205f209060080201600601546001604051612b1c959493929190614216565b60405180910390a1612bf2565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110612b5e57612b5d6134b7565b5b905f5260205f2090600802015f0160048381548110612b8057612b7f6134b7565b5b905f5260205f20906008020160020160048481548110612ba357612ba26134b7565b5b905f5260205f20906008020160040160048581548110612bc657612bc56134b7565b5b905f5260205f209060080201600601546002604051612be99594939291906139bf565b60405180910390a15b5050505050505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c5557612c54612c34565b5b8235905067ffffffffffffffff811115612c7257612c71612c38565b5b602083019150836001820283011115612c8e57612c8d612c3c565b5b9250929050565b5f819050919050565b612ca781612c95565b8114612cb1575f80fd5b50565b5f81359050612cc281612c9e565b92915050565b5f805f60408486031215612cdf57612cde612c2c565b5b5f84013567ffffffffffffffff811115612cfc57612cfb612c30565b5b612d0886828701612c40565b93509350506020612d1b86828701612cb4565b9150509250925092565b612d2e81612c95565b82525050565b5f602082019050612d475f830184612d25565b92915050565b5f8060208385031215612d6357612d62612c2c565b5b5f83013567ffffffffffffffff811115612d8057612d7f612c30565b5b612d8c85828601612c40565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612dcf578082015181840152602081019050612db4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612df482612d98565b612dfe8185612da2565b9350612e0e818560208601612db2565b612e1781612dda565b840191505092915050565b5f6020820190508181035f830152612e3a8184612dea565b905092915050565b5f805f8060408587031215612e5a57612e59612c2c565b5b5f85013567ffffffffffffffff811115612e7757612e76612c30565b5b612e8387828801612c40565b9450945050602085013567ffffffffffffffff811115612ea657612ea5612c30565b5b612eb287828801612c40565b925092505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612efa82612dda565b810181811067ffffffffffffffff82111715612f1957612f18612ec4565b5b80604052505050565b5f612f2b612c23565b9050612f378282612ef1565b919050565b5f67ffffffffffffffff821115612f5657612f55612ec4565b5b612f5f82612dda565b9050602081019050919050565b828183375f83830152505050565b5f612f8c612f8784612f3c565b612f22565b905082815260208101848484011115612fa857612fa7612ec0565b5b612fb3848285612f6c565b509392505050565b5f82601f830112612fcf57612fce612c34565b5b8135612fdf848260208601612f7a565b91505092915050565b5f60208284031215612ffd57612ffc612c2c565b5b5f82013567ffffffffffffffff81111561301a57613019612c30565b5b61302684828501612fbb565b91505092915050565b5f8115159050919050565b6130438161302f565b82525050565b5f60208201905061305c5f83018461303a565b92915050565b5f6020828403121561307757613076612c2c565b5b5f61308484828501612cb4565b91505092915050565b5f60a0820190508181035f8301526130a58188612dea565b905081810360208301526130b98187612dea565b905081810360408301526130cd8186612dea565b90506130dc6060830185612d25565b6130e96080830184612d25565b9695505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61312581612c95565b82525050565b5f613136838361311c565b60208301905092915050565b5f602082019050919050565b5f613158826130f3565b61316281856130fd565b935061316d8361310d565b805f5b8381101561319d578151613184888261312b565b975061318f83613142565b925050600181019050613170565b5085935050505092915050565b5f6020820190508181035f8301526131c2818461314e565b905092915050565b5f80604083850312156131e0576131df612c2c565b5b5f83013567ffffffffffffffff8111156131fd576131fc612c30565b5b61320985828601612fbb565b925050602061321a85828601612cb4565b9150509250929050565b5f805f806060858703121561323c5761323b612c2c565b5b5f85013567ffffffffffffffff81111561325957613258612c30565b5b61326587828801612c40565b9450945050602061327887828801612cb4565b925050604061328987828801612cb4565b91505092959194509250565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132be82613295565b9050919050565b6132ce816132b4565b81146132d8575f80fd5b50565b5f813590506132e9816132c5565b92915050565b5f6020828403121561330457613303612c2c565b5b5f613311848285016132db565b91505092915050565b5f81519050613328816132c5565b92915050565b5f6020828403121561334357613342612c2c565b5b5f6133508482850161331a565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f61338d600e83612da2565b915061339882613359565b602082019050919050565b5f6020820190508181035f8301526133ba81613381565b9050919050565b7f6f726720646f6573206e6f7420657869737400000000000000000000000000005f82015250565b5f6133f5601283612da2565b9150613400826133c1565b602082019050919050565b5f6020820190508181035f830152613422816133e9565b9050919050565b7f696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c5f8201527f6c6f776564000000000000000000000000000000000000000000000000000000602082015250565b5f613483602583612da2565b915061348e82613429565b604082019050919050565b5f6020820190508181035f8301526134b081613477565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f6e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f74205f8201527f616c6c6f77656400000000000000000000000000000000000000000000000000602082015250565b5f61353e602783612da2565b9150613549826134e4565b604082019050919050565b5f6020820190508181035f83015261356b81613532565b9050919050565b7f6f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f705f8201527f65726174696f6e00000000000000000000000000000000000000000000000000602082015250565b5f6135cc602783612da2565b91506135d782613572565b604082019050919050565b5f6020820190508181035f8301526135f9816135c0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061364457607f821691505b60208210810361365757613656613600565b5b50919050565b5f81905092915050565b5f613672838561365d565b935061367f838584612f6c565b82840190509392505050565b7f2e000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6136bf60018361365d565b91506136ca8261368b565b600182019050919050565b5f6136e1828688613667565b91506136ec826136b3565b91506136f9828486613667565b915081905095945050505050565b7f6f726720657869737473000000000000000000000000000000000000000000005f82015250565b5f61373b600a83612da2565b915061374682613707565b602082019050919050565b5f6020820190508181035f8301526137688161372f565b9050919050565b5f61377982612d98565b613783818561365d565b9350613793818560208601612db2565b80840191505092915050565b5f6137aa828461376f565b915081905092915050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f6137e9601b83612da2565b91506137f4826137b5565b602082019050919050565b5f6020820190508181035f830152613816816137dd565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f61385c6138576138528461381d565b613839565b613826565b9050919050565b61386c81613842565b82525050565b5f6020820190506138855f830184613863565b92915050565b7f6e6f7468696e6720746f20617070726f766500000000000000000000000000005f82015250565b5f6138bf601283612da2565b91506138ca8261388b565b602082019050919050565b5f6020820190508181035f8301526138ec816138b3565b9050919050565b5f819050815f5260205f209050919050565b5f81546139118161362d565b61391b8186612da2565b9450600182165f8114613935576001811461394b5761397d565b60ff19831686528115156020028601935061397d565b613954856138f3565b5f5b8381101561397557815481890152600182019150602081019050613956565b808801955050505b50505092915050565b5f819050919050565b5f6139a96139a461399f84613986565b613839565b612c95565b9050919050565b6139b98161398f565b82525050565b5f60a0820190508181035f8301526139d78188613905565b905081810360208301526139eb8187613905565b905081810360408301526139ff8186613905565b9050613a0e6060830185612d25565b613a1b60808301846139b0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a5c82612c95565b9150613a6783612c95565b9250828203905081811115613a7f57613a7e613a25565b5b92915050565b7f6f7267206e6f7420696e20617070726f766564207374617475732e206f7065725f8201527f6174696f6e2063616e6e6f7420626520646f6e65000000000000000000000000602082015250565b5f613adf603483612da2565b9150613aea82613a85565b604082019050919050565b5f6020820190508181035f830152613b0c81613ad3565b9050919050565b5f819050919050565b5f613b36613b31613b2c84613b13565b613839565b612c95565b9050919050565b613b4681613b1c565b82525050565b5f60a0820190508181035f830152613b648188613905565b90508181036020830152613b788187613905565b90508181036040830152613b8c8186613905565b9050613b9b6060830185612d25565b613ba86080830184613b3d565b9695505050505050565b7f6f7267206e6f7420696e2073757370656e6465642073746174650000000000005f82015250565b5f613be6601a83612da2565b9150613bf182613bb2565b602082019050919050565b5f6020820190508181035f830152613c1381613bda565b9050919050565b5f819050919050565b5f613c3d613c38613c3384613c1a565b613839565b612c95565b9050919050565b613c4d81613c23565b82525050565b5f60a0820190508181035f830152613c6b8188613905565b90508181036020830152613c7f8187613905565b90508181036040830152613c938186613905565b9050613ca26060830185612d25565b613caf6080830184613c44565b9695505050505050565b5f6080820190508181035f830152613cd18187613905565b90508181036020830152613ce58186613905565b90508181036040830152613cf98185613905565b9050613d086060830184612d25565b95945050505050565b5f613d1c828561376f565b9150613d27826136b3565b9150613d33828461376f565b91508190509392505050565b5f613d4982612c95565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d7b57613d7a613a25565b5b600182019050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613dd07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613d95565b613dda8683613d95565b95508019841693508086168417925050509392505050565b5f613e0c613e07613e0284612c95565b613839565b612c95565b9050919050565b5f819050919050565b613e2583613df2565b613e39613e3182613e13565b848454613da1565b825550505050565b5f90565b613e4d613e41565b613e58818484613e1c565b505050565b5b81811015613e7b57613e705f82613e45565b600181019050613e5e565b5050565b601f821115613ec057613e91816138f3565b613e9a84613d86565b81016020851015613ea9578190505b613ebd613eb585613d86565b830182613e5d565b50505b505050565b5f82821c905092915050565b5f613ee05f1984600802613ec5565b1980831691505092915050565b5f613ef88383613ed1565b9150826002028217905092915050565b613f1182612d98565b67ffffffffffffffff811115613f2a57613f29612ec4565b5b613f34825461362d565b613f3f828285613e7f565b5f60209050601f831160018114613f70575f8415613f5e578287015190505b613f688582613eed565b865550613fcf565b601f198416613f7e866138f3565b5f5b82811015613fa557848901518255600182019150602085019450602081019050613f80565b86831015613fc25784890151613fbe601f891682613ed1565b8355505b6001600288020188555050505b505050505050565b7f62726561647468206c6576656c206578636565646564000000000000000000005f82015250565b5f61400b601683612da2565b915061401682613fd7565b602082019050919050565b5f6020820190508181035f83015261403881613fff565b9050919050565b7f6465707468206c6576656c2065786365656465640000000000000000000000005f82015250565b5f614073601483612da2565b915061407e8261403f565b602082019050919050565b5f6020820190508181035f8301526140a081614067565b9050919050565b5f6140b182612c95565b91506140bc83612c95565b92508282019050808211156140d4576140d3613a25565b5b92915050565b5f815490506140e88161362d565b9050919050565b5f819050815f5260205f209050919050565b81810361410f5750506141e4565b614118826140da565b67ffffffffffffffff81111561413157614130612ec4565b5b61413b825461362d565b614146828285613e7f565b5f601f831160018114614173575f8415614161578287015490505b61416b8582613eed565b8655506141dd565b601f198416614181876140ef565b965061418c866138f3565b5f5b828110156141b35784890154825560018201915060018501945060208101905061418e565b868310156141d057848901546141cc601f891682613ed1565b8355505b6001600288020188555050505b5050505050505b565b5f6142006141fb6141f68461381d565b613839565b612c95565b9050919050565b614210816141e6565b82525050565b5f60a0820190508181035f83015261422e8188613905565b905081810360208301526142428187613905565b905081810360408301526142568186613905565b90506142656060830185612d25565b6142726080830184614207565b969550505050505056fea26469706673582212202f54aac41a4a173225ebb18f40ad297062a0894f81ddcbdd25585193bb32681664736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/PermissionsImplementation.abi b/permission/v2/contract/gen/PermissionsImplementation.abi index c0045990fc..3bfa699491 100644 --- a/permission/v2/contract/gen/PermissionsImplementation.abi +++ b/permission/v2/contract/gen/PermissionsImplementation.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"},{"name":"_action","type":"uint256"},{"name":"_caller","type":"address"}],"name":"updateAccountStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_access","type":"uint256"},{"name":"_voter","type":"bool"},{"name":"_admin","type":"bool"},{"name":"_caller","type":"address"}],"name":"addNewRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nwAdminOrg","type":"string"},{"name":"_nwAdminRole","type":"string"},{"name":"_oAdminRole","type":"string"}],"name":"setPolicy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"},{"name":"_caller","type":"address"}],"name":"startBlacklistedAccountRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"},{"name":"_caller","type":"address"}],"name":"updateOrgStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"},{"name":"_roleId","type":"string"},{"name":"_caller","type":"address"}],"name":"assignAdminRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"updateNetworkBootStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"}],"name":"connectionAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"},{"name":"_caller","type":"address"}],"name":"approveBlacklistedAccountRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getNetworkBootStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"}],"name":"addAdminAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_caller","type":"address"}],"name":"removeRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pOrgId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_caller","type":"address"}],"name":"addSubOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"}],"name":"validateAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"}],"name":"addAdminNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"},{"name":"_caller","type":"address"}],"name":"approveAdminRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"},{"name":"_roleId","type":"string"},{"name":"_caller","type":"address"}],"name":"assignAccountRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"},{"name":"_target","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_gasLimit","type":"uint256"},{"name":"_payload","type":"bytes"}],"name":"transactionAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"}],"name":"isOrgAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_caller","type":"address"}],"name":"approveBlacklistedNodeRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_breadth","type":"uint256"},{"name":"_depth","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"},{"name":"_caller","type":"address"}],"name":"approveOrgStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_action","type":"uint256"},{"name":"_caller","type":"address"}],"name":"updateNodeStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPolicyDetails","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"isNetworkAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_caller","type":"address"}],"name":"startBlacklistedNodeRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_account","type":"address"},{"name":"_caller","type":"address"}],"name":"addOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_caller","type":"address"}],"name":"addNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getPendingOp","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nwAdminOrg","type":"string"},{"name":"_nwAdminRole","type":"string"},{"name":"_oAdminRole","type":"string"},{"name":"_networkBootStatus","type":"bool"}],"name":"setMigrationPolicy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_account","type":"address"},{"name":"_caller","type":"address"}],"name":"approveOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_permUpgradable","type":"address"},{"name":"_orgManager","type":"address"},{"name":"_rolesManager","type":"address"},{"name":"_accountManager","type":"address"},{"name":"_voterManager","type":"address"},{"name":"_nodeManager","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_networkBootStatus","type":"bool"}],"name":"PermissionsInitialized","type":"event"}] \ No newline at end of file +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_networkBootStatus","type":"bool"}],"name":"PermissionsInitialized","type":"event"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addAdminAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"}],"name":"addAdminNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_caller","type":"address"}],"name":"addContractWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_access","type":"uint256"},{"internalType":"bool","name":"_voter","type":"bool"},{"internalType":"bool","name":"_admin","type":"bool"},{"internalType":"address","name":"_caller","type":"address"}],"name":"addNewRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"address","name":"_caller","type":"address"}],"name":"addNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_caller","type":"address"}],"name":"addOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_pOrgId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"address","name":"_caller","type":"address"}],"name":"addSubOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_caller","type":"address"}],"name":"approveAdminRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_caller","type":"address"}],"name":"approveBlacklistedAccountRecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"address","name":"_caller","type":"address"}],"name":"approveBlacklistedNodeRecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_caller","type":"address"}],"name":"approveOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_action","type":"uint256"},{"internalType":"address","name":"_caller","type":"address"}],"name":"approveOrgStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"address","name":"_caller","type":"address"}],"name":"assignAccountRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"address","name":"_caller","type":"address"}],"name":"assignAdminRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"}],"name":"connectionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccessLevelForUnconfiguredAccount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNetworkBootStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"getPendingOp","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPolicyDetails","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_breadth","type":"uint256"},{"internalType":"uint256","name":"_depth","type":"uint256"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_permUpgradable","type":"address"},{"internalType":"address","name":"_orgManager","type":"address"},{"internalType":"address","name":"_rolesManager","type":"address"},{"internalType":"address","name":"_accountManager","type":"address"},{"internalType":"address","name":"_voterManager","type":"address"},{"internalType":"address","name":"_nodeManager","type":"address"},{"internalType":"address","name":"_contractWhitelistManager","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isNetworkAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"isOrgAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_caller","type":"address"}],"name":"removeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_caller","type":"address"}],"name":"revokeContractWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessLevel","type":"uint256"},{"internalType":"address","name":"_caller","type":"address"}],"name":"setAccessLevelForUnconfiguredAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isIpValidationEnabled","type":"bool"}],"name":"setIpValidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_nwAdminOrg","type":"string"},{"internalType":"string","name":"_nwAdminRole","type":"string"},{"internalType":"string","name":"_oAdminRole","type":"string"},{"internalType":"bool","name":"_networkBootStatus","type":"bool"}],"name":"setMigrationPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_nwAdminOrg","type":"string"},{"internalType":"string","name":"_nwAdminRole","type":"string"},{"internalType":"string","name":"_oAdminRole","type":"string"}],"name":"setPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_caller","type":"address"}],"name":"startBlacklistedAccountRecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"address","name":"_caller","type":"address"}],"name":"startBlacklistedNodeRecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_gasPrice","type":"uint256"},{"internalType":"uint256","name":"_gasLimit","type":"uint256"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"transactionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_action","type":"uint256"},{"internalType":"address","name":"_caller","type":"address"}],"name":"updateAccountStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateNetworkBootStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"uint256","name":"_action","type":"uint256"},{"internalType":"address","name":"_caller","type":"address"}],"name":"updateNodeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_action","type":"uint256"},{"internalType":"address","name":"_caller","type":"address"}],"name":"updateOrgStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"validateAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/PermissionsImplementation.bin b/permission/v2/contract/gen/PermissionsImplementation.bin index a03b54bfc2..ff215612f4 100644 --- a/permission/v2/contract/gen/PermissionsImplementation.bin +++ b/permission/v2/contract/gen/PermissionsImplementation.bin @@ -1 +1 @@ -60806040526003600955600a805460ff191690553480156200002057600080fd5b5060405160c08062008587833981018060405260c08110156200004257600080fd5b508051602082015160408301516060840151608085015160a090950151600580546001600160a01b039687166001600160a01b03199182161790915560048054958716958216959095179094556001805493861693851693909317909255600080549185169184169190911790556002805494841694831694909417909355600380549290931691161790556184a980620000de6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063888430411161010f578063cc9ba6fa116100a2578063ecad01d511610071578063ecad01d5146117db578063f346a3a7146119a5578063f5ad584a14611b11578063f75f0a0614611c21576101e5565b8063cc9ba6fa146112c4578063d1aa0c2014611418578063d621d9571461143e578063e91b0e1914611608576101e5565b8063a042bf40116100de578063a042bf4014610e8b578063a5843f0814611055578063b554656414611078578063b9b7fe6c146110f5576101e5565b80638884304114610b7a5780638baa819114610bf9578063936421d514610d3d5780639bd3810114610dd7576101e5565b806345a59e5b116101875780635ca5adbe116101565780635ca5adbe146107b957806368a61273146108805780636b568d76146109fc5780638683c7fe14610ab0576101e5565b806345a59e5b1461064a5780634b20f45f1461070c5780634cbfa82e1461078b5780634fe57e7a14610793576101e5565b80631c249912116101c35780631c2499121461045e5780633cf5f33b146104dd578063404bf3eb1461055a57806344478e791461062e576101e5565b806304e81f1e146101ea5780631b04c276146102735780631b61022014610350575b600080fd5b6102716004803603608081101561020057600080fd5b810190602081018135600160201b81111561021a57600080fd5b82018360208201111561022c57600080fd5b803590602001918460018302840111600160201b8311171561024d57600080fd5b91935091506001600160a01b03813581169160208101359160409091013516611df4565b005b610271600480360360c081101561028957600080fd5b810190602081018135600160201b8111156102a357600080fd5b8201836020820111156102b557600080fd5b803590602001918460018302840111600160201b831117156102d657600080fd5b919390929091602081019035600160201b8111156102f357600080fd5b82018360208201111561030557600080fd5b803590602001918460018302840111600160201b8311171561032657600080fd5b919350915080359060208101351515906040810135151590606001356001600160a01b0316612047565b6102716004803603606081101561036657600080fd5b810190602081018135600160201b81111561038057600080fd5b82018360208201111561039257600080fd5b803590602001918460018302840111600160201b831117156103b357600080fd5b919390929091602081019035600160201b8111156103d057600080fd5b8201836020820111156103e257600080fd5b803590602001918460018302840111600160201b8311171561040357600080fd5b919390929091602081019035600160201b81111561042057600080fd5b82018360208201111561043257600080fd5b803590602001918460018302840111600160201b8311171561045357600080fd5b509092509050612309565b6102716004803603606081101561047457600080fd5b810190602081018135600160201b81111561048e57600080fd5b8201836020820111156104a057600080fd5b803590602001918460018302840111600160201b831117156104c157600080fd5b91935091506001600160a01b0381358116916020013516612448565b610271600480360360608110156104f357600080fd5b810190602081018135600160201b81111561050d57600080fd5b82018360208201111561051f57600080fd5b803590602001918460018302840111600160201b8311171561054057600080fd5b9193509150803590602001356001600160a01b0316612747565b6102716004803603608081101561057057600080fd5b810190602081018135600160201b81111561058a57600080fd5b82018360208201111561059c57600080fd5b803590602001918460018302840111600160201b831117156105bd57600080fd5b919390926001600160a01b0383351692604081019060200135600160201b8111156105e757600080fd5b8201836020820111156105f957600080fd5b803590602001918460018302840111600160201b8311171561061a57600080fd5b9193509150356001600160a01b0316612a4f565b610636612e0e565b604080519115158252519081900360200190f35b6106366004803603606081101561066057600080fd5b810190602081018135600160201b81111561067a57600080fd5b82018360208201111561068c57600080fd5b803590602001918460018302840111600160201b831117156106ad57600080fd5b919390929091602081019035600160201b8111156106ca57600080fd5b8201836020820111156106dc57600080fd5b803590602001918460018302840111600160201b831117156106fd57600080fd5b91935091503561ffff16612f6c565b6102716004803603606081101561072257600080fd5b810190602081018135600160201b81111561073c57600080fd5b82018360208201111561074e57600080fd5b803590602001918460018302840111600160201b8311171561076f57600080fd5b91935091506001600160a01b0381358116916020013516613070565b6106366132b9565b610271600480360360208110156107a957600080fd5b50356001600160a01b03166132c3565b610271600480360360608110156107cf57600080fd5b810190602081018135600160201b8111156107e957600080fd5b8201836020820111156107fb57600080fd5b803590602001918460018302840111600160201b8311171561081c57600080fd5b919390929091602081019035600160201b81111561083957600080fd5b82018360208201111561084b57600080fd5b803590602001918460018302840111600160201b8311171561086c57600080fd5b9193509150356001600160a01b03166135e4565b610271600480360360e081101561089657600080fd5b810190602081018135600160201b8111156108b057600080fd5b8201836020820111156108c257600080fd5b803590602001918460018302840111600160201b831117156108e357600080fd5b919390929091602081019035600160201b81111561090057600080fd5b82018360208201111561091257600080fd5b803590602001918460018302840111600160201b8311171561093357600080fd5b919390929091602081019035600160201b81111561095057600080fd5b82018360208201111561096257600080fd5b803590602001918460018302840111600160201b8311171561098357600080fd5b919390929091602081019035600160201b8111156109a057600080fd5b8201836020820111156109b257600080fd5b803590602001918460018302840111600160201b831117156109d357600080fd5b9193509150803561ffff90811691602081013590911690604001356001600160a01b0316613aa6565b61063660048036036040811015610a1257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610a3c57600080fd5b820183602082011115610a4e57600080fd5b803590602001918460018302840111600160201b83111715610a6f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613ef1945050505050565b61027160048036036080811015610ac657600080fd5b810190602081018135600160201b811115610ae057600080fd5b820183602082011115610af257600080fd5b803590602001918460018302840111600160201b83111715610b1357600080fd5b919390929091602081019035600160201b811115610b3057600080fd5b820183602082011115610b4257600080fd5b803590602001918460018302840111600160201b83111715610b6357600080fd5b919350915061ffff81358116916020013516613fdf565b61027160048036036060811015610b9057600080fd5b810190602081018135600160201b811115610baa57600080fd5b820183602082011115610bbc57600080fd5b803590602001918460018302840111600160201b83111715610bdd57600080fd5b91935091506001600160a01b0381358116916020013516614228565b61027160048036036080811015610c0f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610c3957600080fd5b820183602082011115610c4b57600080fd5b803590602001918460018302840111600160201b83111715610c6c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610cbe57600080fd5b820183602082011115610cd057600080fd5b803590602001918460018302840111600160201b83111715610cf157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b0316915061467d9050565b610636600480360360c0811015610d5357600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a0820135600160201b811115610d9957600080fd5b820183602082011115610dab57600080fd5b803590602001918460018302840111600160201b83111715610dcc57600080fd5b509092509050614b8b565b61063660048036036040811015610ded57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610e1757600080fd5b820183602082011115610e2957600080fd5b803590602001918460018302840111600160201b83111715610e4a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550615059945050505050565b610271600480360360c0811015610ea157600080fd5b810190602081018135600160201b811115610ebb57600080fd5b820183602082011115610ecd57600080fd5b803590602001918460018302840111600160201b83111715610eee57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610f4057600080fd5b820183602082011115610f5257600080fd5b803590602001918460018302840111600160201b83111715610f7357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610fc557600080fd5b820183602082011115610fd757600080fd5b803590602001918460018302840111600160201b83111715610ff857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b03169050615411565b6102716004803603604081101561106b57600080fd5b508035906020013561577d565b6102716004803603606081101561108e57600080fd5b810190602081018135600160201b8111156110a857600080fd5b8201836020820111156110ba57600080fd5b803590602001918460018302840111600160201b831117156110db57600080fd5b9193509150803590602001356001600160a01b0316615c4c565b610271600480360360e081101561110b57600080fd5b810190602081018135600160201b81111561112557600080fd5b82018360208201111561113757600080fd5b803590602001918460018302840111600160201b8311171561115857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156111aa57600080fd5b8201836020820111156111bc57600080fd5b803590602001918460018302840111600160201b831117156111dd57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561122f57600080fd5b82018360208201111561124157600080fd5b803590602001918460018302840111600160201b8311171561126257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff90811693506020830135169160408101359150606001356001600160a01b0316615fa5565b6112cc61619f565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b83811015611318578181015183820152602001611300565b50505050905090810190601f1680156113455780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015611378578181015183820152602001611360565b50505050905090810190601f1680156113a55780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156113d85781810151838201526020016113c0565b50505050905090810190601f1680156114055780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6106366004803603602081101561142e57600080fd5b50356001600160a01b0316616372565b610271600480360360c081101561145457600080fd5b810190602081018135600160201b81111561146e57600080fd5b82018360208201111561148057600080fd5b803590602001918460018302840111600160201b831117156114a157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156114f357600080fd5b82018360208201111561150557600080fd5b803590602001918460018302840111600160201b8311171561152657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561157857600080fd5b82018360208201111561158a57600080fd5b803590602001918460018302840111600160201b831117156115ab57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b03169050616576565b610271600480360360e081101561161e57600080fd5b810190602081018135600160201b81111561163857600080fd5b82018360208201111561164a57600080fd5b803590602001918460018302840111600160201b8311171561166b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156116bd57600080fd5b8201836020820111156116cf57600080fd5b803590602001918460018302840111600160201b831117156116f057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561174257600080fd5b82018360208201111561175457600080fd5b803590602001918460018302840111600160201b8311171561177557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff833581169450602084013516926001600160a01b036040820135811693506060909101351690506169fb565b610271600480360360c08110156117f157600080fd5b810190602081018135600160201b81111561180b57600080fd5b82018360208201111561181d57600080fd5b803590602001918460018302840111600160201b8311171561183e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561189057600080fd5b8201836020820111156118a257600080fd5b803590602001918460018302840111600160201b831117156118c357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561191557600080fd5b82018360208201111561192757600080fd5b803590602001918460018302840111600160201b8311171561194857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b0316905061713d565b611a13600480360360208110156119bb57600080fd5b810190602081018135600160201b8111156119d557600080fd5b8201836020820111156119e757600080fd5b803590602001918460018302840111600160201b83111715611a0857600080fd5b5090925090506173e7565b604051808060200180602001856001600160a01b03166001600160a01b03168152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015611a72578181015183820152602001611a5a565b50505050905090810190601f168015611a9f5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015611ad2578181015183820152602001611aba565b50505050905090810190601f168015611aff5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61027160048036036080811015611b2757600080fd5b810190602081018135600160201b811115611b4157600080fd5b820183602082011115611b5357600080fd5b803590602001918460018302840111600160201b83111715611b7457600080fd5b919390929091602081019035600160201b811115611b9157600080fd5b820183602082011115611ba357600080fd5b803590602001918460018302840111600160201b83111715611bc457600080fd5b919390929091602081019035600160201b811115611be157600080fd5b820183602082011115611bf357600080fd5b803590602001918460018302840111600160201b83111715611c1457600080fd5b919350915035151561754f565b610271600480360360e0811015611c3757600080fd5b810190602081018135600160201b811115611c5157600080fd5b820183602082011115611c6357600080fd5b803590602001918460018302840111600160201b83111715611c8457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611cd657600080fd5b820183602082011115611ce857600080fd5b803590602001918460018302840111600160201b83111715611d0957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611d5b57600080fd5b820183602082011115611d6d57600080fd5b803590602001918460018302840111600160201b83111715611d8e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff833581169450602084013516926001600160a01b0360408201358116935060609091013516905061763e565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e4257600080fd5b505afa158015611e56573d6000803e3d6000fd5b505050506040513d6020811015611e6c57600080fd5b50516001600160a01b03163314611eb757604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611efb9250849150839050615059565b1515600114611f3e57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b8360011480611f4d5750836002145b80611f585750836003145b1515611f9857604051600160e51b62461bcd0281526004018080602001828103825260258152602001806183e96025913960400191505060405180910390fd5b600054604051600160e11b63425bd4250281526001600160a01b03878116602483015260448201879052606060048301908152606483018a90529216916384b7a84a918a918a918a918a918190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561202657600080fd5b505af115801561203a573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561209557600080fd5b505afa1580156120a9573d6000803e3d6000fd5b505050506040513d60208110156120bf57600080fd5b50516001600160a01b0316331461210a57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061214c9250839150617d129050565b15156001146121935760408051600160e51b62461bcd02815260206004820152601a60248201526000805160206183a9833981519152604482015290519081900360640190fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d79250849150839050615059565b151560011461221a57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b600154604051600160e01b637b713579028152604481018990528715156064820152861515608482015260a06004820190815260a482018d90526001600160a01b0390921691637b713579918e918e918e918e918e918e918e91908190602481019060c4018a8a80828437600083820152601f01601f191690910184810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561235757600080fd5b505afa15801561236b573d6000803e3d6000fd5b505050506040513d602081101561238157600080fd5b50516001600160a01b031633146123cc57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff16156124185760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b6124246006888861831a565b506124316007868661831a565b5061243e6008848461831a565b5050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561249657600080fd5b505afa1580156124aa573d6000803e3d6000fd5b505050506040513d60208110156124c057600080fd5b50516001600160a01b0316331461250b57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8061251581616372565b151560011461255857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b600054604051600160e11b63425bd4250281526001600160a01b03858116602483015260046044830181905260608382019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156125ea57600080fd5b505af11580156125fe573d6000803e3d6000fd5b505060028054604051600160e01b63e98ac22d0281526001600160a01b03888116606483015260066084830181905260a060048401908152815460001960018216156101000201169590950460a4840181905291909316955063e98ac22d945091928a928a928a928692909182916024820191604481019160c490910190869080156126cb5780601f106126a0576101008083540402835291602001916126cb565b820191906000526020600020905b8154815290600101906020018083116126ae57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561272857600080fd5b505af115801561273c573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561279557600080fd5b505afa1580156127a9573d6000803e3d6000fd5b505050506040513d60208110156127bf57600080fd5b50516001600160a01b0316331461280a57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8061281481616372565b151560011461285757604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b6004805460408051600160e01b630cc2749302815260248101879052928301908152604483018790526000926001600160a01b0390921691630cc27493918991899189918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156128dd57600080fd5b505af11580156128f1573d6000803e3d6000fd5b505050506040513d602081101561290757600080fd5b505160028054604051600160e01b63e98ac22d0281526000606482018190526084820185905260a0600483019081526006805460001960018216156101000201169590950460a484018190529596506001600160a01b039093169463e98ac22d94938c938c939289929182916024820191604481019160c4909101908a9080156129d25780601f106129a7576101008083540402835291602001916129d2565b820191906000526020600020905b8154815290600101906020018083116129b557829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a9d57600080fd5b505afa158015612ab1573d6000803e3d6000fd5b505050506040513d6020811015612ac757600080fd5b50516001600160a01b03163314612b1257604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b549250839150617e019050565b1515600114612ba55760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b81612baf81616372565b1515600114612bf257604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b600054604051600160e01b63e3483a9d0281526001600160a01b0388811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d938b938e938e938d938d9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612cb557600080fd5b505af1158015612cc9573d6000803e3d6000fd5b505060028054604051600160e01b63e98ac22d0281526001600160a01b038b8116606483015260046084830181905260a08382019081526006805460001960018216156101000201169690960460a4850181905292909416965063e98ac22d95508e938e938e9382916024810191604482019160c401908a908015612d8f5780601f10612d6457610100808354040283529160200191612d8f565b820191906000526020600020905b815481529060010190602001808311612d7257829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612dec57600080fd5b505af1158015612e00573d6000803e3d6000fd5b505050505050505050505050565b60055460408051600160e21b63395c945702815290516000926001600160a01b03169163e572515c916004808301926020929190829003018186803b158015612e5657600080fd5b505afa158015612e6a573d6000803e3d6000fd5b505050506040513d6020811015612e8057600080fd5b50516001600160a01b03163314612ecb57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff1615612f175760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b600a805460ff1916600117908190556040805160ff9290921615158252517f04f651be6fb8fc575d94591e56e9f6e66e33ef23e949765918b3bdae50c617cf9181900360200190a1600a5460ff1691505b5090565b600a5460009060ff161515612f8357506001613067565b600354604051600160e01b6345a59e5b02815261ffff84166044820152606060048201908152606482018890526001600160a01b03909216916345a59e5b91899189918991899189919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505097505050505050505060206040518083038186803b15801561303857600080fd5b505afa15801561304c573d6000803e3d6000fd5b505050506040513d602081101561306257600080fd5b505190505b95945050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130be57600080fd5b505afa1580156130d2573d6000803e3d6000fd5b505050506040513d60208110156130e857600080fd5b50516001600160a01b0316331461313357604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8061313d81616372565b151560011461318057604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261321a939092909183018282801561320d5780601f106131e25761010080835404028352916020019161320d565b820191906000526020600020905b8154815290600101906020018083116131f057829003601f168201915b5050505050836006617ec6565b156132b257600054604051600160e11b63425bd4250281526001600160a01b0385811660248301526005604483018190526060600484019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561272857600080fd5b5050505050565b600a5460ff165b90565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561331157600080fd5b505afa158015613325573d6000803e3d6000fd5b505050506040513d602081101561333b57600080fd5b50516001600160a01b0316331461338657604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff16156133d25760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261346c939092909183018282801561345f5780601f106134345761010080835404028352916020019161345f565b820191906000526020600020905b81548152906001019060200180831161344257829003601f168201915b5050505050836001617fc0565b600054604051600160e01b63e3483a9d0281526001600160a01b038481166004830190815260026064840181905260806024850190815260068054600019600182161561010002011683900460848701819052949096169563e3483a9d95899591946007949390929091604481019160a490910190879080156135305780601f1061350557610100808354040283529160200191613530565b820191906000526020600020905b81548152906001019060200180831161351357829003601f168201915b50508381038252855460026000196101006001841615020190911604808252602090910190869080156135a45780601f10613579576101008083540402835291602001916135a4565b820191906000526020600020905b81548152906001019060200180831161358757829003601f168201915b50509650505050505050600060405180830381600087803b1580156135c857600080fd5b505af11580156135dc573d6000803e3d6000fd5b505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561363257600080fd5b505afa158015613646573d6000803e3d6000fd5b505050506040513d602081101561365c57600080fd5b50516001600160a01b031633146136a757604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136e99250839150617d129050565b15156001146137305760408051600160e51b62461bcd02815260206004820152601a60248201526000805160206183a9833981519152604482015290519081900360640190fd5b8184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506137749250849150839050615059565b15156001146137b757604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b604080516020808201908152600780546002600019610100600184161502019091160493830184905292909182916060909101908490801561383a5780601f1061380f5761010080835404028352916020019161383a565b820191906000526020600020905b81548152906001019060200180831161381d57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120141580156139a7575060408051602080820190815260088054600260001961010060018416150201909116049383018490529290918291606090910190849080156139355780601f1061390a57610100808354040283529160200191613935565b820191906000526020600020905b81548152906001019060200180831161391857829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b15156139fd5760408051600160e51b62461bcd02815260206004820152601d60248201527f61646d696e20726f6c65732063616e6e6f742062652072656d6f766564000000604482015290519081900360640190fd5b60015460408051600160e11b63531a180902815260048101918252604481018a90526001600160a01b039092169163a6343012918b918b918b918b919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612dec57600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015613af457600080fd5b505afa158015613b08573d6000803e3d6000fd5b505050506040513d6020811015613b1e57600080fd5b50516001600160a01b03163314613b6957604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613bab9250839150617e019050565b1515600114613bfc5760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b818c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613c409250849150839050615059565b1515600114613c8357604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b600460009054906101000a90046001600160a01b03166001600160a01b0316631f9534808f8f8f8f6040518563ffffffff1660e01b81526004018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015613d3657600080fd5b505af1158015613d4a573d6000803e3d6000fd5b5050505060608e8e8e8e60405160200180858580828437600160f91b6017029201918252506001018383808284376040805191909301818103601f19018252909252509550508d1593506122f89250505057600354604051600160e01b634c57331102815261ffff808a1660448301528816606482015260a06004820190815260a482018d90526001600160a01b0390921691634c573311918e918e918e918e918e918e918a919081906024810190608481019060c4018b8b80828437600083820152601f01601f1916909101858103845289815260200190508989808284376000838201819052601f909101601f191690920186810384528751815287516020918201939189019250908190849084905b83811015613e74578181015183820152602001613e5c565b50505050905090810190601f168015613ea15780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b158015613ec857600080fd5b505af1158015613edc573d6000803e3d6000fd5b50505050505050505050505050505050505050565b6000805460408051600160e11b6335ab46bb0281526001600160a01b0386811660048301908152602483019384528651604484015286519190941693636b568d76938893889360649091019060208501908083838c5b83811015613f5f578181015183820152602001613f47565b50505050905090810190601f168015613f8c5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015613faa57600080fd5b505afa158015613fbe573d6000803e3d6000fd5b505050506040513d6020811015613fd457600080fd5b505190505b92915050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561402d57600080fd5b505afa158015614041573d6000803e3d6000fd5b505050506040513d602081101561405757600080fd5b50516001600160a01b031633146140a257604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff16156140ee5760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b600354604051600160e01b634530abe102815261ffff80861660448301528416606482015260a06004820190815260a482018990526001600160a01b0390921691634530abe1918a918a918a918a918a918a916006919081906024810190608481019060c4018b8b80828437600083820152601f01601f191690910185810384528981526020019050898980828437600083820152601f01601f1916909101858103835286546002600019610100600184161502019091160480825260209091019150869080156142005780601f106141d557610100808354040283529160200191614200565b820191906000526020600020905b8154815290600101906020018083116141e357829003601f168201915b50509a5050505050505050505050600060405180830381600087803b15801561202657600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561427657600080fd5b505afa15801561428a573d6000803e3d6000fd5b505050506040513d60208110156142a057600080fd5b50516001600160a01b031633146142eb57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b806142f581616372565b151560011461433857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526143d293909290918301828280156143c55780601f1061439a576101008083540402835291602001916143c5565b820191906000526020600020905b8154815290600101906020018083116143a857829003601f168201915b5050505050836004617ec6565b156132b25760008054604051600160e01b631d09dc930281526020600482019081526024820188905283926001600160a01b031691631d09dc93918a918a91908190604401848480828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561445257600080fd5b505af1158015614466573d6000803e3d6000fd5b505050506040513d604081101561447c57600080fd5b5080516020909101519092509050811561452a5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261452a939092909183018282801561451d5780601f106144f25761010080835404028352916020019161451d565b820191906000526020600020905b81548152906001019060200180831161450057829003601f168201915b5050505050826000617fc0565b6000805460408051600160e01b63c214e5e50281526001600160a01b03898116602483015260048201928352604482018b90529092169163c214e5e5918b918b918b918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156145af57600080fd5b505af11580156145c3573d6000803e3d6000fd5b505050506040513d60208110156145d957600080fd5b50519050801561243e5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261243e93909290918301828280156146705780601f1061464557610100808354040283529160200191614670565b820191906000526020600020905b81548152906001019060200180831161465357829003601f168201915b5050505050876001617fc0565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156146cb57600080fd5b505afa1580156146df573d6000803e3d6000fd5b505050506040513d60208110156146f557600080fd5b50516001600160a01b0316331461474057604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b808361474c8282615059565b151560011461478f57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b8461479981617d12565b15156001146147e05760408051600160e51b62461bcd02815260206004820152601a60248201526000805160206183a9833981519152604482015290519081900360640190fd5b6147ea8787613ef1565b15156001146148435760408051600160e51b62461bcd02815260206004820152601d60248201527f6f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b61484d8587618156565b15156001146148a65760408051600160e51b62461bcd02815260206004820152601460248201527f726f6c6520646f6573206e6f7420657869737473000000000000000000000000604482015290519081900360640190fd5b6001546000906001600160a01b031663be322e5487896148c581618171565b6040518463ffffffff1660e01b815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614919578181015183820152602001614901565b50505050905090810190601f1680156149465780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015614979578181015183820152602001614961565b50505050905090810190601f1680156149a65780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156149d95781810151838201526020016149c1565b50505050905090810190601f168015614a065780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015614a2757600080fd5b505afa158015614a3b573d6000803e3d6000fd5b505050506040513d6020811015614a5157600080fd5b505160008054604051600160e21b63050e95810281526001600160a01b038c81166004830190815285151560648401526080602484019081528d5160848501528d51969750919093169463143a5604948e948e948e948a9492939092604483019260a401916020890191908190849084905b83811015614adb578181015183820152602001614ac3565b50505050905090810190601f168015614b085780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015614b3b578181015183820152602001614b23565b50505050905090810190601f168015614b685780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612dec57600080fd5b600a5460009060ff161515614ba25750600161504e565b60005460408051600160e11b637ea7d02d0281526001600160a01b038b811660048301529151919092169163fd4fa05a916024808301926020929190829003018186803b158015614bf257600080fd5b505afa158015614c06573d6000803e3d6000fd5b505050506040513d6020811015614c1c57600080fd5b50516002141561504a576000805460408051600160e01b636acee5fd0281526001600160a01b038c81166004830152915160609485949390931692636acee5fd9260248082019391829003018186803b158015614c7857600080fd5b505afa158015614c8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015614cb557600080fd5b810190808051600160201b811115614ccc57600080fd5b82016020810184811115614cdf57600080fd5b8151600160201b811182820187101715614cf857600080fd5b50509291906020018051600160201b811115614d1357600080fd5b82016020810184811115614d2657600080fd5b8151600160201b811182820187101715614d3f57600080fd5b5050929190505050915091506060614d5683618171565b60048054604051600160e01b633fd62ae702815260209281018381528751602483015287519495506001600160a01b0390921693633fd62ae793889392839260449091019185019080838360005b83811015614dbc578181015183820152602001614da4565b50505050905090810190601f168015614de95780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015614e0657600080fd5b505afa158015614e1a573d6000803e3d6000fd5b505050506040513d6020811015614e3057600080fd5b50511561504657614e408b616372565b80614e505750614e508b84615059565b15614e61576001935050505061504e565b60016001600160a01b038b161515614e7b57506002614e85565b8515614e85575060035b600154604051600160e11b6368fbbc33028152606481018390526080600482019081528551608483015285516001600160a01b039093169263d1f778669287928992889288929182916024810191604482019160a4019060208a019080838360005b83811015614eff578181015183820152602001614ee7565b50505050905090810190601f168015614f2c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015614f5f578181015183820152602001614f47565b50505050905090810190601f168015614f8c5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015614fbf578181015183820152602001614fa7565b50505050905090810190601f168015614fec5780820380516001836020036101000a031916815260200191505b5097505050505050505060206040518083038186803b15801561500e57600080fd5b505afa158015615022573d6000803e3d6000fd5b505050506040513d602081101561503857600080fd5b5051945061504e9350505050565b5050505b5060005b979650505050505050565b600080546001600160a01b031663e8b42bf4848461507681618171565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156150de5781810151838201526020016150c6565b50505050905090810190601f16801561510b5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561513e578181015183820152602001615126565b50505050905090810190601f16801561516b5780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b15801561518b57600080fd5b505afa15801561519f573d6000803e3d6000fd5b505050506040513d60208110156151b557600080fd5b5051156151c457506001613fd9565b6001546000805460408051600160e01b6381d66b230281526001600160a01b03888116600483015291519482169463be322e549493909216926381d66b2392602480840193829003018186803b15801561521d57600080fd5b505afa158015615231573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561525a57600080fd5b810190808051600160201b81111561527157600080fd5b8201602081018481111561528457600080fd5b8151600160201b81118282018710171561529d57600080fd5b5050929190505050846152af86618171565b6040518463ffffffff1660e01b815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b838110156153035781810151838201526020016152eb565b50505050905090810190601f1680156153305780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b8381101561536357818101518382015260200161534b565b50505050905090810190601f1680156153905780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156153c35781810151838201526020016153ab565b50505050905090810190601f1680156153f05780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015613faa57600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561545f57600080fd5b505afa158015615473573d6000803e3d6000fd5b505050506040513d602081101561548957600080fd5b50516001600160a01b031633146154d457604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b806154de81616372565b151560011461552157604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526155bb93909290918301828280156155ae5780601f10615583576101008083540402835291602001916155ae565b820191906000526020600020905b81548152906001019060200180831161559157829003601f168201915b5050505050836005617ec6565b1561577457600360009054906101000a90046001600160a01b03166001600160a01b03166337d50b27878787878c60056040518763ffffffff1660e01b81526004018080602001806020018761ffff1661ffff1681526020018661ffff1661ffff1681526020018060200185815260200184810384528a818151815260200191508051906020019080838360005b83811015615661578181015183820152602001615649565b50505050905090810190601f16801561568e5780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b838110156156c15781810151838201526020016156a9565b50505050905090810190601f1680156156ee5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015615721578181015183820152602001615709565b50505050905090810190601f16801561574e5780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b15801561202657600080fd5b50505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156157cb57600080fd5b505afa1580156157df573d6000803e3d6000fd5b505050506040513d60208110156157f557600080fd5b50516001600160a01b0316331461584057604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460009060ff161561588c5760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b60048054604051600160e01b639e58eb9f028152602481018690526044810185905260609281019283526006805460026000196001831615610100020190911604606483018190526001600160a01b0390931693639e58eb9f93919288928892918291608490910190869080156159445780601f1061591957610100808354040283529160200191615944565b820191906000526020600020905b81548152906001019060200180831161592757829003601f168201915b5050945050505050600060405180830381600087803b15801561596657600080fd5b505af115801561597a573d6000803e3d6000fd5b505060018054600954604051600160e01b637b71357902815260448101829052606481018490526084810184905260a0600482019081526007805460026000198289161561010002019091160460a484018190526001600160a01b039095169750637b71357996509460069490928392918291602481019160c49091019089908015615a475780601f10615a1c57610100808354040283529160200191615a47565b820191906000526020600020905b815481529060010190602001808311615a2a57829003601f168201915b5050838103825287546002600019610100600184161502019091160480825260209091019088908015615abb5780601f10615a9057610100808354040283529160200191615abb565b820191906000526020600020905b815481529060010190602001808311615a9e57829003601f168201915b5050975050505050505050600060405180830381600087803b158015615ae057600080fd5b505af1158015615af4573d6000803e3d6000fd5b505060005460408051600160e01b63cef7f6af028152600481019182526007805460026000196001831615610100020190911604604483018190526001600160a01b03909416955063cef7f6af94509260089291829160248201916064019086908015615ba25780601f10615b7757610100808354040283529160200191615ba2565b820191906000526020600020905b815481529060010190602001808311615b8557829003601f168201915b5050838103825284546002600019610100600184161502019091160480825260209091019085908015615c165780601f10615beb57610100808354040283529160200191615c16565b820191906000526020600020905b815481529060010190602001808311615bf957829003601f168201915b5050945050505050600060405180830381600087803b158015615c3857600080fd5b505af1158015615774573d6000803e3d6000fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015615c9a57600080fd5b505afa158015615cae573d6000803e3d6000fd5b505050506040513d6020811015615cc457600080fd5b50516001600160a01b03163314615d0f57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b80615d1981616372565b1515600114615d5c57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b8260011480615d6b5750826002145b1515615dc15760408051600160e51b62461bcd02815260206004820152601560248201527f4f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b6000808460011415615dd95750600290506003615dea565b8460021415615dea57506003905060055b615e2b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508592506182ad915050565b1515600114615e845760408051600160e51b62461bcd02815260206004820152601560248201527f6f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152615f1d9390929091830182828015615f115780601f10615ee657610100808354040283529160200191615f11565b820191906000526020600020905b815481529060010190602001808311615ef457829003601f168201915b50505050508584617ec6565b15615774576004805460408051600160e01b6314f775f902815260248101899052928301908152604483018990526001600160a01b03909116916314f775f9918a918a918a918190606401858580828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561202657600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015615ff357600080fd5b505afa158015616007573d6000803e3d6000fd5b505050506040513d602081101561601d57600080fd5b50516001600160a01b0316331461606857604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b6160728188615059565b15156001146160b557604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b81600114806160c45750816002145b806160cf5750816003145b151561610f57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806183e96025913960400191505060405180910390fd5b600354604051600160e01b6337d50b2702815261ffff80871660448301528516606482015260a4810184905260c060048201908152885160c483015288516001600160a01b03909316926337d50b27928a928a928a928a928f928b9282916024820191608481019160e49091019060208c0190808383600083811015615661578181015183820152602001615649565b600a5460068054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260609485948594600094919360079360089360ff9091169286918301828280156162415780601f1061621657610100808354040283529160200191616241565b820191906000526020600020905b81548152906001019060200180831161622457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156162cf5780601f106162a4576101008083540402835291602001916162cf565b820191906000526020600020905b8154815290600101906020018083116162b257829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529598508794509250840190508282801561635d5780601f106163325761010080835404028352916020019161635d565b820191906000526020600020905b81548152906001019060200180831161634057829003601f168201915b50505050509150935093509350935090919293565b604080516020808201908152600780546002600019610100600184161502019091160493830184905260009390928291606090910190849080156163f75780601f106163cc576101008083540402835291602001916163f7565b820191906000526020600020905b8154815290600101906020018083116163da57829003601f168201915b505060408051601f19818403018152828252805160209091012060008054600160e01b6381d66b230285526001600160a01b038a8116600487015293519297509290921694506381d66b239350602480840193829003018186803b15801561645e57600080fd5b505afa158015616472573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561649b57600080fd5b810190808051600160201b8111156164b257600080fd5b820160208101848111156164c557600080fd5b8151600160201b8111828201871017156164de57600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561652657818101518382015260200161650e565b50505050905090810190601f1680156165535780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156165c457600080fd5b505afa1580156165d8573d6000803e3d6000fd5b505050506040513d60208110156165ee57600080fd5b50516001600160a01b0316331461663957604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8061664381616372565b151560011461668657604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b600360009054906101000a90046001600160a01b03166001600160a01b03166337d50b27878787878c60046040518763ffffffff1660e01b81526004018080602001806020018761ffff1661ffff1681526020018661ffff1661ffff1681526020018060200185815260200184810384528a818151815260200191508051906020019080838360005b8381101561672757818101518382015260200161670f565b50505050905090810190601f1680156167545780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b8381101561678757818101518382015260200161676f565b50505050905090810190601f1680156167b45780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156167e75781810151838201526020016167cf565b50505050905090810190601f1680156168145780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b15801561683a57600080fd5b505af115801561684e573d6000803e3d6000fd5b505060028054604051600160e01b63e98ac22d02815260006064820181905260056084830181905260a0600484019081526006805460001960018216156101000201169690960460a485018190526001600160a01b03909516975063e98ac22d96508e948e9482916024820191604481019160c4909101908a9080156169155780601f106168ea57610100808354040283529160200191616915565b820191906000526020600020905b8154815290600101906020018083116168f857829003601f168201915b505084810383528851815288516020918201918a019080838360005b83811015616949578181015183820152602001616931565b50505050905090810190601f1680156169765780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b838110156169a9578181015183820152602001616991565b50505050905090810190601f1680156169d65780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561202657600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a4957600080fd5b505afa158015616a5d573d6000803e3d6000fd5b505050506040513d6020811015616a7357600080fd5b50516001600160a01b03163314616abe57604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b600a5460ff161515600114616b0b5760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b616b1481616372565b1515600114616b5757604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b60028054604051600160e01b63e98ac22d0281526001600160a01b03858116606483015260016084830181905260a06004840190815260068054600019818516156101000201169690960460a48501819052929094169463e98ac22d9490938d938d938a939092909182916024810191604482019160c401908a908015616c1f5780601f10616bf457610100808354040283529160200191616c1f565b820191906000526020600020905b815481529060010190602001808311616c0257829003601f168201915b505084810383528851815288516020918201918a019080838360005b83811015616c53578181015183820152602001616c3b565b50505050905090810190601f168015616c805780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b83811015616cb3578181015183820152602001616c9b565b50505050905090810190601f168015616ce05780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015616d0557600080fd5b505af1158015616d19573d6000803e3d6000fd5b505060048054604051600160e01b63f9953de502815260209281018381528c5160248301528c516001600160a01b03909316955063f9953de594508c93909283926044019185019080838360005b83811015616d7f578181015183820152602001616d67565b50505050905090810190601f168015616dac5780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b158015616dcb57600080fd5b505af1158015616ddf573d6000803e3d6000fd5b5050600354604051600160e01b63549583df02815261ffff80891660448301528716606482015260a0600482019081528a5160a48301528a516001600160a01b03909316945063549583df93508a928a928a928a928f9282916024820191608481019160c49091019060208b019080838360005b83811015616e6b578181015183820152602001616e53565b50505050905090810190601f168015616e985780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015616ecb578181015183820152602001616eb3565b50505050905090810190601f168015616ef85780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015616f2b578181015183820152602001616f13565b50505050905090810190601f168015616f585780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015616f7d57600080fd5b505af1158015616f91573d6000803e3d6000fd5b50505050616f9f8288613ef1565b1515600114616ff85760408051600160e51b62461bcd02815260206004820152601d60248201527f4f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b60008054604051600160e01b63e3483a9d0281526001600160a01b03858116600483019081526001606484018190526080602485019081528d5160848601528d51939095169563e3483a9d9589958f9560089593604483019260a4019160208901918190849084905b83811015617079578181015183820152602001617061565b50505050905090810190601f1680156170a65780820380516001836020036101000a031916815260200191505b508381038252855460026000196101006001841615020190911604808252602090910190869080156171195780601f106170ee57610100808354040283529160200191617119565b820191906000526020600020905b8154815290600101906020018083116170fc57829003601f168201915b50509650505050505050600060405180830381600087803b15801561202657600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561718b57600080fd5b505afa15801561719f573d6000803e3d6000fd5b505050506040513d60208110156171b557600080fd5b50516001600160a01b0316331461720057604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b8561720a81617d12565b15156001146172515760408051600160e51b62461bcd02815260206004820152601a60248201526000805160206183a9833981519152604482015290519081900360640190fd5b61725b8288615059565b151560011461729e57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061845c6022913960400191505060405180910390fd5b600354604051600160e01b634c57331102815261ffff80871660448301528516606482015260a060048201908152885160a483015288516001600160a01b0390931692634c573311928a928a928a928a928f92909182916024820191608481019160c49091019060208b019080838360005b83811015617328578181015183820152602001617310565b50505050905090810190601f1680156173555780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015617388578181015183820152602001617370565b50505050905090810190601f1680156173b55780820380516001836020036101000a031916815260200191505b5084810382528551815285516020918201918701908083836000838110156169a9578181015183820152602001616991565b600254604051600160e21b62539ab302815260206004820190815260248201849052606092839260009283926001600160a01b03169163014e6acc9189918991908190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561746757600080fd5b505afa15801561747b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156174a457600080fd5b810190808051600160201b8111156174bb57600080fd5b820160208101848111156174ce57600080fd5b8151600160201b8111828201871017156174e757600080fd5b50509291906020018051600160201b81111561750257600080fd5b8201602081018481111561751557600080fd5b8151600160201b81118282018710171561752e57600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b6005546001600160a01b031633146175b15760408051600160e51b62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600a5460009060ff16156175fd5760408051600160e51b62461bcd02815260206004820152601d60248201526000805160206183c9833981519152604482015290519081900360640190fd5b6176096006898961831a565b506176166007878761831a565b506176236008858561831a565b5050600a805460ff1916911515919091179055505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561768c57600080fd5b505afa1580156176a0573d6000803e3d6000fd5b505050506040513d60208110156176b657600080fd5b50516001600160a01b0316331461770157604051600160e51b62461bcd02815260040180806020018281038252602881526020018061840e6028913960400191505060405180910390fd5b61770a81616372565b151560011461774d57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806184366026913960400191505060405180910390fd5b6177588760016182ad565b15156001146177b15760408051600160e51b62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261784b939092909183018282801561783e5780601f106178135761010080835404028352916020019161783e565b820191906000526020600020905b81548152906001019060200180831161782157829003601f168201915b5050505050826001617ec6565b156157745760048054604051600160e11b637181418b02815260209281018381528a5160248301528a516001600160a01b039093169363e3028316938c9383926044909101919085019080838360005b838110156178b357818101518382015260200161789b565b50505050905090810190601f1680156178e05780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b1580156178ff57600080fd5b505af1158015617913573d6000803e3d6000fd5b505060018054600954604051600160e01b637b71357902815260448101829052606481018490526084810184905260a0600482019081526008805460026000198289161561010002019091160460a484018190526001600160a01b039095169750637b7135799650948e9490928392918291602481019160c490910190899080156179df5780601f106179b4576101008083540402835291602001916179df565b820191906000526020600020905b8154815290600101906020018083116179c257829003601f168201915b5050838103825287518152875160209182019189019080838360005b83811015617a135781810151838201526020016179fb565b50505050905090810190601f168015617a405780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015617a6457600080fd5b505af1158015617a78573d6000803e3d6000fd5b5050600354604051600160e21b633e0b822b02815261ffff80891660448301528716606482015260a0600482019081528a5160a48301528a516001600160a01b03909316945063f82e08ac93508a928a928a928a928f9282916024820191608481019160c49091019060208b019080838360005b83811015617b04578181015183820152602001617aec565b50505050905090810190601f168015617b315780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015617b64578181015183820152602001617b4c565b50505050905090810190601f168015617b915780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015617bc4578181015183820152602001617bac565b50505050905090810190601f168015617bf15780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015617c1657600080fd5b505af1158015617c2a573d6000803e3d6000fd5b50506000805460408051600160e01b63c214e5e50281526001600160a01b038881166024830152600482019283528d5160448301528d519316955063c214e5e594508c9388938392606401916020870191908190849084905b83811015617c9b578181015183820152602001617c83565b50505050905090810190601f168015617cc85780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b158015617ce857600080fd5b505af1158015617cfc573d6000803e3d6000fd5b505050506040513d602081101561273c57600080fd5b6004805460408051600160e01b638c8642df0281526002602482018190529381019182528451604482015284516000946001600160a01b0390941693638c8642df93879391929091829160649091019060208601908083838c5b83811015617d84578181015183820152602001617d6c565b50505050905090810190601f168015617db15780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015617dcf57600080fd5b505afa158015617de3573d6000803e3d6000fd5b505050506040513d6020811015617df957600080fd5b505192915050565b600480546040517fffe40d1d00000000000000000000000000000000000000000000000000000000815260209281018381528451602483015284516000946001600160a01b039094169363ffe40d1d9387939283926044909201918501908083838b5b83811015617e7c578181015183820152602001617e64565b50505050905090810190601f168015617ea95780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015617dcf57600080fd5b600254604051600160e21b632c084e190281526001600160a01b03848116602483015260448201849052606060048301908152865160648401528651600094929092169263b02138649288928892889282916084019060208701908083838d5b83811015617f3e578181015183820152602001617f26565b50505050905090810190601f168015617f6b5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015617f8c57600080fd5b505af1158015617fa0573d6000803e3d6000fd5b505050506040513d6020811015617fb657600080fd5b5051949350505050565b801561809a5760025460408051600160e01b635607395b0281526001600160a01b03858116602483015260048201928352865160448301528651931692635607395b9287928792829160640190602086019080838360005b83811015618030578181015183820152602001618018565b50505050905090810190601f16801561805d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561807d57600080fd5b505af1158015618091573d6000803e3d6000fd5b50505050618151565b60025460408051600160e11b632ce5eb7f0281526001600160a01b038581166024830152600482019283528651604483015286519316926359cbd6fe9287928792829160640190602086019080838360005b838110156181045781810151838201526020016180ec565b50505050905090810190601f1680156181315780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015615c3857600080fd5b505050565b6001546000906001600160a01b031663abf5739f84846152af815b60048054604051600160e11b630bbe46c502815260209281018381528451602483015284516060946001600160a01b039094169363177c8d8a93879392839260449092019185019080838360005b838110156181d75781810151838201526020016181bf565b50505050905090810190601f1680156182045780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561822157600080fd5b505afa158015618235573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561825e57600080fd5b810190808051600160201b81111561827557600080fd5b8201602081018481111561828857600080fd5b8151600160201b8111828201871017156182a157600080fd5b50909695505050505050565b6004805460408051600160e01b638c8642df028152602481018590529283019081528451604484015284516000936001600160a01b0390931692638c8642df9287928792829160649091019060208601908083838c83811015613f5f578181015183820152602001613f47565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061835b5782800160ff19823516178555618388565b82800160010185558215618388579182015b8281111561838857823582559160200191906001019061836d565b50612f68926132c09250905b80821115612f68576000815560010161839456fe6f7267206e6f7420696e20617070726f76656420737461747573000000000000496e636f7272656374206e6574776f726b20626f6f7420737461747573000000696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a72305820076e128f2df9e9b08b731798802e430db87855f1ea7dd2b592784c23ef6897aa0029 \ No newline at end of file +60806040526003600a555f600b5f6101000a81548160ff0219169083151502179055503480156200002e575f80fd5b5061968b806200003d5f395ff3fe608060405234801561000f575f80fd5b5060043610610225575f3560e01c80636b568d761161012e578063b5546564116100b6578063e91b0e191161007a578063e91b0e1914610618578063ecad01d514610634578063f346a3a714610650578063f5ad584a14610683578063f75f0a061461069f57610225565b8063b554656414610573578063b9b7fe6c1461058f578063cc9ba6fa146105ab578063d1aa0c20146105cc578063d621d957146105fc57610225565b8063936421d5116100fd578063936421d5146104bf5780639bd38101146104ef5780639fc666b21461051f578063a042bf401461053b578063a5843f081461055757610225565b80636b568d761461043b5780638683c7fe1461046b57806388843041146104875780638baa8191146104a357610225565b8063404bf3eb116101b15780634cbfa82e116101805780634cbfa82e146103ad5780634fe57e7a146103cb5780635ca5adbe146103e757806368a612731461040357806368f808e51461041f57610225565b8063404bf3eb1461032757806344478e791461034357806345a59e5b146103615780634b20f45f1461039157610225565b80631b610220116101f85780631b6102201461029b5780631c249912146102b7578063349582a0146102d357806335876476146102ef5780633cf5f33b1461030b57610225565b806304e81f1e146102295780630dca12f614610245578063177d624f146102635780631b04c2761461027f575b5f80fd5b610243600480360381019061023e91906166b0565b6106bb565b005b61024d610938565b60405161025a9190616743565b60405180910390f35b61027d6004803603810190610278919061675c565b6109cc565b005b610299600480360381019061029491906167cf565b610ba3565b005b6102b560048036038101906102b09190616899565b610e5f565b005b6102d160048036038101906102cc9190616949565b610fee565b005b6102ed60048036038101906102e8919061675c565b61125d565b005b610309600480360381019061030491906169ba565b611434565b005b61032560048036038101906103209190616a57565b611a73565b005b610341600480360381019061033c9190616ac8565b611cf7565b005b61034b611ff9565b6040516103589190616b7a565b60405180910390f35b61037b60048036038101906103769190616bca565b6121be565b6040516103889190616b7a565b60405180910390f35b6103ab60048036038101906103a69190616949565b612288565b005b6103b5612500565b6040516103c29190616b7a565b60405180910390f35b6103e560048036038101906103e09190616c5b565b612515565b005b61040160048036038101906103fc9190616c86565b61278b565b005b61041d60048036038101906104189190616d17565b612b2b565b005b61043960048036038101906104349190616e34565b612ead565b005b61045560048036038101906104509190616faa565b613084565b6040516104629190616b7a565b60405180910390f35b61048560048036038101906104809190617004565b613127565b005b6104a1600480360381019061049c9190616949565b613314565b005b6104bd60048036038101906104b891906170a7565b613777565b005b6104d960048036038101906104d49190617198565b613aea565b6040516104e69190616b7a565b60405180910390f35b61050960048036038101906105049190616faa565b613f76565b6040516105169190616b7a565b60405180910390f35b61053960048036038101906105349190617242565b614170565b005b6105556004803603810190610550919061726d565b61434b565b005b610571600480360381019061056c919061734a565b6145cb565b005b61058d60048036038101906105889190616a57565b6148c9565b005b6105a960048036038101906105a49190617388565b614c4b565b005b6105b3614e89565b6040516105c394939291906174f3565b60405180910390f35b6105e660048036038101906105e19190616c5b565b615050565b6040516105f39190616b7a565b60405180910390f35b6106166004803603810190610611919061726d565b615141565b005b610632600480360381019061062d919061754b565b6153b8565b005b61064e6004803603810190610649919061726d565b6157e4565b005b61066a6004803603810190610665919061763c565b615a10565b60405161067a9493929190617696565b60405180910390f35b61069d600480360381019061069891906176e7565b615ac4565b005b6106b960048036038101906106b4919061754b565b615c01565b005b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610725573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad9061785a565b60405180910390fd5b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050600115156108098383613f76565b15151461084b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610842906178e8565b60405180910390fd5b600184148061085a5750600284145b806108655750600384145b6108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90617976565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a888888886040518563ffffffff1660e01b815260040161090294939291906179c0565b5f604051808303815f87803b158015610919575f80fd5b505af115801561092b573d5f803e3d5ffd5b5050505050505050505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca12f66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c79190617a12565b905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5a91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe9061785a565b60405180910390fd5b8060011515610ad582615050565b151514610b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0e90617aad565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c7f3315846040518263ffffffff1660e01b8152600401610b719190617acb565b5f604051808303815f87803b158015610b88575f80fd5b505af1158015610b9a573d5f803e3d5ffd5b50505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3191906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c959061785a565b60405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050610ceb81616083565b610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2190617b2e565b60405180910390fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505060011515610d7d8383613f76565b151514610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db6906178e8565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b7135798c8c8c8c8c8c8c6040518863ffffffff1660e01b8152600401610e259796959493929190617b4c565b5f604051808303815f87803b158015610e3c575f80fd5b505af1158015610e4e573d5f803e3d5ffd5b505050505050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eed91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f519061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff16151514610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690617bf9565b60405180910390fd5b868660079182610fc0929190617e1b565b50848460089182610fd2929190617e1b565b50828260099182610fe4929190617e1b565b5050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611058573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107c91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e09061785a565b60405180910390fd5b80600115156110f782615050565b151514611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113090617aad565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a86868660046040518563ffffffff1660e01b81526004016111989493929190617f21565b5f604051808303815f87803b1580156111af575f80fd5b505af11580156111c1573d5f803e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600787878760066040518663ffffffff1660e01b815260040161122995949392919061803c565b5f604051808303815f87803b158015611240575f80fd5b505af1158015611252573d5f803e3d5ffd5b505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112eb91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134f9061785a565b60405180910390fd5b806001151561136682615050565b1515146113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90617aad565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f80f5dd5846040518263ffffffff1660e01b81526004016114029190617acb565b5f604051808303815f87803b158015611419575f80fd5b505af115801561142b573d5f803e3d5ffd5b50505050505050565b5f61143d616127565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156114855750825b90505f60018367ffffffffffffffff161480156114b857505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156114c6575080155b156114fd576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561154a576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16036115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af90618112565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1603611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906181a0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1603611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061822e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603611702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f9906182bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603611770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117679061834a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d5906183d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390618466565b60405180910390fd5b8b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508960015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550885f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508760025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315611a65575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611a5c91906184d0565b60405180910390a15b505050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611add573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0191906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b659061785a565b60405180910390fd5b8060011515611b7c82615050565b151514611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590617aad565b60405180910390fd5b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc274938787876040518463ffffffff1660e01b8152600401611c1d939291906184e9565b6020604051808303815f875af1158015611c39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5d9190617a12565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600788885f866040518663ffffffff1660e01b8152600401611cc2959493929190618519565b5f604051808303815f87803b158015611cd9575f80fd5b505af1158015611ceb573d5f803e3d5ffd5b50505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8591906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de99061785a565b60405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611e3f8161614e565b611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e75906185c9565b60405180910390fd5b8160011515611e8c82615050565b151514611ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec590617aad565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d878a8a898960016040518763ffffffff1660e01b8152600401611f3196959493929190618617565b5f604051808303815f87803b158015611f48575f80fd5b505af1158015611f5a573d5f803e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d60078a8a8a60046040518663ffffffff1660e01b8152600401611fc295949392919061866c565b5f604051808303815f87803b158015611fd9575f80fd5b505af1158015611feb573d5f803e3d5ffd5b505050505050505050505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612064573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061208891906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec9061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff1615151461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190617bf9565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055507f04f651be6fb8fc575d94591e56e9f6e66e33ef23e949765918b3bdae50c617cf600b5f9054906101000a900460ff166040516121a19190616b7a565b60405180910390a1600b5f9054906101000a900460ff1691505090565b5f600b5f9054906101000a900460ff166121db576001905061227f565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166345a59e5b87878787876040518663ffffffff1660e01b815260040161223d9594939291906186e1565b602060405180830381865afa158015612258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061227c919061873c565b90505b95945050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231691906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237a9061785a565b60405180910390fd5b806001151561239182615050565b1515146123d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ca90617aad565b60405180910390fd5b612467600780546123e390617c4e565b80601f016020809104026020016040519081016040528092919081815260200182805461240f90617c4e565b801561245a5780601f106124315761010080835404028352916020019161245a565b820191905f5260205f20905b81548152906001019060200180831161243d57829003601f168201915b50505050508360066161ef565b156124f9575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a86868660056040518563ffffffff1660e01b81526004016124cb94939291906187a0565b5f604051808303815f87803b1580156124e2575f80fd5b505af11580156124f4573d5f803e3d5ffd5b505050505b5050505050565b5f600b5f9054906101000a900460ff16905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a391906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126079061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff16151514612665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265c90617bf9565b60405180910390fd5b6126f96007805461267590617c4e565b80601f01602080910402602001604051908101604052809291908181526020018280546126a190617c4e565b80156126ec5780601f106126c3576101008083540402835291602001916126ec565b820191905f5260205f20905b8154815290600101906020018083116126cf57829003601f168201915b5050505050836001616297565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d836007600860026040518563ffffffff1660e01b815260040161275a9493929190618817565b5f604051808303815f87803b158015612771575f80fd5b505af1158015612783573d5f803e3d5ffd5b505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061281991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287d9061785a565b60405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506128d381616083565b612912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290990617b2e565b60405180910390fd5b8184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050600115156129658383613f76565b1515146129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906178e8565b60405180910390fd5b60086040516020016129b99190618868565b6040516020818303038152906040528051906020012088886040516020016129e2929190618888565b6040516020818303038152906040528051906020012014158015612a5557506009604051602001612a139190618868565b604051602081830303815290604052805190602001208888604051602001612a3c929190618888565b6040516020818303038152906040528051906020012014155b612a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8b906188f4565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6343012898989896040518563ffffffff1660e01b8152600401612af49493929190618912565b5f604051808303815f87803b158015612b0b575f80fd5b505af1158015612b1d573d5f803e3d5ffd5b505050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bb991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1d9061785a565b60405180910390fd5b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612c738161614e565b612cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca9906185c9565b60405180910390fd5b818c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505060011515612d058383613f76565b151514612d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3e906178e8565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f9534808f8f8f8f6040518563ffffffff1660e01b8152600401612da79493929190618912565b5f604051808303815f87803b158015612dbe575f80fd5b505af1158015612dd0573d5f803e3d5ffd5b505050505f8e8e8e8e604051602001612dec94939291906189c3565b60405160208183030381529060405290505f8b8b90501115612e9c5760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c5733118c8c8c8c8c8c886040518863ffffffff1660e01b8152600401612e6e97969594939291906189f5565b5f604051808303815f87803b158015612e85575f80fd5b505af1158015612e97573d5f803e3d5ffd5b505050505b505050505050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f3b91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9f9061785a565b60405180910390fd5b8060011515612fb682615050565b151514612ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fef90617aad565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633965c04a846040518263ffffffff1660e01b81526004016130529190616743565b5f604051808303815f87803b158015613069575f80fd5b505af115801561307b573d5f803e3d5ffd5b50505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b568d7684846040518363ffffffff1660e01b81526004016130e0929190618a5f565b602060405180830381865afa1580156130fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061311f919061873c565b905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613191573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b591906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132199061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff16151514613277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326e90617bf9565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634530abe188888888888860076040518863ffffffff1660e01b81526004016132de9796959493929190618a8d565b5f604051808303815f87803b1580156132f5575f80fd5b505af1158015613307573d5f803e3d5ffd5b5050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561337e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133a291906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461340f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134069061785a565b60405180910390fd5b806001151561341d82615050565b15151461345f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345690617aad565b60405180910390fd5b6134f36007805461346f90617c4e565b80601f016020809104026020016040519081016040528092919081815260200182805461349b90617c4e565b80156134e65780601f106134bd576101008083540402835291602001916134e6565b820191905f5260205f20905b8154815290600101906020018083116134c957829003601f168201915b50505050508360046161ef565b15613770575f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d09dc9388886040518363ffffffff1660e01b8152600401613554929190618888565b60408051808303815f875af115801561356f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135939190618af7565b91509150811561363157613630600780546135ad90617c4e565b80601f01602080910402602001604051908101604052809291908181526020018280546135d990617c4e565b80156136245780601f106135fb57610100808354040283529160200191613624565b820191905f5260205f20905b81548152906001019060200180831161360757829003601f168201915b5050505050825f616297565b5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c214e5e58989896040518463ffffffff1660e01b815260040161368f93929190618b35565b6020604051808303815f875af11580156136ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136cf919061873c565b9050801561376c5761376b600780546136e790617c4e565b80601f016020809104026020016040519081016040528092919081815260200182805461371390617c4e565b801561375e5780601f106137355761010080835404028352916020019161375e565b820191905f5260205f20905b81548152906001019060200180831161374157829003601f168201915b5050505050876001616297565b5b5050505b5050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061380591906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138699061785a565b60405180910390fd5b8083600115156138828383613f76565b1515146138c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bb906178e8565b60405180910390fd5b846138ce81616083565b61390d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390490617b2e565b60405180910390fd5b6001151561391b8888613084565b15151461395d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395490618baf565b60405180910390fd5b6001151561396b86886163ba565b1515146139ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a490618c17565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be322e5487896139f68b616468565b6040518463ffffffff1660e01b8152600401613a1493929190618c35565b602060405180830381865afa158015613a2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a53919061873c565b90505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663143a5604898989856040518563ffffffff1660e01b8152600401613ab39493929190618c7f565b5f604051808303815f87803b158015613aca575f80fd5b505af1158015613adc573d5f803e3d5ffd5b505050505050505050505050565b5f600b5f9054906101000a900460ff16613b075760019050613f6b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd4fa05a8a6040518263ffffffff1660e01b8152600401613b619190617acb565b602060405180830381865afa158015613b7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ba09190617a12565b90506002811480613bb057505f81145b15613f66575f600190505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603613bf65760029050613c07565b5f858590501115613c0657600390505b5b5f8203613d3f5760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e4604b6160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca12f66040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cd99190617a12565b836040518363ffffffff1660e01b8152600401613cf7929190618cd0565b602060405180830381865afa158015613d12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d36919061873c565b92505050613f6b565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636acee5fd8d6040518263ffffffff1660e01b8152600401613d999190617acb565b5f60405180830381865afa158015613db3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190613ddb9190618d65565b915091505f613de983616468565b905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fd62ae7846040518263ffffffff1660e01b8152600401613e459190618ddb565b602060405180830381865afa158015613e60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e84919061873c565b15613f6157613e928d615050565b80613ea35750613ea28d84613f76565b5b15613eb657600195505050505050613f6b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1f77866838584886040518563ffffffff1660e01b8152600401613f169493929190618dfb565b602060405180830381865afa158015613f31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f55919061873c565b95505050505050613f6b565b505050505b5f9150505b979650505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8b42bf48484613fbe86616468565b6040518463ffffffff1660e01b8152600401613fdc93929190618e53565b602060405180830381865afa158015613ff7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061401b919061873c565b15614029576001905061416a565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be322e545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381d66b23866040518263ffffffff1660e01b81526004016140be9190617acb565b5f60405180830381865afa1580156140d8573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906141009190618e96565b8461410a86616468565b6040518463ffffffff1660e01b815260040161412893929190618c35565b602060405180830381865afa158015614143573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614167919061873c565b90505b92915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141fe91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461426b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142629061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff161515146142c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142b790617bf9565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fc666b2836040518263ffffffff1660e01b815260040161431a9190616b7a565b5f604051808303815f87803b158015614331575f80fd5b505af1158015614343573d5f803e3d5ffd5b505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143d991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161443d9061785a565b60405180910390fd5b806001151561445482615050565b151514614496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161448d90617aad565b60405180910390fd5b61452a600780546144a690617c4e565b80601f01602080910402602001604051908101604052809291908181526020018280546144d290617c4e565b801561451d5780601f106144f45761010080835404028352916020019161451d565b820191905f5260205f20905b81548152906001019060200180831161450057829003601f168201915b50505050508360056161ef565b156145c25760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337d50b27878787878c60056040518763ffffffff1660e01b815260040161459496959493929190618edd565b5f604051808303815f87803b1580156145ab575f80fd5b505af11580156145bd573d5f803e3d5ffd5b505050505b50505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614635573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061465991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146146c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146bd9061785a565b60405180910390fd5b5f801515600b5f9054906101000a900460ff1615151461471b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161471290617bf9565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e58eb9f600785856040518463ffffffff1660e01b815260040161477a93929190618f51565b5f604051808303815f87803b158015614791575f80fd5b505af11580156147a3573d5f803e3d5ffd5b5050505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b71357960086007600a546001806040518663ffffffff1660e01b815260040161480e959493929190618f8d565b5f604051808303815f87803b158015614825575f80fd5b505af1158015614837573d5f803e3d5ffd5b505050505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cef7f6af600860096040518363ffffffff1660e01b8152600401614897929190618fec565b5f604051808303815f87803b1580156148ae575f80fd5b505af11580156148c0573d5f803e3d5ffd5b50505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614933573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061495791906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146149c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016149bb9061785a565b60405180910390fd5b80600115156149d282615050565b151514614a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614a0b90617aad565b60405180910390fd5b6001831480614a235750600283145b614a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614a599061906b565b60405180910390fd5b5f8060018503614a79576002915060039050614a8b565b60028503614a8a5760039150600590505b5b60011515614adc88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508361650d565b151514614b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b15906190d3565b60405180910390fd5b614bb160078054614b2e90617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054614b5a90617c4e565b8015614ba55780601f10614b7c57610100808354040283529160200191614ba5565b820191905f5260205f20905b815481529060010190602001808311614b8857829003601f168201915b505050505085846161ef565b15614c425760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314f775f98888886040518463ffffffff1660e01b8152600401614c14939291906184e9565b5f604051808303815f87803b158015614c2b575f80fd5b505af1158015614c3d573d5f803e3d5ffd5b505050505b50505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614cb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614cd991906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614d3d9061785a565b60405180910390fd5b60011515614d548289613f76565b151514614d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614d8d906178e8565b60405180910390fd5b6001821480614da55750600282145b80614db05750600382145b614def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614de690617976565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337d50b27878787878c886040518763ffffffff1660e01b8152600401614e53969594939291906190f1565b5f604051808303815f87803b158015614e6a575f80fd5b505af1158015614e7c573d5f803e3d5ffd5b5050505050505050505050565b60608060605f600760086009600b5f9054906101000a900460ff16838054614eb090617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054614edc90617c4e565b8015614f275780601f10614efe57610100808354040283529160200191614f27565b820191905f5260205f20905b815481529060010190602001808311614f0a57829003601f168201915b50505050509350828054614f3a90617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054614f6690617c4e565b8015614fb15780601f10614f8857610100808354040283529160200191614fb1565b820191905f5260205f20905b815481529060010190602001808311614f9457829003601f168201915b50505050509250818054614fc490617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054614ff090617c4e565b801561503b5780601f106150125761010080835404028352916020019161503b565b820191905f5260205f20905b81548152906001019060200180831161501e57829003601f168201915b50505050509150935093509350935090919293565b5f60086040516020016150639190618868565b604051602081830303815290604052805190602001205f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381d66b23846040518263ffffffff1660e01b81526004016150d19190617acb565b5f60405180830381865afa1580156150eb573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906151139190618e96565b6040516020016151239190618ddb565b60405160208183030381529060405280519060200120149050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156151ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906151cf91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461523c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016152339061785a565b60405180910390fd5b806001151561524a82615050565b15151461528c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161528390617aad565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337d50b27878787878c60046040518763ffffffff1660e01b81526004016152f196959493929190619165565b5f604051808303815f87803b158015615308575f80fd5b505af115801561531a573d5f803e3d5ffd5b5050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600789895f60056040518663ffffffff1660e01b81526004016153829594939291906191d9565b5f604051808303815f87803b158015615399575f80fd5b505af11580156153ab573d5f803e3d5ffd5b5050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015615422573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061544691906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146154b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016154aa9061785a565b60405180910390fd5b60011515600b5f9054906101000a900460ff16151514615508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016154ff90617bf9565b60405180910390fd5b6001151561551582615050565b151514615557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161554e90617aad565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600789898660016040518663ffffffff1660e01b81526004016155bb95949392919061923f565b5f604051808303815f87803b1580156155d2575f80fd5b505af11580156155e4573d5f803e3d5ffd5b5050505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f9953de5886040518263ffffffff1660e01b81526004016156429190618ddb565b5f604051808303815f87803b158015615659575f80fd5b505af115801561566b573d5f803e3d5ffd5b5050505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663549583df878787878c6040518663ffffffff1660e01b81526004016156d19594939291906192a5565b5f604051808303815f87803b1580156156e8575f80fd5b505af11580156156fa573d5f803e3d5ffd5b505050506001151561570c8389613084565b15151461574e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161574590619355565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d8389600960016040518563ffffffff1660e01b81526004016157ae9493929190619373565b5f604051808303815f87803b1580156157c5575f80fd5b505af11580156157d7573d5f803e3d5ffd5b5050505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561584e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061587291906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146158df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016158d69061785a565b60405180910390fd5b856158e981616083565b615928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161591f90617b2e565b60405180910390fd5b600115156159368389613f76565b151514615978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161596f906178e8565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c573311878787878c6040518663ffffffff1660e01b81526004016159da9594939291906192a5565b5f604051808303815f87803b1580156159f1575f80fd5b505af1158015615a03573d5f803e3d5ffd5b5050505050505050505050565b6060805f8060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663014e6acc87876040518363ffffffff1660e01b8152600401615a71929190618888565b5f60405180830381865afa158015615a8b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190615ab391906193c4565b935093509350935092959194509250565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614615b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615b4a906194aa565b60405180910390fd5b5f801515600b5f9054906101000a900460ff16151514615ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615b9f90617bf9565b60405180910390fd5b878760079182615bb9929190617e1b565b50858560089182615bcb929190617e1b565b50838360099182615bdd929190617e1b565b5081600b5f6101000a81548160ff0219169083151502179055505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015615c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190615c8f91906177bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614615cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615cf39061785a565b60405180910390fd5b60011515615d0982615050565b151514615d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615d4290617aad565b60405180910390fd5b60011515615d5a88600161650d565b151514615d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615d9390619512565b60405180910390fd5b615e3060078054615dac90617c4e565b80601f0160208091040260200160405190810160405280929190818152602001828054615dd890617c4e565b8015615e235780601f10615dfa57610100808354040283529160200191615e23565b820191905f5260205f20905b815481529060010190602001808311615e0657829003601f168201915b50505050508260016161ef565b1561607a5760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3028316886040518263ffffffff1660e01b8152600401615e8f9190618ddb565b5f604051808303815f87803b158015615ea6575f80fd5b505af1158015615eb8573d5f803e3d5ffd5b5050505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b713579600989600a546001806040518663ffffffff1660e01b8152600401615f22959493929190619530565b5f604051808303815f87803b158015615f39575f80fd5b505af1158015615f4b573d5f803e3d5ffd5b5050505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f82e08ac878787878c6040518663ffffffff1660e01b8152600401615fb19594939291906192a5565b5f604051808303815f87803b158015615fc8575f80fd5b505af1158015615fda573d5f803e3d5ffd5b505050505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c214e5e588846040518363ffffffff1660e01b815260040161603892919061958f565b6020604051808303815f875af1158015616054573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190616078919061873c565b505b50505050505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c8642df8360026040518363ffffffff1660e01b81526004016160e19291906195bd565b602060405180830381865afa1580156160fc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190616120919061873c565b9050919050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffe40d1d836040518263ffffffff1660e01b81526004016161a99190618ddb565b602060405180830381865afa1580156161c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906161e8919061873c565b9050919050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02138648585856040518463ffffffff1660e01b815260040161624e939291906195eb565b6020604051808303815f875af115801561626a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061628e919061873c565b90509392505050565b801561632b5760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635607395b84846040518363ffffffff1660e01b81526004016162f992919061958f565b5f604051808303815f87803b158015616310575f80fd5b505af1158015616322573d5f803e3d5ffd5b505050506163b5565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359cbd6fe84846040518363ffffffff1660e01b815260040161638792919061958f565b5f604051808303815f87803b15801561639e575f80fd5b505af11580156163b0573d5f803e3d5ffd5b505050505b505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abf5739f848461640386616468565b6040518463ffffffff1660e01b815260040161642193929190618c35565b602060405180830381865afa15801561643c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190616460919061873c565b905092915050565b606060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663177c8d8a836040518263ffffffff1660e01b81526004016164c49190618ddb565b5f60405180830381865afa1580156164de573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906165069190618e96565b9050919050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c8642df84846040518363ffffffff1660e01b815260040161656a929190619627565b602060405180830381865afa158015616585573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906165a9919061873c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126165e3576165e26165c2565b5b8235905067ffffffffffffffff811115616600576165ff6165c6565b5b60208301915083600182028301111561661c5761661b6165ca565b5b9250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61664c82616623565b9050919050565b61665c81616642565b8114616666575f80fd5b50565b5f8135905061667781616653565b92915050565b5f819050919050565b61668f8161667d565b8114616699575f80fd5b50565b5f813590506166aa81616686565b92915050565b5f805f805f608086880312156166c9576166c86165ba565b5b5f86013567ffffffffffffffff8111156166e6576166e56165be565b5b6166f2888289016165ce565b9550955050602061670588828901616669565b93505060406167168882890161669c565b925050606061672788828901616669565b9150509295509295909350565b61673d8161667d565b82525050565b5f6020820190506167565f830184616734565b92915050565b5f8060408385031215616772576167716165ba565b5b5f61677f85828601616669565b925050602061679085828601616669565b9150509250929050565b5f8115159050919050565b6167ae8161679a565b81146167b8575f80fd5b50565b5f813590506167c9816167a5565b92915050565b5f805f805f805f8060c0898b0312156167eb576167ea6165ba565b5b5f89013567ffffffffffffffff811115616808576168076165be565b5b6168148b828c016165ce565b9850985050602089013567ffffffffffffffff811115616837576168366165be565b5b6168438b828c016165ce565b965096505060406168568b828c0161669c565b94505060606168678b828c016167bb565b93505060806168788b828c016167bb565b92505060a06168898b828c01616669565b9150509295985092959890939650565b5f805f805f80606087890312156168b3576168b26165ba565b5b5f87013567ffffffffffffffff8111156168d0576168cf6165be565b5b6168dc89828a016165ce565b9650965050602087013567ffffffffffffffff8111156168ff576168fe6165be565b5b61690b89828a016165ce565b9450945050604087013567ffffffffffffffff81111561692e5761692d6165be565b5b61693a89828a016165ce565b92509250509295509295509295565b5f805f8060608587031215616961576169606165ba565b5b5f85013567ffffffffffffffff81111561697e5761697d6165be565b5b61698a878288016165ce565b9450945050602061699d87828801616669565b92505060406169ae87828801616669565b91505092959194509250565b5f805f805f805f60e0888a0312156169d5576169d46165ba565b5b5f6169e28a828b01616669565b97505060206169f38a828b01616669565b9650506040616a048a828b01616669565b9550506060616a158a828b01616669565b9450506080616a268a828b01616669565b93505060a0616a378a828b01616669565b92505060c0616a488a828b01616669565b91505092959891949750929550565b5f805f8060608587031215616a6f57616a6e6165ba565b5b5f85013567ffffffffffffffff811115616a8c57616a8b6165be565b5b616a98878288016165ce565b94509450506020616aab8782880161669c565b9250506040616abc87828801616669565b91505092959194509250565b5f805f805f8060808789031215616ae257616ae16165ba565b5b5f87013567ffffffffffffffff811115616aff57616afe6165be565b5b616b0b89828a016165ce565b96509650506020616b1e89828a01616669565b945050604087013567ffffffffffffffff811115616b3f57616b3e6165be565b5b616b4b89828a016165ce565b93509350506060616b5e89828a01616669565b9150509295509295509295565b616b748161679a565b82525050565b5f602082019050616b8d5f830184616b6b565b92915050565b5f61ffff82169050919050565b616ba981616b93565b8114616bb3575f80fd5b50565b5f81359050616bc481616ba0565b92915050565b5f805f805f60608688031215616be357616be26165ba565b5b5f86013567ffffffffffffffff811115616c0057616bff6165be565b5b616c0c888289016165ce565b9550955050602086013567ffffffffffffffff811115616c2f57616c2e6165be565b5b616c3b888289016165ce565b93509350506040616c4e88828901616bb6565b9150509295509295909350565b5f60208284031215616c7057616c6f6165ba565b5b5f616c7d84828501616669565b91505092915050565b5f805f805f60608688031215616c9f57616c9e6165ba565b5b5f86013567ffffffffffffffff811115616cbc57616cbb6165be565b5b616cc8888289016165ce565b9550955050602086013567ffffffffffffffff811115616ceb57616cea6165be565b5b616cf7888289016165ce565b93509350506040616d0a88828901616669565b9150509295509295909350565b5f805f805f805f805f805f60e08c8e031215616d3657616d356165ba565b5b5f8c013567ffffffffffffffff811115616d5357616d526165be565b5b616d5f8e828f016165ce565b9b509b505060208c013567ffffffffffffffff811115616d8257616d816165be565b5b616d8e8e828f016165ce565b995099505060408c013567ffffffffffffffff811115616db157616db06165be565b5b616dbd8e828f016165ce565b975097505060608c013567ffffffffffffffff811115616de057616ddf6165be565b5b616dec8e828f016165ce565b95509550506080616dff8e828f01616bb6565b93505060a0616e108e828f01616bb6565b92505060c0616e218e828f01616669565b9150509295989b509295989b9093969950565b5f8060408385031215616e4a57616e496165ba565b5b5f616e578582860161669c565b9250506020616e6885828601616669565b9150509250929050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b616ebc82616e76565b810181811067ffffffffffffffff82111715616edb57616eda616e86565b5b80604052505050565b5f616eed6165b1565b9050616ef98282616eb3565b919050565b5f67ffffffffffffffff821115616f1857616f17616e86565b5b616f2182616e76565b9050602081019050919050565b828183375f83830152505050565b5f616f4e616f4984616efe565b616ee4565b905082815260208101848484011115616f6a57616f69616e72565b5b616f75848285616f2e565b509392505050565b5f82601f830112616f9157616f906165c2565b5b8135616fa1848260208601616f3c565b91505092915050565b5f8060408385031215616fc057616fbf6165ba565b5b5f616fcd85828601616669565b925050602083013567ffffffffffffffff811115616fee57616fed6165be565b5b616ffa85828601616f7d565b9150509250929050565b5f805f805f806080878903121561701e5761701d6165ba565b5b5f87013567ffffffffffffffff81111561703b5761703a6165be565b5b61704789828a016165ce565b9650965050602087013567ffffffffffffffff81111561706a576170696165be565b5b61707689828a016165ce565b9450945050604061708989828a01616bb6565b925050606061709a89828a01616bb6565b9150509295509295509295565b5f805f80608085870312156170bf576170be6165ba565b5b5f6170cc87828801616669565b945050602085013567ffffffffffffffff8111156170ed576170ec6165be565b5b6170f987828801616f7d565b935050604085013567ffffffffffffffff81111561711a576171196165be565b5b61712687828801616f7d565b925050606061713787828801616669565b91505092959194509250565b5f8083601f840112617158576171576165c2565b5b8235905067ffffffffffffffff811115617175576171746165c6565b5b602083019150836001820283011115617191576171906165ca565b5b9250929050565b5f805f805f805f60c0888a0312156171b3576171b26165ba565b5b5f6171c08a828b01616669565b97505060206171d18a828b01616669565b96505060406171e28a828b0161669c565b95505060606171f38a828b0161669c565b94505060806172048a828b0161669c565b93505060a088013567ffffffffffffffff811115617225576172246165be565b5b6172318a828b01617143565b925092505092959891949750929550565b5f60208284031215617257576172566165ba565b5b5f617264848285016167bb565b91505092915050565b5f805f805f8060c08789031215617287576172866165ba565b5b5f87013567ffffffffffffffff8111156172a4576172a36165be565b5b6172b089828a01616f7d565b965050602087013567ffffffffffffffff8111156172d1576172d06165be565b5b6172dd89828a01616f7d565b955050604087013567ffffffffffffffff8111156172fe576172fd6165be565b5b61730a89828a01616f7d565b945050606061731b89828a01616bb6565b935050608061732c89828a01616bb6565b92505060a061733d89828a01616669565b9150509295509295509295565b5f80604083850312156173605761735f6165ba565b5b5f61736d8582860161669c565b925050602061737e8582860161669c565b9150509250929050565b5f805f805f805f60e0888a0312156173a3576173a26165ba565b5b5f88013567ffffffffffffffff8111156173c0576173bf6165be565b5b6173cc8a828b01616f7d565b975050602088013567ffffffffffffffff8111156173ed576173ec6165be565b5b6173f98a828b01616f7d565b965050604088013567ffffffffffffffff81111561741a576174196165be565b5b6174268a828b01616f7d565b95505060606174378a828b01616bb6565b94505060806174488a828b01616bb6565b93505060a06174598a828b0161669c565b92505060c061746a8a828b01616669565b91505092959891949750929550565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156174b0578082015181840152602081019050617495565b5f8484015250505050565b5f6174c582617479565b6174cf8185617483565b93506174df818560208601617493565b6174e881616e76565b840191505092915050565b5f6080820190508181035f83015261750b81876174bb565b9050818103602083015261751f81866174bb565b9050818103604083015261753381856174bb565b90506175426060830184616b6b565b95945050505050565b5f805f805f805f60e0888a031215617566576175656165ba565b5b5f88013567ffffffffffffffff811115617583576175826165be565b5b61758f8a828b01616f7d565b975050602088013567ffffffffffffffff8111156175b0576175af6165be565b5b6175bc8a828b01616f7d565b965050604088013567ffffffffffffffff8111156175dd576175dc6165be565b5b6175e98a828b01616f7d565b95505060606175fa8a828b01616bb6565b945050608061760b8a828b01616bb6565b93505060a061761c8a828b01616669565b92505060c061762d8a828b01616669565b91505092959891949750929550565b5f8060208385031215617652576176516165ba565b5b5f83013567ffffffffffffffff81111561766f5761766e6165be565b5b61767b858286016165ce565b92509250509250929050565b61769081616642565b82525050565b5f6080820190508181035f8301526176ae81876174bb565b905081810360208301526176c281866174bb565b90506176d16040830185617687565b6176de6060830184616734565b95945050505050565b5f805f805f805f6080888a031215617702576177016165ba565b5b5f88013567ffffffffffffffff81111561771f5761771e6165be565b5b61772b8a828b016165ce565b9750975050602088013567ffffffffffffffff81111561774e5761774d6165be565b5b61775a8a828b016165ce565b9550955050604088013567ffffffffffffffff81111561777d5761777c6165be565b5b6177898a828b016165ce565b9350935050606061779c8a828b016167bb565b91505092959891949750929550565b5f815190506177b981616653565b92915050565b5f602082840312156177d4576177d36165ba565b5b5f6177e1848285016177ab565b91505092915050565b7f63616e2062652063616c6c656420627920696e7465726661636520636f6e74725f8201527f616374206f6e6c79000000000000000000000000000000000000000000000000602082015250565b5f617844602883617483565b915061784f826177ea565b604082019050919050565b5f6020820190508181035f83015261787181617838565b9050919050565b7f6163636f756e74206973206e6f742061206f72672061646d696e206163636f755f8201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b5f6178d2602283617483565b91506178dd82617878565b604082019050919050565b5f6020820190508181035f8301526178ff816178c6565b9050919050565b7f696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c5f8201527f6c6f776564000000000000000000000000000000000000000000000000000000602082015250565b5f617960602583617483565b915061796b82617906565b604082019050919050565b5f6020820190508181035f83015261798d81617954565b9050919050565b5f61799f8385617483565b93506179ac838584616f2e565b6179b583616e76565b840190509392505050565b5f6060820190508181035f8301526179d9818688617994565b90506179e86020830185617687565b6179f56040830184616734565b95945050505050565b5f81519050617a0c81616686565b92915050565b5f60208284031215617a2757617a266165ba565b5b5f617a34848285016179fe565b91505092915050565b7f6163636f756e74206973206e6f742061206e6574776f726b2061646d696e20615f8201527f63636f756e740000000000000000000000000000000000000000000000000000602082015250565b5f617a97602683617483565b9150617aa282617a3d565b604082019050919050565b5f6020820190508181035f830152617ac481617a8b565b9050919050565b5f602082019050617ade5f830184617687565b92915050565b7f6f7267206e6f7420696e20617070726f766564207374617475730000000000005f82015250565b5f617b18601a83617483565b9150617b2382617ae4565b602082019050919050565b5f6020820190508181035f830152617b4581617b0c565b9050919050565b5f60a0820190508181035f830152617b6581898b617994565b90508181036020830152617b7a818789617994565b9050617b896040830186616734565b617b966060830185616b6b565b617ba36080830184616b6b565b98975050505050505050565b7f496e636f7272656374206e6574776f726b20626f6f74207374617475730000005f82015250565b5f617be3601d83617483565b9150617bee82617baf565b602082019050919050565b5f6020820190508181035f830152617c1081617bd7565b9050919050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680617c6557607f821691505b602082108103617c7857617c77617c21565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302617cda7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82617c9f565b617ce48683617c9f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f617d1f617d1a617d158461667d565b617cfc565b61667d565b9050919050565b5f819050919050565b617d3883617d05565b617d4c617d4482617d26565b848454617cab565b825550505050565b5f90565b617d60617d54565b617d6b818484617d2f565b505050565b5b81811015617d8e57617d835f82617d58565b600181019050617d71565b5050565b601f821115617dd357617da481617c7e565b617dad84617c90565b81016020851015617dbc578190505b617dd0617dc885617c90565b830182617d70565b50505b505050565b5f82821c905092915050565b5f617df35f1984600802617dd8565b1980831691505092915050565b5f617e0b8383617de4565b9150826002028217905092915050565b617e258383617c17565b67ffffffffffffffff811115617e3e57617e3d616e86565b5b617e488254617c4e565b617e53828285617d92565b5f601f831160018114617e80575f8415617e6e578287013590505b617e788582617e00565b865550617edf565b601f198416617e8e86617c7e565b5f5b82811015617eb557848901358255600182019150602085019450602081019050617e90565b86831015617ed25784890135617ece601f891682617de4565b8355505b6001600288020188555050505b50505050505050565b5f819050919050565b5f617f0b617f06617f0184617ee8565b617cfc565b61667d565b9050919050565b617f1b81617ef1565b82525050565b5f6060820190508181035f830152617f3a818688617994565b9050617f496020830185617687565b617f566040830184617f12565b95945050505050565b5f8154617f6b81617c4e565b617f758186617483565b9450600182165f8114617f8f5760018114617fa557617fd7565b60ff198316865281151560200286019350617fd7565b617fae85617c7e565b5f5b83811015617fcf57815481890152600182019150602081019050617fb0565b808801955050505b50505092915050565b50565b5f617fee5f83617483565b9150617ff982617fe0565b5f82019050919050565b5f819050919050565b5f61802661802161801c84618003565b617cfc565b61667d565b9050919050565b6180368161800c565b82525050565b5f60a0820190508181035f8301526180548188617f5f565b90508181036020830152618069818688617994565b9050818103604083015261807c81617fe3565b905061808b6060830185617687565b618098608083018461802d565b9695505050505050565b7f5f7065726d55706772616461626c652063616e6e6f7420626520616e20656d705f8201527f7479206164647265737300000000000000000000000000000000000000000000602082015250565b5f6180fc602a83617483565b9150618107826180a2565b604082019050919050565b5f6020820190508181035f830152618129816180f0565b9050919050565b7f5f6f72674d616e616765722063616e6e6f7420626520616e20656d70747920615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61818a602683617483565b915061819582618130565b604082019050919050565b5f6020820190508181035f8301526181b78161817e565b9050919050565b7f5f726f6c65734d616e616765722063616e6e6f7420626520616e20656d7074795f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f618218602883617483565b9150618223826181be565b604082019050919050565b5f6020820190508181035f8301526182458161820c565b9050919050565b7f5f6163636f756e744d616e616765722063616e6e6f7420626520616e20656d705f8201527f7479206164647265737300000000000000000000000000000000000000000000602082015250565b5f6182a6602a83617483565b91506182b18261824c565b604082019050919050565b5f6020820190508181035f8301526182d38161829a565b9050919050565b7f5f766f7465724d616e616765722063616e6e6f7420626520616e20656d7074795f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f618334602883617483565b915061833f826182da565b604082019050919050565b5f6020820190508181035f83015261836181618328565b9050919050565b7f5f6e6f64654d616e616765722063616e6e6f7420626520616e20656d707479205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f6183c2602783617483565b91506183cd82618368565b604082019050919050565b5f6020820190508181035f8301526183ef816183b6565b9050919050565b7f5f636f6e747261637457686974656c6973744d616e616765722063616e6e6f745f8201527f20626520616e20656d7074792061646472657373000000000000000000000000602082015250565b5f618450603483617483565b915061845b826183f6565b604082019050919050565b5f6020820190508181035f83015261847d81618444565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6184ba6184b56184b084618484565b617cfc565b61848d565b9050919050565b6184ca816184a0565b82525050565b5f6020820190506184e35f8301846184c1565b92915050565b5f6040820190508181035f830152618502818587617994565b90506185116020830184616734565b949350505050565b5f60a0820190508181035f8301526185318188617f5f565b90508181036020830152618546818688617994565b9050818103604083015261855981617fe3565b90506185686060830185617687565b6185756080830184616734565b9695505050505050565b7f6f726720646f6573206e6f7420657869737400000000000000000000000000005f82015250565b5f6185b3601283617483565b91506185be8261857f565b602082019050919050565b5f6020820190508181035f8301526185e0816185a7565b9050919050565b5f6186016185fc6185f784618484565b617cfc565b61667d565b9050919050565b618611816185e7565b82525050565b5f60808201905061862a5f830189617687565b818103602083015261863d818789617994565b90508181036040830152618652818587617994565b90506186616060830184618608565b979650505050505050565b5f60a0820190508181035f8301526186848188617f5f565b90508181036020830152618699818688617994565b905081810360408301526186ac81617fe3565b90506186bb6060830185617687565b6186c86080830184617f12565b9695505050505050565b6186db81616b93565b82525050565b5f6060820190508181035f8301526186fa818789617994565b9050818103602083015261870f818587617994565b905061871e60408301846186d2565b9695505050505050565b5f81519050618736816167a5565b92915050565b5f60208284031215618751576187506165ba565b5b5f61875e84828501618728565b91505092915050565b5f819050919050565b5f61878a61878561878084618767565b617cfc565b61667d565b9050919050565b61879a81618770565b82525050565b5f6060820190508181035f8301526187b9818688617994565b90506187c86020830185617687565b6187d56040830184618791565b95945050505050565b5f819050919050565b5f6188016187fc6187f7846187de565b617cfc565b61667d565b9050919050565b618811816187e7565b82525050565b5f60808201905061882a5f830187617687565b818103602083015261883c8186617f5f565b905081810360408301526188508185617f5f565b905061885f6060830184618808565b95945050505050565b5f6020820190508181035f8301526188808184617f5f565b905092915050565b5f6020820190508181035f8301526188a1818486617994565b90509392505050565b7f61646d696e20726f6c65732063616e6e6f742062652072656d6f7665640000005f82015250565b5f6188de601d83617483565b91506188e9826188aa565b602082019050919050565b5f6020820190508181035f83015261890b816188d2565b9050919050565b5f6040820190508181035f83015261892b818688617994565b90508181036020830152618940818486617994565b905095945050505050565b5f81905092915050565b5f618960838561894b565b935061896d838584616f2e565b82840190509392505050565b7f2e000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6189ad60018361894b565b91506189b882618979565b600182019050919050565b5f6189cf828688618955565b91506189da826189a1565b91506189e7828486618955565b915081905095945050505050565b5f60a0820190508181035f830152618a0e81898b617994565b90508181036020830152618a23818789617994565b9050618a3260408301866186d2565b618a3f60608301856186d2565b8181036080830152618a5181846174bb565b905098975050505050505050565b5f604082019050618a725f830185617687565b8181036020830152618a8481846174bb565b90509392505050565b5f60a0820190508181035f830152618aa681898b617994565b90508181036020830152618abb818789617994565b9050618aca60408301866186d2565b618ad760608301856186d2565b8181036080830152618ae98184617f5f565b905098975050505050505050565b5f8060408385031215618b0d57618b0c6165ba565b5b5f618b1a85828601618728565b9250506020618b2b858286016177ab565b9150509250929050565b5f6040820190508181035f830152618b4e818587617994565b9050618b5d6020830184617687565b949350505050565b7f6f7065726174696f6e2063616e6e6f7420626520706572666f726d65640000005f82015250565b5f618b99601d83617483565b9150618ba482618b65565b602082019050919050565b5f6020820190508181035f830152618bc681618b8d565b9050919050565b7f726f6c6520646f6573206e6f74206578697374730000000000000000000000005f82015250565b5f618c01601483617483565b9150618c0c82618bcd565b602082019050919050565b5f6020820190508181035f830152618c2e81618bf5565b9050919050565b5f6060820190508181035f830152618c4d81866174bb565b90508181036020830152618c6181856174bb565b90508181036040830152618c7581846174bb565b9050949350505050565b5f608082019050618c925f830187617687565b8181036020830152618ca481866174bb565b90508181036040830152618cb881856174bb565b9050618cc76060830184616b6b565b95945050505050565b5f604082019050618ce35f830185616734565b618cf06020830184616734565b9392505050565b5f618d09618d0484616efe565b616ee4565b905082815260208101848484011115618d2557618d24616e72565b5b618d30848285617493565b509392505050565b5f82601f830112618d4c57618d4b6165c2565b5b8151618d5c848260208601618cf7565b91505092915050565b5f8060408385031215618d7b57618d7a6165ba565b5b5f83015167ffffffffffffffff811115618d9857618d976165be565b5b618da485828601618d38565b925050602083015167ffffffffffffffff811115618dc557618dc46165be565b5b618dd185828601618d38565b9150509250929050565b5f6020820190508181035f830152618df381846174bb565b905092915050565b5f6080820190508181035f830152618e1381876174bb565b90508181036020830152618e2781866174bb565b90508181036040830152618e3b81856174bb565b9050618e4a6060830184616734565b95945050505050565b5f606082019050618e665f830186617687565b8181036020830152618e7881856174bb565b90508181036040830152618e8c81846174bb565b9050949350505050565b5f60208284031215618eab57618eaa6165ba565b5b5f82015167ffffffffffffffff811115618ec857618ec76165be565b5b618ed484828501618d38565b91505092915050565b5f60c0820190508181035f830152618ef581896174bb565b90508181036020830152618f0981886174bb565b9050618f1860408301876186d2565b618f2560608301866186d2565b8181036080830152618f3781856174bb565b9050618f4660a0830184618791565b979650505050505050565b5f6060820190508181035f830152618f698186617f5f565b9050618f786020830185616734565b618f856040830184616734565b949350505050565b5f60a0820190508181035f830152618fa58188617f5f565b90508181036020830152618fb98187617f5f565b9050618fc86040830186616734565b618fd56060830185616b6b565b618fe26080830184616b6b565b9695505050505050565b5f6040820190508181035f8301526190048185617f5f565b905081810360208301526190188184617f5f565b90509392505050565b7f4f7065726174696f6e206e6f7420616c6c6f77656400000000000000000000005f82015250565b5f619055601583617483565b915061906082619021565b602082019050919050565b5f6020820190508181035f83015261908281619049565b9050919050565b7f6f7065726174696f6e206e6f7420616c6c6f77656400000000000000000000005f82015250565b5f6190bd601583617483565b91506190c882619089565b602082019050919050565b5f6020820190508181035f8301526190ea816190b1565b9050919050565b5f60c0820190508181035f83015261910981896174bb565b9050818103602083015261911d81886174bb565b905061912c60408301876186d2565b61913960608301866186d2565b818103608083015261914b81856174bb565b905061915a60a0830184616734565b979650505050505050565b5f60c0820190508181035f83015261917d81896174bb565b9050818103602083015261919181886174bb565b90506191a060408301876186d2565b6191ad60608301866186d2565b81810360808301526191bf81856174bb565b90506191ce60a0830184617f12565b979650505050505050565b5f60a0820190508181035f8301526191f18188617f5f565b9050818103602083015261920581876174bb565b9050818103604083015261921981866174bb565b90506192286060830185617687565b6192356080830184618791565b9695505050505050565b5f60a0820190508181035f8301526192578188617f5f565b9050818103602083015261926b81876174bb565b9050818103604083015261927f81866174bb565b905061928e6060830185617687565b61929b6080830184618608565b9695505050505050565b5f60a0820190508181035f8301526192bd81886174bb565b905081810360208301526192d181876174bb565b90506192e060408301866186d2565b6192ed60608301856186d2565b81810360808301526192ff81846174bb565b90509695505050505050565b7f4f7065726174696f6e2063616e6e6f7420626520706572666f726d65640000005f82015250565b5f61933f601d83617483565b915061934a8261930b565b602082019050919050565b5f6020820190508181035f83015261936c81619333565b9050919050565b5f6080820190506193865f830187617687565b818103602083015261939881866174bb565b905081810360408301526193ac8185617f5f565b90506193bb6060830184618608565b95945050505050565b5f805f80608085870312156193dc576193db6165ba565b5b5f85015167ffffffffffffffff8111156193f9576193f86165be565b5b61940587828801618d38565b945050602085015167ffffffffffffffff811115619426576194256165be565b5b61943287828801618d38565b9350506040619443878288016177ab565b9250506060619454878288016179fe565b91505092959194509250565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f619494600e83617483565b915061949f82619460565b602082019050919050565b5f6020820190508181035f8301526194c181619488565b9050919050565b7f4e6f7468696e6720746f20617070726f766500000000000000000000000000005f82015250565b5f6194fc601283617483565b9150619507826194c8565b602082019050919050565b5f6020820190508181035f830152619529816194f0565b9050919050565b5f60a0820190508181035f8301526195488188617f5f565b9050818103602083015261955c81876174bb565b905061956b6040830186616734565b6195786060830185616b6b565b6195856080830184616b6b565b9695505050505050565b5f6040820190508181035f8301526195a781856174bb565b90506195b66020830184617687565b9392505050565b5f6040820190508181035f8301526195d581856174bb565b90506195e46020830184618808565b9392505050565b5f6060820190508181035f83015261960381866174bb565b90506196126020830185617687565b61961f6040830184616734565b949350505050565b5f6040820190508181035f83015261963f81856174bb565b905061964e6020830184616734565b939250505056fea2646970667358221220022cb4a730ee50ae06afafdb64b92c6c5155686e6d6ddda49244459a7046252664736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/PermissionsInterface.abi b/permission/v2/contract/gen/PermissionsInterface.abi index e0c7558d9d..8e229565de 100644 --- a/permission/v2/contract/gen/PermissionsInterface.abi +++ b/permission/v2/contract/gen/PermissionsInterface.abi @@ -1 +1 @@ -[{"constant":true,"inputs":[],"name":"getPermissionsImpl","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"}],"name":"approveAdminRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nwAdminOrg","type":"string"},{"name":"_nwAdminRole","type":"string"},{"name":"_oAdminRole","type":"string"}],"name":"setPolicy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pOrgId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"}],"name":"addSubOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"},{"name":"_roleId","type":"string"}],"name":"assignAccountRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"}],"name":"approveBlacklistedAccountRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_action","type":"uint256"}],"name":"updateNodeStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"},{"name":"_roleId","type":"string"}],"name":"assignAdminRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"updateNetworkBootStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"}],"name":"connectionAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNetworkBootStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_acct","type":"address"}],"name":"addAdminAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_permImplementation","type":"address"}],"name":"setPermImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_account","type":"address"}],"name":"addOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_access","type":"uint256"},{"name":"_voter","type":"bool"},{"name":"_admin","type":"bool"}],"name":"addNewRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"}],"name":"approveBlacklistedNodeRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"}],"name":"approveOrgStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"}],"name":"validateAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"},{"name":"_action","type":"uint256"}],"name":"updateAccountStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"}],"name":"addAdminNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"}],"name":"startBlacklistedNodeRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"},{"name":"_target","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_gasLimit","type":"uint256"},{"name":"_payload","type":"bytes"}],"name":"transactionAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"},{"name":"_orgId","type":"string"}],"name":"isOrgAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_breadth","type":"uint256"},{"name":"_depth","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"}],"name":"removeRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_account","type":"address"}],"name":"startBlacklistedAccountRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"}],"name":"updateOrgStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"isNetworkAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"}],"name":"addNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getPendingOp","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_ip","type":"string"},{"name":"_port","type":"uint16"},{"name":"_raftport","type":"uint16"},{"name":"_account","type":"address"}],"name":"approveOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_permImplUpgradeable","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"address","name":"_acct","type":"address"}],"name":"addAdminAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"}],"name":"addAdminNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"addContractWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_access","type":"uint256"},{"internalType":"bool","name":"_voter","type":"bool"},{"internalType":"bool","name":"_admin","type":"bool"}],"name":"addNewRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"}],"name":"addNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"address","name":"_account","type":"address"}],"name":"addOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_pOrgId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"}],"name":"addSubOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"}],"name":"approveAdminRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"}],"name":"approveBlacklistedAccountRecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"}],"name":"approveBlacklistedNodeRecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"address","name":"_account","type":"address"}],"name":"approveOrg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_action","type":"uint256"}],"name":"approveOrgStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_roleId","type":"string"}],"name":"assignAccountRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_roleId","type":"string"}],"name":"assignAdminRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"}],"name":"connectionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccessLevelForUnconfiguredAccount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNetworkBootStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"getPendingOp","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPermissionsImpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_breadth","type":"uint256"},{"internalType":"uint256","name":"_depth","type":"uint256"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_permImplUpgradeable","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isNetworkAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"isOrgAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"removeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"revokeContractWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessLevel","type":"uint256"}],"name":"setAccessLevelForUnconfiguredAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isIpValidationEnabled","type":"bool"}],"name":"setIpValidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_permImplementation","type":"address"}],"name":"setPermImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_nwAdminOrg","type":"string"},{"internalType":"string","name":"_nwAdminRole","type":"string"},{"internalType":"string","name":"_oAdminRole","type":"string"}],"name":"setPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"}],"name":"startBlacklistedAccountRecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"}],"name":"startBlacklistedNodeRecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_gasPrice","type":"uint256"},{"internalType":"uint256","name":"_gasLimit","type":"uint256"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"transactionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_action","type":"uint256"}],"name":"updateAccountStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateNetworkBootStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"string","name":"_ip","type":"string"},{"internalType":"uint16","name":"_port","type":"uint16"},{"internalType":"uint16","name":"_raftport","type":"uint16"},{"internalType":"uint256","name":"_action","type":"uint256"}],"name":"updateNodeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_action","type":"uint256"}],"name":"updateOrgStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"validateAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/PermissionsInterface.bin b/permission/v2/contract/gen/PermissionsInterface.bin index 894fd57bef..4d839f5f88 100644 --- a/permission/v2/contract/gen/PermissionsInterface.bin +++ b/permission/v2/contract/gen/PermissionsInterface.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516020806134518339810180604052602081101561003057600080fd5b5051600280546001600160a01b0319166001600160a01b039092169190911790556133f1806100606000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806358dcff711161010f578063a5843f08116100a2578063d1aa0c2011610071578063d1aa0c2014611673578063ef5f719614611699578063f346a3a714611858578063fa279d61146119c4576101e5565b8063a5843f08146114ad578063a6343012146114d0578063a97914bf1461158e578063bb3b6e8014611605576101e5565b80638683c7fe116100de5780638683c7fe1461109c57806391ba3f96146111d6578063936421d5146113955780639bd381011461142f576101e5565b806358dcff7114610d745780635be9672c14610f335780636b568d7614610fa157806384b7a84a1461101f576101e5565b806343de646c116101875780634fe57e7a116101565780634fe57e7a14610a90578063511bbd9f14610ab6578063513a327714610adc57806351f604c314610ca6576101e5565b806343de646c146108df57806344478e79146109aa57806345a59e5b146109c65780634cbfa82e14610a88576101e5565b80632e125a6c116101c35780632e125a6c146103955780632f7f0a12146105d95780633e239b23146106a75780633f9be4971461071e576101e5565b806303ed6933146101ea57806316724c441461020e5780631b61022014610287575b600080fd5b6101f2611b8e565b604080516001600160a01b039092168252519081900360200190f35b6102856004803603604081101561022457600080fd5b810190602081018135600160201b81111561023e57600080fd5b82018360208201111561025057600080fd5b803590602001918460018302840111600160201b8311171561027157600080fd5b9193509150356001600160a01b0316611b9d565b005b6102856004803603606081101561029d57600080fd5b810190602081018135600160201b8111156102b757600080fd5b8201836020820111156102c957600080fd5b803590602001918460018302840111600160201b831117156102ea57600080fd5b919390929091602081019035600160201b81111561030757600080fd5b82018360208201111561031957600080fd5b803590602001918460018302840111600160201b8311171561033a57600080fd5b919390929091602081019035600160201b81111561035757600080fd5b82018360208201111561036957600080fd5b803590602001918460018302840111600160201b8311171561038a57600080fd5b509092509050611c4c565b610285600480360360c08110156103ab57600080fd5b810190602081018135600160201b8111156103c557600080fd5b8201836020820111156103d757600080fd5b803590602001918460018302840111600160201b831117156103f857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561044a57600080fd5b82018360208201111561045c57600080fd5b803590602001918460018302840111600160201b8311171561047d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104cf57600080fd5b8201836020820111156104e157600080fd5b803590602001918460018302840111600160201b8311171561050257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561055457600080fd5b82018360208201111561056657600080fd5b803590602001918460018302840111600160201b8311171561058757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff8335811694506020909301359092169150611d439050565b610285600480360360608110156105ef57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561061957600080fd5b82018360208201111561062b57600080fd5b803590602001918460018302840111600160201b8311171561064c57600080fd5b919390929091602081019035600160201b81111561066957600080fd5b82018360208201111561067b57600080fd5b803590602001918460018302840111600160201b8311171561069c57600080fd5b509092509050611f52565b610285600480360360408110156106bd57600080fd5b810190602081018135600160201b8111156106d757600080fd5b8201836020820111156106e957600080fd5b803590602001918460018302840111600160201b8311171561070a57600080fd5b9193509150356001600160a01b0316612033565b610285600480360360c081101561073457600080fd5b810190602081018135600160201b81111561074e57600080fd5b82018360208201111561076057600080fd5b803590602001918460018302840111600160201b8311171561078157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156107d357600080fd5b8201836020820111156107e557600080fd5b803590602001918460018302840111600160201b8311171561080657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561085857600080fd5b82018360208201111561086a57600080fd5b803590602001918460018302840111600160201b8311171561088b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff833581169450602084013516926040013591506120c59050565b610285600480360360608110156108f557600080fd5b810190602081018135600160201b81111561090f57600080fd5b82018360208201111561092157600080fd5b803590602001918460018302840111600160201b8311171561094257600080fd5b919390926001600160a01b0383351692604081019060200135600160201b81111561096c57600080fd5b82018360208201111561097e57600080fd5b803590602001918460018302840111600160201b8311171561099f57600080fd5b509092509050612274565b6109b2612333565b604080519115158252519081900360200190f35b6109b2600480360360608110156109dc57600080fd5b810190602081018135600160201b8111156109f657600080fd5b820183602082011115610a0857600080fd5b803590602001918460018302840111600160201b83111715610a2957600080fd5b919390929091602081019035600160201b811115610a4657600080fd5b820183602082011115610a5857600080fd5b803590602001918460018302840111600160201b83111715610a7957600080fd5b91935091503561ffff166123b5565b6109b26124a1565b61028560048036036020811015610aa657600080fd5b50356001600160a01b0316612504565b61028560048036036020811015610acc57600080fd5b50356001600160a01b031661256d565b610285600480360360c0811015610af257600080fd5b810190602081018135600160201b811115610b0c57600080fd5b820183602082011115610b1e57600080fd5b803590602001918460018302840111600160201b83111715610b3f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610b9157600080fd5b820183602082011115610ba357600080fd5b803590602001918460018302840111600160201b83111715610bc457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460018302840111600160201b83111715610c4957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b031690506125f1565b610285600480360360a0811015610cbc57600080fd5b810190602081018135600160201b811115610cd657600080fd5b820183602082011115610ce857600080fd5b803590602001918460018302840111600160201b83111715610d0957600080fd5b919390929091602081019035600160201b811115610d2657600080fd5b820183602082011115610d3857600080fd5b803590602001918460018302840111600160201b83111715610d5957600080fd5b91935091508035906020810135151590604001351515612691565b610285600480360360a0811015610d8a57600080fd5b810190602081018135600160201b811115610da457600080fd5b820183602082011115610db657600080fd5b803590602001918460018302840111600160201b83111715610dd757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610e2957600080fd5b820183602082011115610e3b57600080fd5b803590602001918460018302840111600160201b83111715610e5c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610eae57600080fd5b820183602082011115610ec057600080fd5b803590602001918460018302840111600160201b83111715610ee157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff83358116945060209093013590921691506127869050565b61028560048036036040811015610f4957600080fd5b810190602081018135600160201b811115610f6357600080fd5b820183602082011115610f7557600080fd5b803590602001918460018302840111600160201b83111715610f9657600080fd5b91935091503561292f565b6109b260048036036040811015610fb757600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610fe157600080fd5b820183602082011115610ff357600080fd5b803590602001918460018302840111600160201b8311171561101457600080fd5b5090925090506129bc565b6102856004803603606081101561103557600080fd5b810190602081018135600160201b81111561104f57600080fd5b82018360208201111561106157600080fd5b803590602001918460018302840111600160201b8311171561108257600080fd5b91935091506001600160a01b038135169060200135612a74565b610285600480360360808110156110b257600080fd5b810190602081018135600160201b8111156110cc57600080fd5b8201836020820111156110de57600080fd5b803590602001918460018302840111600160201b831117156110ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561115157600080fd5b82018360208201111561116357600080fd5b803590602001918460018302840111600160201b8311171561118457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff8335811694506020909301359092169150612b2c9050565b610285600480360360a08110156111ec57600080fd5b810190602081018135600160201b81111561120657600080fd5b82018360208201111561121857600080fd5b803590602001918460018302840111600160201b8311171561123957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561128b57600080fd5b82018360208201111561129d57600080fd5b803590602001918460018302840111600160201b831117156112be57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561131057600080fd5b82018360208201111561132257600080fd5b803590602001918460018302840111600160201b8311171561134357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff8335811694506020909301359092169150612c629050565b6109b2600480360360c08110156113ab57600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a0820135600160201b8111156113f157600080fd5b82018360208201111561140357600080fd5b803590602001918460018302840111600160201b8311171561142457600080fd5b509092509050612cf7565b6109b26004803603604081101561144557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561146f57600080fd5b82018360208201111561148157600080fd5b803590602001918460018302840111600160201b831117156114a257600080fd5b509092509050612dde565b610285600480360360408110156114c357600080fd5b5080359060200135612e62565b610285600480360360408110156114e657600080fd5b810190602081018135600160201b81111561150057600080fd5b82018360208201111561151257600080fd5b803590602001918460018302840111600160201b8311171561153357600080fd5b919390929091602081019035600160201b81111561155057600080fd5b82018360208201111561156257600080fd5b803590602001918460018302840111600160201b8311171561158357600080fd5b509092509050612ed0565b610285600480360360408110156115a457600080fd5b810190602081018135600160201b8111156115be57600080fd5b8201836020820111156115d057600080fd5b803590602001918460018302840111600160201b831117156115f157600080fd5b9193509150356001600160a01b0316612f84565b6102856004803603604081101561161b57600080fd5b810190602081018135600160201b81111561163557600080fd5b82018360208201111561164757600080fd5b803590602001918460018302840111600160201b8311171561166857600080fd5b919350915035613016565b6109b26004803603602081101561168957600080fd5b50356001600160a01b03166130a3565b610285600480360360a08110156116af57600080fd5b810190602081018135600160201b8111156116c957600080fd5b8201836020820111156116db57600080fd5b803590602001918460018302840111600160201b831117156116fc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561174e57600080fd5b82018360208201111561176057600080fd5b803590602001918460018302840111600160201b8311171561178157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156117d357600080fd5b8201836020820111156117e557600080fd5b803590602001918460018302840111600160201b8311171561180657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505061ffff83358116945060209093013590921691506131269050565b6118c66004803603602081101561186e57600080fd5b810190602081018135600160201b81111561188857600080fd5b82018360208201111561189a57600080fd5b803590602001918460018302840111600160201b831117156118bb57600080fd5b5090925090506131bb565b604051808060200180602001856001600160a01b03166001600160a01b03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561192557818101518382015260200161190d565b50505050905090810190601f1680156119525780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561198557818101518382015260200161196d565b50505050905090810190601f1680156119b25780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b610285600480360360c08110156119da57600080fd5b810190602081018135600160201b8111156119f457600080fd5b820183602082011115611a0657600080fd5b803590602001918460018302840111600160201b83111715611a2757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611a7957600080fd5b820183602082011115611a8b57600080fd5b803590602001918460018302840111600160201b83111715611aac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611afe57600080fd5b820183602082011115611b1057600080fd5b803590602001918460018302840111600160201b83111715611b3157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813561ffff908116935060208301351691604001356001600160a01b03169050613325565b6000546001600160a01b031690565b600054604051600160e01b63888430410281526001600160a01b03838116602483015233604483018190526060600484019081526064840187905291909316926388843041928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b505af1158015611c43573d6000803e3d6000fd5b50505050505050565b600054604051600160e51b62db0811028152606060048201908152606482018890526001600160a01b0390921691631b610220918991899189918991899189918190602481019060448101906084018a8a80828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b158015611d2357600080fd5b505af1158015611d37573d6000803e3d6000fd5b50505050505050505050565b60008054604051600160e01b6368a6127302815261ffff8086166084830152841660a48201523360c4820181905260e0600483019081528a5160e48401528a516001600160a01b03909416946368a61273948c948c948c948c948c948c9483926024820192604483019260648101926101049091019160208f01918190849084905b83811015611ddd578181015183820152602001611dc5565b50505050905090810190601f168015611e0a5780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b83811015611e3d578181015183820152602001611e25565b50505050905090810190601f168015611e6a5780820380516001836020036101000a031916815260200191505b5085810383528a5181528a516020918201918c019080838360005b83811015611e9d578181015183820152602001611e85565b50505050905090810190601f168015611eca5780820380516001836020036101000a031916815260200191505b5085810382528951815289516020918201918b019080838360005b83811015611efd578181015183820152602001611ee5565b50505050905090810190601f168015611f2a5780820380516001836020036101000a031916815260200191505b509b505050505050505050505050600060405180830381600087803b158015611d2357600080fd5b600054604051600160e01b638baa81910281526001600160a01b03878116600483019081523360648401819052608060248501908152608485018990529290941693638baa8191938a938a938a938a938a9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050505050505050565b600054604051600160e01b634b20f45f0281526001600160a01b0383811660248301523360448301819052606060048401908152606484018790529190931692634b20f45f928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b60008054604051600160e21b632e6dff9b02815261ffff80871660648301528516608482015260a481018490523360c4820181905260e0600483019081528a5160e48401528a516001600160a01b039094169463b9b7fe6c948c948c948c948c948c948c94839260248201926044830192610104019160208e0191908190849084905b83811015612160578181015183820152602001612148565b50505050905090810190601f16801561218d5780820380516001836020036101000a031916815260200191505b5084810383528a5181528a516020918201918c019080838360005b838110156121c05781810151838201526020016121a8565b50505050905090810190601f1680156121ed5780820380516001836020036101000a031916815260200191505b5084810382528951815289516020918201918b019080838360005b83811015612220578181015183820152602001612208565b50505050905090810190601f16801561224d5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b158015611d2357600080fd5b600054604051600160e01b63404bf3eb0281526001600160a01b038581166024830152336064830181905260806004840190815260848401899052919093169263404bf3eb9289928992899289928992918190604481019060a401898980828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561201457600080fd5b60008060009054906101000a90046001600160a01b03166001600160a01b03166344478e796040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561238457600080fd5b505af1158015612398573d6000803e3d6000fd5b505050506040513d60208110156123ae57600080fd5b5051905090565b60008054604051600160e01b6345a59e5b02815261ffff84166044820152606060048201908152606482018890526001600160a01b03909216916345a59e5b91899189918991899189919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505097505050505050505060206040518083038186803b15801561246b57600080fd5b505afa15801561247f573d6000803e3d6000fd5b505050506040513d602081101561249557600080fd5b50519695505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316634cbfa82e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f057600080fd5b505afa158015612398573d6000803e3d6000fd5b6000805460408051600160e11b6327f2bf3d0281526001600160a01b03858116600483015291519190921692634fe57e7a926024808201939182900301818387803b15801561255257600080fd5b505af1158015612566573d6000803e3d6000fd5b5050505050565b6002546001600160a01b031633146125cf5760408051600160e51b62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008054604051600160e01b63e91b0e1902815261ffff8087166064830152851660848201526001600160a01b0384811660a48301523360c4830181905260e0600484019081528b5160e48501528b51929094169463e91b0e19948c948c948c948c948c948c9492939092839260248201926044830192610104019160208e01919081908490849083811015612160578181015183820152602001612148565b600054604051600160e11b630d82613b02815260448101859052831515606482015282151560848201523360a4820181905260c06004830190815260c483018a90526001600160a01b0390931692631b04c276928b928b928b928b928b928b928b9291908190602481019060e4018b8b80828437600083820152601f01601f191690910184810383528981526020019050898980828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561276557600080fd5b505af1158015612779573d6000803e3d6000fd5b5050505050505050505050565b60008054604051600160e61b6302810afd02815261ffff8086166064830152841660848201523360a4820181905260c060048301908152895160c484015289516001600160a01b039094169463a042bf40948b948b948b948b948b949293919283926024810192604482019260e49092019160208d01918190849084905b8381101561281c578181015183820152602001612804565b50505050905090810190601f1680156128495780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b8381101561287c578181015183820152602001612864565b50505050905090810190601f1680156128a95780820380516001836020036101000a031916815260200191505b5084810382528851815288516020918201918a019080838360005b838110156128dc5781810151838201526020016128c4565b50505050905090810190601f1680156129095780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b15801561201457600080fd5b600054604051600160e21b632d551959028152602481018390523360448201819052606060048301908152606483018690526001600160a01b039093169263b5546564928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b6000805460408051600160e11b6335ab46bb0281526001600160a01b03878116600483019081526024830193845260448301879052931692636b568d76928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015612a4057600080fd5b505afa158015612a54573d6000803e3d6000fd5b505050506040513d6020811015612a6a57600080fd5b5051949350505050565b600054604051600160e11b6302740f8f0281526001600160a01b0384811660248301526044820184905233606483018190526080600484019081526084840188905291909316926304e81f1e92889288928892889290819060a401878780828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612b0e57600080fd5b505af1158015612b22573d6000803e3d6000fd5b5050505050505050565b60008054604051600160e11b634341e3ff02815261ffff8086166044830152841660648201526080600482019081528751608483015287516001600160a01b0390931693638683c7fe93899389938993899391928392602482019260a49092019160208a0191908190849084905b83811015612bb2578181015183820152602001612b9a565b50505050905090810190601f168015612bdf5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015612c12578181015183820152602001612bfa565b50505050905090810190601f168015612c3f5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612b0e57600080fd5b60008054604051600160e01b63d621d95702815261ffff8086166064830152841660848201523360a4820181905260c060048301908152895160c484015289516001600160a01b039094169463d621d957948b948b948b948b948b949293919283926024810192604482019260e49092019160208d01918190849084908381101561281c578181015183820152602001612804565b60008054604051600160e01b63936421d50281526001600160a01b038a8116600483019081528a82166024840152604483018a9052606483018990526084830188905260c060a4840190815260c48401879052919093169263936421d5928c928c928c928c928c928c928c929060e401848480828437600081840152601f19601f8201169050808301925050509850505050505050505060206040518083038186803b158015612da657600080fd5b505afa158015612dba573d6000803e3d6000fd5b505050506040513d6020811015612dd057600080fd5b505198975050505050505050565b6000805460408051600160e01b639bd381010281526001600160a01b03878116600483019081526024830193845260448301879052931692639bd38101928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015612a4057600080fd5b6000805460408051600160e31b6314b087e1028152600481018690526024810185905290516001600160a01b039092169263a5843f089260448084019382900301818387803b158015612eb457600080fd5b505af1158015612ec8573d6000803e3d6000fd5b505050505050565b600054604051600160e11b632e52d6df0281523360448201819052606060048301908152606483018790526001600160a01b0390931692635ca5adbe928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612b0e57600080fd5b600054604051600160e11b630e124c890281526001600160a01b0383811660248301523360448301819052606060048401908152606484018790529190931692631c249912928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b600054604051600160e01b633cf5f33b028152602481018390523360448201819052606060048301908152606483018690526001600160a01b0390931692633cf5f33b928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c2f57600080fd5b6000805460408051600160e51b63068d50610281526001600160a01b0385811660048301529151919092169163d1aa0c20916024808301926020929190829003018186803b1580156130f457600080fd5b505afa158015613108573d6000803e3d6000fd5b505050506040513d602081101561311e57600080fd5b505192915050565b60008054604051600160e01b63ecad01d502815261ffff8086166064830152841660848201523360a4820181905260c060048301908152895160c484015289516001600160a01b039094169463ecad01d5948b948b948b948b948b949293919283926024810192604482019260e49092019160208d01918190849084908381101561281c578181015183820152602001612804565b60008054604051600160e01b63f346a3a7028152602060048201908152602482018590526060938493909283926001600160a01b039092169163f346a3a791899189918190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561323d57600080fd5b505afa158015613251573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561327a57600080fd5b810190808051600160201b81111561329157600080fd5b820160208101848111156132a457600080fd5b8151600160201b8111828201871017156132bd57600080fd5b50509291906020018051600160201b8111156132d857600080fd5b820160208101848111156132eb57600080fd5b8151600160201b81118282018710171561330457600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b60008054604051600160e11b637baf850302815261ffff8087166064830152851660848201526001600160a01b0384811660a48301523360c4830181905260e0600484019081528b5160e48501528b51929094169463f75f0a06948c948c948c948c948c948c9492939092839260248201926044830192610104019160208e0191908190849084908381101561216057818101518382015260200161214856fea165627a7a72305820b6e6a59155f89147a70225e82521ad7432c887b50d3e810e125f0b82322d043f0029 \ No newline at end of file +608060405234801561000f575f80fd5b506136ea8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610225575f3560e01c806358dcff711161012e578063a5843f08116100b6578063d1aa0c201161007a578063d1aa0c2014610601578063ea2f2dfe14610631578063ef5f71961461064d578063f346a3a714610669578063fa279d611461069c57610225565b8063a5843f0814610575578063a634301214610591578063a97914bf146105ad578063bb3b6e80146105c9578063c4d66de8146105e557610225565b80638683c7fe116100fd5780638683c7fe146104c157806391ba3f96146104dd578063936421d5146104f95780639bd38101146105295780639fc666b21461055957610225565b806358dcff711461043d5780635be9672c146104595780636b568d761461047557806384b7a84a146104a557610225565b80633f9be497116101b15780634cbfa82e116101805780634cbfa82e146103af5780634fe57e7a146103cd578063511bbd9f146103e9578063513a32771461040557806351f604c31461042157610225565b80633f9be4971461032957806343de646c1461034557806344478e791461036157806345a59e5b1461037f57610225565b80631b610220116101f85780631b6102201461029d5780632e125a6c146102b95780632f7f0a12146102d55780633965c04a146102f15780633e239b231461030d57610225565b806303ed6933146102295780630dca12f61461024757806310742cdb1461026557806316724c4414610281575b5f80fd5b6102316106b8565b60405161023e9190611e37565b60405180910390f35b61024f6106df565b60405161025c9190611e68565b60405180910390f35b61027f600480360381019061027a9190611ebc565b610772565b005b61029b60048036038101906102969190611f48565b6107fc565b005b6102b760048036038101906102b29190611fa5565b61088c565b005b6102d360048036038101906102ce91906121c4565b610923565b005b6102ef60048036038101906102ea91906122bd565b6109bc565b005b61030b60048036038101906103069190612378565b610a52565b005b61032760048036038101906103229190611f48565b610adc565b005b610343600480360381019061033e91906123a3565b610b6c565b005b61035f600480360381019061035a9190612480565b610c05565b005b610369610c9b565b604051610376919061252b565b60405180910390f35b61039960048036038101906103949190612544565b610d2f565b6040516103a6919061252b565b60405180910390f35b6103b7610ddb565b6040516103c4919061252b565b60405180910390f35b6103e760048036038101906103e29190611ebc565b610e6e565b005b61040360048036038101906103fe9190611ebc565b610ef6565b005b61041f600480360381019061041a91906125d5565b610fc7565b005b61043b600480360381019061043691906126dc565b611060565b005b61045760048036038101906104529190612793565b6110fc565b005b610473600480360381019061046e919061285e565b611192565b005b61048f600480360381019061048a91906128bb565b611222565b60405161049c919061252b565b60405180910390f35b6104bf60048036038101906104ba9190612918565b6112c8565b005b6104db60048036038101906104d69190612989565b61135b565b005b6104f760048036038101906104f29190612793565b6113ec565b005b610513600480360381019061050e9190612a7a565b611482565b604051610520919061252b565b60405180910390f35b610543600480360381019061053e91906128bb565b611534565b604051610550919061252b565b60405180910390f35b610573600480360381019061056e9190612b24565b6115da565b005b61058f600480360381019061058a9190612b4f565b611662565b005b6105ab60048036038101906105a69190612b8d565b6116ed565b005b6105c760048036038101906105c29190611f48565b611780565b005b6105e360048036038101906105de919061285e565b611810565b005b6105ff60048036038101906105fa9190611ebc565b6118a0565b005b61061b60048036038101906106169190611ebc565b611ac6565b604051610628919061252b565b60405180910390f35b61064b60048036038101906106469190611ebc565b611b66565b005b61066760048036038101906106629190612793565b611bf0565b005b610683600480360381019061067e9190612c0b565b611c86565b6040516106939493929190612cd0565b60405180910390f35b6106b660048036038101906106b191906125d5565b611d38565b005b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca12f66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610749573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076d9190612d35565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663177d624f82336040518363ffffffff1660e01b81526004016107cc929190612d60565b5f604051808303815f87803b1580156107e3575f80fd5b505af11580156107f5573d5f803e3d5ffd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388843041848484336040518563ffffffff1660e01b815260040161085a9493929190612db3565b5f604051808303815f87803b158015610871575f80fd5b505af1158015610883573d5f803e3d5ffd5b50505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b6102208787878787876040518763ffffffff1660e01b81526004016108ee96959493929190612df1565b5f604051808303815f87803b158015610905575f80fd5b505af1158015610917573d5f803e3d5ffd5b50505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368a61273878787878787336040518863ffffffff1660e01b81526004016109879796959493929190612e50565b5f604051808303815f87803b15801561099e575f80fd5b505af11580156109b0573d5f803e3d5ffd5b50505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638baa81918686868686336040518763ffffffff1660e01b8152600401610a1e96959493929190612ed9565b5f604051808303815f87803b158015610a35575f80fd5b505af1158015610a47573d5f803e3d5ffd5b505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368f808e582336040518363ffffffff1660e01b8152600401610aac929190612f2e565b5f604051808303815f87803b158015610ac3575f80fd5b505af1158015610ad5573d5f803e3d5ffd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b20f45f848484336040518563ffffffff1660e01b8152600401610b3a9493929190612db3565b5f604051808303815f87803b158015610b51575f80fd5b505af1158015610b63573d5f803e3d5ffd5b50505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9b7fe6c878787878787336040518863ffffffff1660e01b8152600401610bd09796959493929190612f55565b5f604051808303815f87803b158015610be7575f80fd5b505af1158015610bf9573d5f803e3d5ffd5b50505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663404bf3eb8686868686336040518763ffffffff1660e01b8152600401610c6796959493929190612fd7565b5f604051808303815f87803b158015610c7e575f80fd5b505af1158015610c90573d5f803e3d5ffd5b505050505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344478e796040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610d06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2a9190613040565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166345a59e5b87878787876040518663ffffffff1660e01b8152600401610d9195949392919061306b565b602060405180830381865afa158015610dac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd09190613040565b905095945050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cbfa82e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e699190613040565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fe57e7a826040518263ffffffff1660e01b8152600401610ec69190611e37565b5f604051808303815f87803b158015610edd575f80fd5b505af1158015610eef573d5f803e3d5ffd5b5050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c906130fc565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e91b0e19878787878787336040518863ffffffff1660e01b815260040161102b979695949392919061311a565b5f604051808303815f87803b158015611042575f80fd5b505af1158015611054573d5f803e3d5ffd5b50505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b04c27688888888888888336040518963ffffffff1660e01b81526004016110c698979695949392919061319c565b5f604051808303815f87803b1580156110dd575f80fd5b505af11580156110ef573d5f803e3d5ffd5b5050505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a042bf408686868686336040518763ffffffff1660e01b815260040161115e9695949392919061320d565b5f604051808303815f87803b158015611175575f80fd5b505af1158015611187573d5f803e3d5ffd5b505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b5546564848484336040518563ffffffff1660e01b81526004016111f09493929190613281565b5f604051808303815f87803b158015611207575f80fd5b505af1158015611219573d5f803e3d5ffd5b50505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b568d768585856040518463ffffffff1660e01b8152600401611280939291906132bf565b602060405180830381865afa15801561129b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bf9190613040565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304e81f1e85858585336040518663ffffffff1660e01b81526004016113289594939291906132ef565b5f604051808303815f87803b15801561133f575f80fd5b505af1158015611351573d5f803e3d5ffd5b5050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638683c7fe858585856040518563ffffffff1660e01b81526004016113b9949392919061333b565b5f604051808303815f87803b1580156113d0575f80fd5b505af11580156113e2573d5f803e3d5ffd5b5050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d621d9578686868686336040518763ffffffff1660e01b815260040161144e9695949392919061320d565b5f604051808303815f87803b158015611465575f80fd5b505af1158015611477573d5f803e3d5ffd5b505050505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663936421d5898989898989896040518863ffffffff1660e01b81526004016114e897969594939291906133c8565b602060405180830381865afa158015611503573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115279190613040565b9050979650505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639bd381018585856040518463ffffffff1660e01b8152600401611592939291906132bf565b602060405180830381865afa1580156115ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d19190613040565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fc666b2826040518263ffffffff1660e01b8152600401611632919061252b565b5f604051808303815f87803b158015611649575f80fd5b505af115801561165b573d5f803e3d5ffd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a5843f0883836040518363ffffffff1660e01b81526004016116bc929190613430565b5f604051808303815f87803b1580156116d3575f80fd5b505af11580156116e5573d5f803e3d5ffd5b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca5adbe85858585336040518663ffffffff1660e01b815260040161174d959493929190613457565b5f604051808303815f87803b158015611764575f80fd5b505af1158015611776573d5f803e3d5ffd5b5050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c249912848484336040518563ffffffff1660e01b81526004016117de9493929190612db3565b5f604051808303815f87803b1580156117f5575f80fd5b505af1158015611807573d5f803e3d5ffd5b50505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633cf5f33b848484336040518563ffffffff1660e01b815260040161186e9493929190613281565b5f604051808303815f87803b158015611885575f80fd5b505af1158015611897573d5f803e3d5ffd5b50505050505050565b5f6118a9611dd1565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156118f15750825b90505f60018367ffffffffffffffff1614801561192457505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611932575080155b15611969576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156119b6576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b906134e8565b60405180910390fd5b8560025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315611abe575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611ab5919061355b565b60405180910390a15b505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1aa0c20836040518263ffffffff1660e01b8152600401611b209190611e37565b602060405180830381865afa158015611b3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5f9190613040565b9050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663349582a082336040518363ffffffff1660e01b8152600401611bc0929190612d60565b5f604051808303815f87803b158015611bd7575f80fd5b505af1158015611be9573d5f803e3d5ffd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ecad01d58686868686336040518763ffffffff1660e01b8152600401611c529695949392919061320d565b5f604051808303815f87803b158015611c69575f80fd5b505af1158015611c7b573d5f803e3d5ffd5b505050505050505050565b6060805f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f346a3a787876040518363ffffffff1660e01b8152600401611ce5929190613574565b5f60405180830381865afa158015611cff573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611d279190613618565b935093509350935092959194509250565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f75f0a06878787878787336040518863ffffffff1660e01b8152600401611d9c979695949392919061311a565b5f604051808303815f87803b158015611db3575f80fd5b505af1158015611dc5573d5f803e3d5ffd5b50505050505050505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e2182611df8565b9050919050565b611e3181611e17565b82525050565b5f602082019050611e4a5f830184611e28565b92915050565b5f819050919050565b611e6281611e50565b82525050565b5f602082019050611e7b5f830184611e59565b92915050565b5f604051905090565b5f80fd5b5f80fd5b611e9b81611e17565b8114611ea5575f80fd5b50565b5f81359050611eb681611e92565b92915050565b5f60208284031215611ed157611ed0611e8a565b5b5f611ede84828501611ea8565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f0857611f07611ee7565b5b8235905067ffffffffffffffff811115611f2557611f24611eeb565b5b602083019150836001820283011115611f4157611f40611eef565b5b9250929050565b5f805f60408486031215611f5f57611f5e611e8a565b5b5f84013567ffffffffffffffff811115611f7c57611f7b611e8e565b5b611f8886828701611ef3565b93509350506020611f9b86828701611ea8565b9150509250925092565b5f805f805f8060608789031215611fbf57611fbe611e8a565b5b5f87013567ffffffffffffffff811115611fdc57611fdb611e8e565b5b611fe889828a01611ef3565b9650965050602087013567ffffffffffffffff81111561200b5761200a611e8e565b5b61201789828a01611ef3565b9450945050604087013567ffffffffffffffff81111561203a57612039611e8e565b5b61204689828a01611ef3565b92509250509295509295509295565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61209f82612059565b810181811067ffffffffffffffff821117156120be576120bd612069565b5b80604052505050565b5f6120d0611e81565b90506120dc8282612096565b919050565b5f67ffffffffffffffff8211156120fb576120fa612069565b5b61210482612059565b9050602081019050919050565b828183375f83830152505050565b5f61213161212c846120e1565b6120c7565b90508281526020810184848401111561214d5761214c612055565b5b612158848285612111565b509392505050565b5f82601f83011261217457612173611ee7565b5b813561218484826020860161211f565b91505092915050565b5f61ffff82169050919050565b6121a38161218d565b81146121ad575f80fd5b50565b5f813590506121be8161219a565b92915050565b5f805f805f8060c087890312156121de576121dd611e8a565b5b5f87013567ffffffffffffffff8111156121fb576121fa611e8e565b5b61220789828a01612160565b965050602087013567ffffffffffffffff81111561222857612227611e8e565b5b61223489828a01612160565b955050604087013567ffffffffffffffff81111561225557612254611e8e565b5b61226189828a01612160565b945050606087013567ffffffffffffffff81111561228257612281611e8e565b5b61228e89828a01612160565b935050608061229f89828a016121b0565b92505060a06122b089828a016121b0565b9150509295509295509295565b5f805f805f606086880312156122d6576122d5611e8a565b5b5f6122e388828901611ea8565b955050602086013567ffffffffffffffff81111561230457612303611e8e565b5b61231088828901611ef3565b9450945050604086013567ffffffffffffffff81111561233357612332611e8e565b5b61233f88828901611ef3565b92509250509295509295909350565b61235781611e50565b8114612361575f80fd5b50565b5f813590506123728161234e565b92915050565b5f6020828403121561238d5761238c611e8a565b5b5f61239a84828501612364565b91505092915050565b5f805f805f8060c087890312156123bd576123bc611e8a565b5b5f87013567ffffffffffffffff8111156123da576123d9611e8e565b5b6123e689828a01612160565b965050602087013567ffffffffffffffff81111561240757612406611e8e565b5b61241389828a01612160565b955050604087013567ffffffffffffffff81111561243457612433611e8e565b5b61244089828a01612160565b945050606061245189828a016121b0565b935050608061246289828a016121b0565b92505060a061247389828a01612364565b9150509295509295509295565b5f805f805f6060868803121561249957612498611e8a565b5b5f86013567ffffffffffffffff8111156124b6576124b5611e8e565b5b6124c288828901611ef3565b955095505060206124d588828901611ea8565b935050604086013567ffffffffffffffff8111156124f6576124f5611e8e565b5b61250288828901611ef3565b92509250509295509295909350565b5f8115159050919050565b61252581612511565b82525050565b5f60208201905061253e5f83018461251c565b92915050565b5f805f805f6060868803121561255d5761255c611e8a565b5b5f86013567ffffffffffffffff81111561257a57612579611e8e565b5b61258688828901611ef3565b9550955050602086013567ffffffffffffffff8111156125a9576125a8611e8e565b5b6125b588828901611ef3565b935093505060406125c8888289016121b0565b9150509295509295909350565b5f805f805f8060c087890312156125ef576125ee611e8a565b5b5f87013567ffffffffffffffff81111561260c5761260b611e8e565b5b61261889828a01612160565b965050602087013567ffffffffffffffff81111561263957612638611e8e565b5b61264589828a01612160565b955050604087013567ffffffffffffffff81111561266657612665611e8e565b5b61267289828a01612160565b945050606061268389828a016121b0565b935050608061269489828a016121b0565b92505060a06126a589828a01611ea8565b9150509295509295509295565b6126bb81612511565b81146126c5575f80fd5b50565b5f813590506126d6816126b2565b92915050565b5f805f805f805f60a0888a0312156126f7576126f6611e8a565b5b5f88013567ffffffffffffffff81111561271457612713611e8e565b5b6127208a828b01611ef3565b9750975050602088013567ffffffffffffffff81111561274357612742611e8e565b5b61274f8a828b01611ef3565b955095505060406127628a828b01612364565b93505060606127738a828b016126c8565b92505060806127848a828b016126c8565b91505092959891949750929550565b5f805f805f60a086880312156127ac576127ab611e8a565b5b5f86013567ffffffffffffffff8111156127c9576127c8611e8e565b5b6127d588828901612160565b955050602086013567ffffffffffffffff8111156127f6576127f5611e8e565b5b61280288828901612160565b945050604086013567ffffffffffffffff81111561282357612822611e8e565b5b61282f88828901612160565b9350506060612840888289016121b0565b9250506080612851888289016121b0565b9150509295509295909350565b5f805f6040848603121561287557612874611e8a565b5b5f84013567ffffffffffffffff81111561289257612891611e8e565b5b61289e86828701611ef3565b935093505060206128b186828701612364565b9150509250925092565b5f805f604084860312156128d2576128d1611e8a565b5b5f6128df86828701611ea8565b935050602084013567ffffffffffffffff811115612900576128ff611e8e565b5b61290c86828701611ef3565b92509250509250925092565b5f805f80606085870312156129305761292f611e8a565b5b5f85013567ffffffffffffffff81111561294d5761294c611e8e565b5b61295987828801611ef3565b9450945050602061296c87828801611ea8565b925050604061297d87828801612364565b91505092959194509250565b5f805f80608085870312156129a1576129a0611e8a565b5b5f85013567ffffffffffffffff8111156129be576129bd611e8e565b5b6129ca87828801612160565b945050602085013567ffffffffffffffff8111156129eb576129ea611e8e565b5b6129f787828801612160565b9350506040612a08878288016121b0565b9250506060612a19878288016121b0565b91505092959194509250565b5f8083601f840112612a3a57612a39611ee7565b5b8235905067ffffffffffffffff811115612a5757612a56611eeb565b5b602083019150836001820283011115612a7357612a72611eef565b5b9250929050565b5f805f805f805f60c0888a031215612a9557612a94611e8a565b5b5f612aa28a828b01611ea8565b9750506020612ab38a828b01611ea8565b9650506040612ac48a828b01612364565b9550506060612ad58a828b01612364565b9450506080612ae68a828b01612364565b93505060a088013567ffffffffffffffff811115612b0757612b06611e8e565b5b612b138a828b01612a25565b925092505092959891949750929550565b5f60208284031215612b3957612b38611e8a565b5b5f612b46848285016126c8565b91505092915050565b5f8060408385031215612b6557612b64611e8a565b5b5f612b7285828601612364565b9250506020612b8385828601612364565b9150509250929050565b5f805f8060408587031215612ba557612ba4611e8a565b5b5f85013567ffffffffffffffff811115612bc257612bc1611e8e565b5b612bce87828801611ef3565b9450945050602085013567ffffffffffffffff811115612bf157612bf0611e8e565b5b612bfd87828801611ef3565b925092505092959194509250565b5f8060208385031215612c2157612c20611e8a565b5b5f83013567ffffffffffffffff811115612c3e57612c3d611e8e565b5b612c4a85828601611ef3565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c8d578082015181840152602081019050612c72565b5f8484015250505050565b5f612ca282612c56565b612cac8185612c60565b9350612cbc818560208601612c70565b612cc581612059565b840191505092915050565b5f6080820190508181035f830152612ce88187612c98565b90508181036020830152612cfc8186612c98565b9050612d0b6040830185611e28565b612d186060830184611e59565b95945050505050565b5f81519050612d2f8161234e565b92915050565b5f60208284031215612d4a57612d49611e8a565b5b5f612d5784828501612d21565b91505092915050565b5f604082019050612d735f830185611e28565b612d806020830184611e28565b9392505050565b5f612d928385612c60565b9350612d9f838584612111565b612da883612059565b840190509392505050565b5f6060820190508181035f830152612dcc818688612d87565b9050612ddb6020830185611e28565b612de86040830184611e28565b95945050505050565b5f6060820190508181035f830152612e0a81888a612d87565b90508181036020830152612e1f818688612d87565b90508181036040830152612e34818486612d87565b9050979650505050505050565b612e4a8161218d565b82525050565b5f60e0820190508181035f830152612e68818a612c98565b90508181036020830152612e7c8189612c98565b90508181036040830152612e908188612c98565b90508181036060830152612ea48187612c98565b9050612eb36080830186612e41565b612ec060a0830185612e41565b612ecd60c0830184611e28565b98975050505050505050565b5f608082019050612eec5f830189611e28565b8181036020830152612eff818789612d87565b90508181036040830152612f14818587612d87565b9050612f236060830184611e28565b979650505050505050565b5f604082019050612f415f830185611e59565b612f4e6020830184611e28565b9392505050565b5f60e0820190508181035f830152612f6d818a612c98565b90508181036020830152612f818189612c98565b90508181036040830152612f958188612c98565b9050612fa46060830187612e41565b612fb16080830186612e41565b612fbe60a0830185611e59565b612fcb60c0830184611e28565b98975050505050505050565b5f6080820190508181035f830152612ff081888a612d87565b9050612fff6020830187611e28565b8181036040830152613012818587612d87565b90506130216060830184611e28565b979650505050505050565b5f8151905061303a816126b2565b92915050565b5f6020828403121561305557613054611e8a565b5b5f6130628482850161302c565b91505092915050565b5f6060820190508181035f830152613084818789612d87565b90508181036020830152613099818587612d87565b90506130a86040830184612e41565b9695505050505050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f6130e6600e83612c60565b91506130f1826130b2565b602082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b5f60e0820190508181035f830152613132818a612c98565b905081810360208301526131468189612c98565b9050818103604083015261315a8188612c98565b90506131696060830187612e41565b6131766080830186612e41565b61318360a0830185611e28565b61319060c0830184611e28565b98975050505050505050565b5f60c0820190508181035f8301526131b5818a8c612d87565b905081810360208301526131ca81888a612d87565b90506131d96040830187611e59565b6131e6606083018661251c565b6131f3608083018561251c565b61320060a0830184611e28565b9998505050505050505050565b5f60c0820190508181035f8301526132258189612c98565b905081810360208301526132398188612c98565b9050818103604083015261324d8187612c98565b905061325c6060830186612e41565b6132696080830185612e41565b61327660a0830184611e28565b979650505050505050565b5f6060820190508181035f83015261329a818688612d87565b90506132a96020830185611e59565b6132b66040830184611e28565b95945050505050565b5f6040820190506132d25f830186611e28565b81810360208301526132e5818486612d87565b9050949350505050565b5f6080820190508181035f830152613308818789612d87565b90506133176020830186611e28565b6133246040830185611e59565b6133316060830184611e28565b9695505050505050565b5f6080820190508181035f8301526133538187612c98565b905081810360208301526133678186612c98565b90506133766040830185612e41565b6133836060830184612e41565b95945050505050565b5f82825260208201905092915050565b5f6133a7838561338c565b93506133b4838584612111565b6133bd83612059565b840190509392505050565b5f60c0820190506133db5f83018a611e28565b6133e86020830189611e28565b6133f56040830188611e59565b6134026060830187611e59565b61340f6080830186611e59565b81810360a083015261342281848661339c565b905098975050505050505050565b5f6040820190506134435f830185611e59565b6134506020830184611e59565b9392505050565b5f6060820190508181035f830152613470818789612d87565b90508181036020830152613485818587612d87565b90506134946040830184611e28565b9695505050505050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f6134d2601b83612c60565b91506134dd8261349e565b602082019050919050565b5f6020820190508181035f8301526134ff816134c6565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f61354561354061353b84613506565b613522565b61350f565b9050919050565b6135558161352b565b82525050565b5f60208201905061356e5f83018461354c565b92915050565b5f6020820190508181035f83015261358d818486612d87565b90509392505050565b5f6135a86135a3846120e1565b6120c7565b9050828152602081018484840111156135c4576135c3612055565b5b6135cf848285612c70565b509392505050565b5f82601f8301126135eb576135ea611ee7565b5b81516135fb848260208601613596565b91505092915050565b5f8151905061361281611e92565b92915050565b5f805f80608085870312156136305761362f611e8a565b5b5f85015167ffffffffffffffff81111561364d5761364c611e8e565b5b613659878288016135d7565b945050602085015167ffffffffffffffff81111561367a57613679611e8e565b5b613686878288016135d7565b935050604061369787828801613604565b92505060606136a887828801612d21565b9150509295919450925056fea26469706673582212208b657cba55f78d573c72003ae34722ef2fa79622d3eadc80d0e980f01eb3be8c64736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/PermissionsUpgradable.abi b/permission/v2/contract/gen/PermissionsUpgradable.abi index 035f83a651..27faabdbc6 100644 --- a/permission/v2/contract/gen/PermissionsUpgradable.abi +++ b/permission/v2/contract/gen/PermissionsUpgradable.abi @@ -1 +1 @@ -[{"constant":true,"inputs":[],"name":"getPermImpl","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_proposedImpl","type":"address"}],"name":"confirmImplChange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getGuardian","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPermInterface","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_permInterface","type":"address"},{"name":"_permImpl","type":"address"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_guardian","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"address","name":"_proposedImpl","type":"address"}],"name":"confirmImplChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPermImpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPermInterface","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_permInterface","type":"address"},{"internalType":"address","name":"_permImpl","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_guardian","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/PermissionsUpgradable.bin b/permission/v2/contract/gen/PermissionsUpgradable.bin index 7093f5907c..e0acf6881d 100644 --- a/permission/v2/contract/gen/PermissionsUpgradable.bin +++ b/permission/v2/contract/gen/PermissionsUpgradable.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516020806106e78339810180604052602081101561003057600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905560028054600160a01b60ff0219169055610675806100726000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630e32cf901461005c57806322bcb39a14610080578063a75b87d2146100a8578063e572515c146100b0578063f09a4016146100b8575b600080fd5b6100646100e6565b604080516001600160a01b039092168252519081900360200190f35b6100a66004803603602081101561009657600080fd5b50356001600160a01b03166100f5565b005b61006461030b565b61006461031a565b6100a6600480360360408110156100ce57600080fd5b506001600160a01b0381358116916020013516610329565b6001546001600160a01b031690565b6000546001600160a01b0316331461014b5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60608060606000600160009054906101000a90046001600160a01b03166001600160a01b031663cc9ba6fa6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101a057600080fd5b505afa1580156101b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156101dd57600080fd5b8101908080516401000000008111156101f557600080fd5b8201602081018481111561020857600080fd5b815164010000000081118282018710171561022257600080fd5b5050929190602001805164010000000081111561023e57600080fd5b8201602081018481111561025157600080fd5b815164010000000081118282018710171561026b57600080fd5b5050929190602001805164010000000081111561028757600080fd5b8201602081018481111561029a57600080fd5b81516401000000008111828201871017156102b457600080fd5b50506020909101519498509296509194509192506102d9915086905085858585610443565b600180546001600160a01b0319166001600160a01b03878116919091179182905561030491166105e4565b5050505050565b6000546001600160a01b031690565b6002546001600160a01b031690565b6000546001600160a01b0316331461037f5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b600254600160a01b900460ff16156103e15760408051600160e51b62461bcd02815260206004820152601960248201527f63616e206265206578656375746564206f6e6c79206f6e636500000000000000604482015290519081900360640190fd5b600180546001600160a01b038084166001600160a01b031992831617928390556002805486831693169290921790915561041b91166105e4565b50506002805474ff00000000000000000000000000000000000000001916600160a01b179055565b846001600160a01b031663f5ad584a858585856040518563ffffffff1660e01b81526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b838110156104b457818101518382015260200161049c565b50505050905090810190601f1680156104e15780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156105145781810151838201526020016104fc565b50505050905090810190601f1680156105415780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561057457818101518382015260200161055c565b50505050905090810190601f1680156105a15780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b1580156105c557600080fd5b505af11580156105d9573d6000803e3d6000fd5b505050505050505050565b60025460408051600160e01b63511bbd9f0281526001600160a01b0384811660048301529151919092169163511bbd9f91602480830192600092919082900301818387803b15801561063557600080fd5b505af1158015610304573d6000803e3d6000fdfea165627a7a7230582055489d1e43ffd1f6646b629ccf78d3fb7551dd246e111ec3ccbf9ae12f8b900a0029 \ No newline at end of file +608060405234801561000f575f80fd5b50610e0e8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c80630e32cf901461006457806322bcb39a14610082578063a75b87d21461009e578063c4d66de8146100bc578063e572515c146100d8578063f09a4016146100f6575b5f80fd5b61006c610112565b6040516100799190610879565b60405180910390f35b61009c600480360381019061009791906108cd565b61013a565b005b6100a66102e2565b6040516100b39190610879565b60405180910390f35b6100d660048036038101906100d191906108cd565b610309565b005b6100e0610548565b6040516100ed9190610879565b60405180910390f35b610110600480360381019061010b91906108f8565b610570565b005b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101be90610990565b60405180910390fd5b5f805f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc9ba6fa6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610234573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061025c9190610b39565b93509350935093506102718585858585610716565b8460015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610789565b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f610312610813565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561035a5750825b90505f60018367ffffffffffffffff1614801561038d57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b90508115801561039b575080155b156103d2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561041f576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610c3b565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600260146101000a81548160ff0219169083151502179055508315610540575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516105379190610cae565b60405180910390a15b505050505050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f490610990565b60405180910390fd5b600260149054906101000a900460ff161561064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064490610d11565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106f760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610789565b6001600260146101000a81548160ff0219169083151502179055505050565b8473ffffffffffffffffffffffffffffffffffffffff1663f5ad584a858585856040518563ffffffff1660e01b81526004016107559493929190610d80565b5f604051808303815f87803b15801561076c575f80fd5b505af115801561077e573d5f803e3d5ffd5b505050505050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663511bbd9f826040518263ffffffff1660e01b81526004016107e39190610879565b5f604051808303815f87803b1580156107fa575f80fd5b505af115801561080c573d5f803e3d5ffd5b5050505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108638261083a565b9050919050565b61087381610859565b82525050565b5f60208201905061088c5f83018461086a565b92915050565b5f604051905090565b5f80fd5b5f80fd5b6108ac81610859565b81146108b6575f80fd5b50565b5f813590506108c7816108a3565b92915050565b5f602082840312156108e2576108e161089b565b5b5f6108ef848285016108b9565b91505092915050565b5f806040838503121561090e5761090d61089b565b5b5f61091b858286016108b9565b925050602061092c858286016108b9565b9150509250929050565b5f82825260208201905092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f61097a600e83610936565b915061098582610946565b602082019050919050565b5f6020820190508181035f8301526109a78161096e565b9050919050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6109fc826109b6565b810181811067ffffffffffffffff82111715610a1b57610a1a6109c6565b5b80604052505050565b5f610a2d610892565b9050610a3982826109f3565b919050565b5f67ffffffffffffffff821115610a5857610a576109c6565b5b610a61826109b6565b9050602081019050919050565b5f5b83811015610a8b578082015181840152602081019050610a70565b5f8484015250505050565b5f610aa8610aa384610a3e565b610a24565b905082815260208101848484011115610ac457610ac36109b2565b5b610acf848285610a6e565b509392505050565b5f82601f830112610aeb57610aea6109ae565b5b8151610afb848260208601610a96565b91505092915050565b5f8115159050919050565b610b1881610b04565b8114610b22575f80fd5b50565b5f81519050610b3381610b0f565b92915050565b5f805f8060808587031215610b5157610b5061089b565b5b5f85015167ffffffffffffffff811115610b6e57610b6d61089f565b5b610b7a87828801610ad7565b945050602085015167ffffffffffffffff811115610b9b57610b9a61089f565b5b610ba787828801610ad7565b935050604085015167ffffffffffffffff811115610bc857610bc761089f565b5b610bd487828801610ad7565b9250506060610be587828801610b25565b91505092959194509250565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f610c25601b83610936565b9150610c3082610bf1565b602082019050919050565b5f6020820190508181035f830152610c5281610c19565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f610c98610c93610c8e84610c59565b610c75565b610c62565b9050919050565b610ca881610c7e565b82525050565b5f602082019050610cc15f830184610c9f565b92915050565b7f63616e206265206578656375746564206f6e6c79206f6e6365000000000000005f82015250565b5f610cfb601983610936565b9150610d0682610cc7565b602082019050919050565b5f6020820190508181035f830152610d2881610cef565b9050919050565b5f81519050919050565b5f610d4382610d2f565b610d4d8185610936565b9350610d5d818560208601610a6e565b610d66816109b6565b840191505092915050565b610d7a81610b04565b82525050565b5f6080820190508181035f830152610d988187610d39565b90508181036020830152610dac8186610d39565b90508181036040830152610dc08185610d39565b9050610dcf6060830184610d71565b9594505050505056fea2646970667358221220507a72071071039bd8292da30d8d5c1d14dc5d750f55bc7197d235f9adb7a70a64736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/RoleManager.abi b/permission/v2/contract/gen/RoleManager.abi index 21d547c460..9e1f998f4c 100644 --- a/permission/v2/contract/gen/RoleManager.abi +++ b/permission/v2/contract/gen/RoleManager.abi @@ -1 +1 @@ -[{"constant":true,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"}],"name":"getRoleDetails","outputs":[{"name":"roleId","type":"string"},{"name":"orgId","type":"string"},{"name":"accessType","type":"uint256"},{"name":"voter","type":"bool"},{"name":"admin","type":"bool"},{"name":"active","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_baseAccess","type":"uint256"},{"name":"_isVoter","type":"bool"},{"name":"_isAdmin","type":"bool"}],"name":"addRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getNumberOfRoles","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_rIndex","type":"uint256"}],"name":"getRoleDetailsFromIndex","outputs":[{"name":"roleId","type":"string"},{"name":"orgId","type":"string"},{"name":"accessType","type":"uint256"},{"name":"voter","type":"bool"},{"name":"admin","type":"bool"},{"name":"active","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"}],"name":"removeRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_ultParent","type":"string"}],"name":"roleExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_ultParent","type":"string"}],"name":"isAdminRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_ultParent","type":"string"}],"name":"roleAccess","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_ultParent","type":"string"},{"name":"_typeOfTxn","type":"uint256"}],"name":"transactionAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_roleId","type":"string"},{"name":"_orgId","type":"string"},{"name":"_ultParent","type":"string"}],"name":"isVoterRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_permUpgradable","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_roleId","type":"string"},{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_baseAccess","type":"uint256"},{"indexed":false,"name":"_isVoter","type":"bool"},{"indexed":false,"name":"_isAdmin","type":"bool"}],"name":"RoleCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_roleId","type":"string"},{"indexed":false,"name":"_orgId","type":"string"}],"name":"RoleRevoked","type":"event"}] \ No newline at end of file +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_roleId","type":"string"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"uint256","name":"_baseAccess","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_isVoter","type":"bool"},{"indexed":false,"internalType":"bool","name":"_isAdmin","type":"bool"}],"name":"RoleCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_roleId","type":"string"},{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"uint256","name":"_baseAccess","type":"uint256"},{"internalType":"bool","name":"_isVoter","type":"bool"},{"internalType":"bool","name":"_isAdmin","type":"bool"}],"name":"addRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAccessLevelForUnconfiguredAccount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfRoles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"getRoleDetails","outputs":[{"internalType":"string","name":"roleId","type":"string"},{"internalType":"string","name":"orgId","type":"string"},{"internalType":"uint256","name":"accessType","type":"uint256"},{"internalType":"bool","name":"voter","type":"bool"},{"internalType":"bool","name":"admin","type":"bool"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rIndex","type":"uint256"}],"name":"getRoleDetailsFromIndex","outputs":[{"internalType":"string","name":"roleId","type":"string"},{"internalType":"string","name":"orgId","type":"string"},{"internalType":"uint256","name":"accessType","type":"uint256"},{"internalType":"bool","name":"voter","type":"bool"},{"internalType":"bool","name":"admin","type":"bool"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_permUpgradable","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_ultParent","type":"string"}],"name":"isAdminRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"access","type":"uint256"},{"internalType":"uint256","name":"_typeOfTxn","type":"uint256"}],"name":"isTransactionAllowedBasedOnRoleAccess","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_ultParent","type":"string"}],"name":"isVoterRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"}],"name":"removeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_ultParent","type":"string"}],"name":"roleAccess","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_ultParent","type":"string"}],"name":"roleExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessLevel","type":"uint256"}],"name":"setAccessLevelForUnconfiguredAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_roleId","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_ultParent","type":"string"},{"internalType":"uint256","name":"_typeOfTxn","type":"uint256"}],"name":"transactionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/RoleManager.bin b/permission/v2/contract/gen/RoleManager.bin index 8e6c6153ef..4dc49cb19e 100644 --- a/permission/v2/contract/gen/RoleManager.bin +++ b/permission/v2/contract/gen/RoleManager.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516020806128d98339810180604052602081101561003057600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055612877806100626000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063abf5739f11610066578063abf5739f1461048e578063be322e5414610650578063cfc83dfa1461075e578063d1f778661461090c578063deb16ba714610a1a5761009e565b80631870aba3146100a35780637b7135791461025f57806387f55d3114610399578063a451d4a8146103b3578063a6343012146103d0575b600080fd5b610161600480360360408110156100b957600080fd5b810190602081018135600160201b8111156100d357600080fd5b8201836020820111156100e557600080fd5b803590602001918460018302840111600160201b8311171561010657600080fd5b919390929091602081019035600160201b81111561012357600080fd5b82018360208201111561013557600080fd5b803590602001918460018302840111600160201b8311171561015657600080fd5b509092509050610b28565b604080519081018590528315156060820152821515608082015281151560a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156101be5781810151838201526020016101a6565b50505050905090810190601f1680156101eb5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b8381101561021e578181015183820152602001610206565b50505050905090810190601f16801561024b5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b610397600480360360a081101561027557600080fd5b810190602081018135600160201b81111561028f57600080fd5b8201836020820111156102a157600080fd5b803590602001918460018302840111600160201b831117156102c257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561031457600080fd5b82018360208201111561032657600080fd5b803590602001918460018302840111600160201b8311171561034757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135151590604001351515610eae565b005b6103a1611454565b60408051918252519081900360200190f35b610161600480360360208110156103c957600080fd5b503561145b565b610397600480360360408110156103e657600080fd5b810190602081018135600160201b81111561040057600080fd5b82018360208201111561041257600080fd5b803590602001918460018302840111600160201b8311171561043357600080fd5b919390929091602081019035600160201b81111561045057600080fd5b82018360208201111561046257600080fd5b803590602001918460018302840111600160201b8311171561048357600080fd5b509092509050611679565b61063c600480360360608110156104a457600080fd5b810190602081018135600160201b8111156104be57600080fd5b8201836020820111156104d057600080fd5b803590602001918460018302840111600160201b831117156104f157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561054357600080fd5b82018360208201111561055557600080fd5b803590602001918460018302840111600160201b8311171561057657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105c857600080fd5b8201836020820111156105da57600080fd5b803590602001918460018302840111600160201b831117156105fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611974945050505050565b604080519115158252519081900360200190f35b61063c6004803603606081101561066657600080fd5b810190602081018135600160201b81111561068057600080fd5b82018360208201111561069257600080fd5b803590602001918460018302840111600160201b831117156106b357600080fd5b919390929091602081019035600160201b8111156106d057600080fd5b8201836020820111156106e257600080fd5b803590602001918460018302840111600160201b8311171561070357600080fd5b919390929091602081019035600160201b81111561072057600080fd5b82018360208201111561073257600080fd5b803590602001918460018302840111600160201b8311171561075357600080fd5b509092509050611be8565b6103a16004803603606081101561077457600080fd5b810190602081018135600160201b81111561078e57600080fd5b8201836020820111156107a057600080fd5b803590602001918460018302840111600160201b831117156107c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561081357600080fd5b82018360208201111561082557600080fd5b803590602001918460018302840111600160201b8311171561084657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561089857600080fd5b8201836020820111156108aa57600080fd5b803590602001918460018302840111600160201b831117156108cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f68945050505050565b61063c6004803603608081101561092257600080fd5b810190602081018135600160201b81111561093c57600080fd5b82018360208201111561094e57600080fd5b803590602001918460018302840111600160201b8311171561096f57600080fd5b919390929091602081019035600160201b81111561098c57600080fd5b82018360208201111561099e57600080fd5b803590602001918460018302840111600160201b831117156109bf57600080fd5b919390929091602081019035600160201b8111156109dc57600080fd5b8201836020820111156109ee57600080fd5b803590602001918460018302840111600160201b83111715610a0f57600080fd5b9193509150356121c2565b61063c60048036036060811015610a3057600080fd5b810190602081018135600160201b811115610a4a57600080fd5b820183602082011115610a5c57600080fd5b803590602001918460018302840111600160201b83111715610a7d57600080fd5b919390929091602081019035600160201b811115610a9a57600080fd5b820183602082011115610aac57600080fd5b803590602001918460018302840111600160201b83111715610acd57600080fd5b919390929091602081019035600160201b811115610aea57600080fd5b820183602082011115610afc57600080fd5b803590602001918460018302840111600160201b83111715610b1d57600080fd5b50909250905061232e565b606080600080600080610bb28a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092018290525060408051602081019091529081529250611974915050565b1515610c1c57898960008060008085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152939f50929d50959b509399509197509550610ea1945050505050565b6000610c918b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c90819084018382808284376000920191909152506126a392505050565b9050600181815481101515610ca257fe5b9060005260206000209060040201600001600182815481101515610cc257fe5b9060005260206000209060040201600101600183815481101515610ce257fe5b906000526020600020906004020160020154600184815481101515610d0357fe5b60009182526020909120600360049092020101546001805460ff9092169186908110610d2b57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610d5957fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff169290918891830182828015610dfe5780601f10610dd357610100808354040283529160200191610dfe565b820191906000526020600020905b815481529060010190602001808311610de157829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015610e8c5780601f10610e6157610100808354040283529160200191610e8c565b820191906000526020600020905b815481529060010190602001808311610e6f57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610efb57600080fd5b505afa158015610f0f573d6000803e3d6000fd5b505050506040513d6020811015610f2557600080fd5b50516001600160a01b03163314610f7a5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60088310610fd25760408051600160e51b62461bcd02815260206004820152601460248201527f696e76616c6964206163636573732076616c7565000000000000000000000000604482015290519081900360640190fd5b600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561101c578181015183820152602001611004565b50505050905090810190601f1680156110495780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561107c578181015183820152602001611064565b50505050905090810190601f1680156110a95780820380516001836020036101000a031916815260200191505b5094505050505060405160208183030381529060405280519060200120815260200190815260200160002054600014151561112e5760408051600160e51b62461bcd02815260206004820152601760248201527f726f6c652065786973747320666f7220746865206f7267000000000000000000604482015290519081900360640190fd5b60038054600101908190556040805160208082018381528951606084015289516002946000948c948c94938493830192608001918701908083838b5b8381101561118257818101518382015260200161116a565b50505050905090810190601f1680156111af5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208852878201989098529587016000908120989098555050845160c0810186528b81528085018b905294850189905250505084151560608301528315156080830152600160a083018190528054808201808355919094528251805191946004027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601926112b9928492909101906127b3565b5060208281015180516112d292600185019201906127b3565b5060408281015160028301556060808401516003909301805460808087015160a09788015160ff199093169615159690961761ff001916610100961515969096029590951762ff0000191662010000911515919091021790558151918201889052861515908201528415159181019190915281815287519181019190915286517fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c92508791879187918791879190819060208083019160c08401918a019080838360005b838110156113ae578181015183820152602001611396565b50505050905090810190601f1680156113db5780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b8381101561140e5781810151838201526020016113f6565b50505050905090810190601f16801561143b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6001545b90565b60608060008060008060018781548110151561147357fe5b906000526020600020906004020160000160018881548110151561149357fe5b90600052602060002090600402016001016001898154811015156114b357fe5b90600052602060002090600402016002015460018a8154811015156114d457fe5b60009182526020909120600360049092020101546001805460ff909216918c9081106114fc57fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c81548110151561152a57fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff1692909188918301828280156115cf5780601f106115a4576101008083540402835291602001916115cf565b820191906000526020600020905b8154815290600101906020018083116115b257829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a94509250840190508282801561165d5780601f106116325761010080835404028352916020019161165d565b820191906000526020600020905b81548152906001019060200180831161164057829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c657600080fd5b505afa1580156116da573d6000803e3d6000fd5b505050506040513d60208110156116f057600080fd5b50516001600160a01b031633146117455760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60026000858585856040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515156118315760408051600160e51b62461bcd02815260206004820152601360248201527f726f6c6520646f6573206e6f7420657869737400000000000000000000000000604482015290519081900360640190fd5b60006118a685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284376000920191909152506126a392505050565b905060006001828154811015156118b957fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156119c15781810151838201526020016119a9565b50505050905090810190601f1680156119ee5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a21578181015183820152602001611a09565b50505050905090810190601f168015611a4e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611ac557611a8d85856126a3565b9050600181815481101515611a9e57fe5b906000526020600020906004020160030160029054906101000a900460ff16915050611be1565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611b0f578181015183820152602001611af7565b50505050905090810190601f168015611b3c5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611b6f578181015183820152602001611b57565b50505050905090810190601f168015611b9c5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611bdb57611a8d85846126a3565b60009150505b9392505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3757600080fd5b505afa158015611c4b573d6000803e3d6000fd5b505050506040513d6020811015611c6157600080fd5b50516001600160a01b03163314611cb65760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b611d5d87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061197492505050565b1515611d6b57506000611f5e565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611e8257611e7b88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a91508990819084018382808284376000920191909152506126a392505050565b9050611ef8565b611ef588888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506126a392505050565b90505b6001805482908110611f0657fe5b906000526020600020906004020160030160029054906101000a900460ff168015611f5a57506001805482908110611f3a57fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611fb5578181015183820152602001611f9d565b50505050905090810190601f168015611fe25780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612015578181015183820152602001611ffd565b50505050905090810190601f1680156120425780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156120ac5761208185856126a3565b905060018181548110151561209257fe5b906000526020600020906004020160020154915050611be1565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156120f65781810151838201526020016120de565b50505050905090810190601f1680156121235780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561215657818101518382015260200161213e565b50505050905090810190601f1680156121835780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611bdb5761208185846126a3565b60008061226c89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611f6892505050565b90508060031415612281576001915050612323565b8260011480156122a65750806001148061229b5750806005145b806122a65750806006145b156122b5576001915050612323565b8260021480156122da575080600214806122cf5750806006145b806122da5750806007145b156122e9576001915050612323565b82600314801561230e575080600414806123035750806005145b8061230e5750806007145b1561231d576001915050612323565b60009150505b979650505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561237d57600080fd5b505afa158015612391573d6000803e3d6000fd5b505050506040513d60208110156123a757600080fd5b50516001600160a01b031633146123fc5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b6124a387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061197492505050565b15156124b157506000611f5e565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f82011690508083019250505096505050505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156125c8576125c188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a91508990819084018382808284376000920191909152506126a392505050565b905061263e565b61263b88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506126a392505050565b90505b600180548290811061264c57fe5b906000526020600020906004020160030160029054906101000a900460ff168015611f5a5750600180548290811061268057fe5b600091825260209091206004909102016003015460ff1698975050505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156126f15781810151838201526020016126d9565b50505050905090810190601f16801561271e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612751578181015183820152602001612739565b50505050905090810190601f16801561277e5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127f457805160ff1916838001178555612821565b82800160010185558215612821579182015b82811115612821578251825591602001919060010190612806565b5061282d929150612831565b5090565b61145891905b8082111561282d576000815560010161283756fea165627a7a7230582075c8fd5504ba38b54f31bd0f3c28ac8ef88060c8e359bff58088d242f8cd256c0029 \ No newline at end of file +608060405234801561000f575f80fd5b50612dfd8061001d5f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c8063abf5739f1161008a578063cfc83dfa11610064578063cfc83dfa14610262578063d1f7786614610292578063deb16ba7146102c2578063e4604b61146102f2576100e8565b8063abf5739f146101e6578063be322e5414610216578063c4d66de814610246576100e8565b80637b713579116100c65780637b7135791461015b57806387f55d3114610177578063a451d4a814610195578063a6343012146101ca576100e8565b80630dca12f6146100ec5780631870aba31461010a5780633965c04a1461013f575b5f80fd5b6100f4610322565b6040516101019190611e93565b60405180910390f35b610124600480360381019061011f9190611f1e565b61032b565b60405161013696959493929190612040565b60405180910390f35b610159600480360381019061015491906120d7565b610708565b005b61017560048036038101906101709190612254565b61085b565b005b61017f610ba0565b60405161018c9190611e93565b60405180910390f35b6101af60048036038101906101aa91906120d7565b610bac565b6040516101c196959493929190612040565b60405180910390f35b6101e460048036038101906101df9190611f1e565b610dd7565b005b61020060048036038101906101fb9190612303565b611061565b60405161020d91906123a7565b60405180910390f35b610230600480360381019061022b91906123c0565b611179565b60405161023d91906123a7565b60405180910390f35b610260600480360381019061025b91906124ca565b61153b565b005b61027c60048036038101906102779190612303565b611768565b6040516102899190611e93565b60405180910390f35b6102ac60048036038101906102a791906124f5565b611866565b6040516102b991906123a7565b60405180910390f35b6102dc60048036038101906102d791906123c0565b611956565b6040516102e991906123a7565b60405180910390f35b61030c600480360381019061030791906125b9565b611d17565b60405161031991906123a7565b60405180910390f35b5f600454905090565b6060805f805f806103d18a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505089898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505060405180602001604052805f815250611061565b61044b5789895f805f8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050945090919293945060405180602001604052805f815250939291909550955095509550955095506106fb565b5f6104dc8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b9050600181815481106104f2576104f16125f7565b5b905f5260205f2090600402015f0160018281548110610514576105136125f7565b5b905f5260205f20906004020160010160018381548110610537576105366125f7565b5b905f5260205f209060040201600201546001848154811061055b5761055a6125f7565b5b905f5260205f2090600402016003015f9054906101000a900460ff166001858154811061058b5761058a6125f7565b5b905f5260205f20906004020160030160019054906101000a900460ff16600186815481106105bc576105bb6125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff168580546105e590612651565b80601f016020809104026020016040519081016040528092919081815260200182805461061190612651565b801561065c5780601f106106335761010080835404028352916020019161065c565b820191905f5260205f20905b81548152906001019060200180831161063f57829003601f168201915b5050505050955084805461066f90612651565b80601f016020809104026020016040519081016040528092919081815260200182805461069b90612651565b80156106e65780601f106106bd576101008083540402835291602001916106e6565b820191905f5260205f20905b8154815290600101906020018083116106c957829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610770573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107949190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f89061270a565b60405180910390fd5b5f8110158015610812575060078111155b610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890612798565b60405180910390fd5b8060048190555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e79190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094b9061270a565b60405180910390fd5b60088310610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90612800565b60405180910390fd5b5f60025f87876040516020016109ae92919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f205414610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a099061289d565b60405180910390fd5b60035f815480929190610a24906128e8565b919050555060035460025f8787604051602001610a4292919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f208190555060016040518060c001604052808781526020018681526020018581526020018415158152602001831515815260200160011515815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f019081610ad89190612acc565b506020820151816001019081610aee9190612acc565b50604082015181600201556060820151816003015f6101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555050507fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c8585858585604051610b91959493929190612b9b565b60405180910390a15050505050565b5f600180549050905090565b6060805f805f8060018781548110610bc757610bc66125f7565b5b905f5260205f2090600402015f0160018881548110610be957610be86125f7565b5b905f5260205f20906004020160010160018981548110610c0c57610c0b6125f7565b5b905f5260205f2090600402016002015460018a81548110610c3057610c2f6125f7565b5b905f5260205f2090600402016003015f9054906101000a900460ff1660018b81548110610c6057610c5f6125f7565b5b905f5260205f20906004020160030160019054906101000a900460ff1660018c81548110610c9157610c906125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff16858054610cba90612651565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce690612651565b8015610d315780601f10610d0857610100808354040283529160200191610d31565b820191905f5260205f20905b815481529060010190602001808311610d1457829003601f168201915b50505050509550848054610d4490612651565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7090612651565b8015610dbb5780601f10610d9257610100808354040283529160200191610dbb565b820191905f5260205f20905b815481529060010190602001808311610d9e57829003601f168201915b5050505050945095509550955095509550955091939550919395565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e639190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec79061270a565b60405180910390fd5b5f60025f86868686604051602001610eeb9493929190612c26565b6040516020818303038152906040528051906020012081526020019081526020015f205403610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4690612ca9565b60405180910390fd5b5f610fe085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505084848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b90505f60018281548110610ff757610ff66125f7565b5b905f5260205f20906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040516110529493929190612c26565b60405180910390a15050505050565b5f805f60025f878760405160200161107a92919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f2054146110e8576110ad8585611dcf565b9050600181815481106110c3576110c26125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff16915050611172565b5f60025f87866040516020016110ff92919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f20541461116d576111328584611dcf565b905060018181548110611148576111476125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff16915050611172565b5f9150505b9392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112079190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126b9061270a565b60405180910390fd5b61134887878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611061565b611354575f9050611531565b5f8060025f8a8a8a8a6040516020016113709493929190612c26565b6040516020818303038152906040528051906020012081526020019081526020015f2054146114305761142988888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b90506114c3565b6114c088888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b90505b600181815481106114d7576114d66125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff16801561152d57506001818154811061150f5761150e6125f7565b5b905f5260205f20906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b5f611544611e54565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561158c5750825b90505f60018367ffffffffffffffff161480156115bf57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156115cd575080155b15611604576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611651576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690612d11565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060056004819055508315611760575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516117579190612d7b565b60405180910390a15b505050505050565b5f805f60025f878760405160200161178192919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f2054146117e2576117b48585611dcf565b9050600181815481106117ca576117c96125f7565b5b905f5260205f2090600402016002015491505061185f565b5f60025f87866040516020016117f992919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f20541461185a5761182c8584611dcf565b905060018181548110611842576118416125f7565b5b905f5260205f2090600402016002015491505061185f565b5f9150505b9392505050565b5f8061193c89898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505088888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611768565b90506119488184611d17565b915050979650505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e49190612695565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a489061270a565b60405180910390fd5b611b2587878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611061565b611b31575f9050611d0d565b5f8060025f8a8a8a8a604051602001611b4d9493929190612c26565b6040516020818303038152906040528051906020012081526020019081526020015f205414611c0d57611c0688888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505087878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b9050611ca0565b611c9d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611dcf565b90505b60018181548110611cb457611cb36125f7565b5b905f5260205f20906004020160030160029054906101000a900460ff168015611d09575060018181548110611cec57611ceb6125f7565b5b905f5260205f2090600402016003015f9054906101000a900460ff165b9150505b9695505050505050565b5f60038303611d295760019050611dc9565b600182148015611d4f57506001831480611d435750600583145b80611d4e5750600683145b5b15611d5d5760019050611dc9565b600282148015611d8357506002831480611d775750600683145b80611d825750600783145b5b15611d915760019050611dc9565b600382148015611db757506004831480611dab5750600583145b80611db65750600783145b5b15611dc55760019050611dc9565b5f90505b92915050565b5f8060025f8585604051602001611de792919061281e565b6040516020818303038152906040528051906020012081526020019081526020015f205490505f8103611e3d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050611e4e565b600181611e4a9190612d94565b9150505b92915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f819050919050565b611e8d81611e7b565b82525050565b5f602082019050611ea65f830184611e84565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ede57611edd611ebd565b5b8235905067ffffffffffffffff811115611efb57611efa611ec1565b5b602083019150836001820283011115611f1757611f16611ec5565b5b9250929050565b5f805f8060408587031215611f3657611f35611eb5565b5b5f85013567ffffffffffffffff811115611f5357611f52611eb9565b5b611f5f87828801611ec9565b9450945050602085013567ffffffffffffffff811115611f8257611f81611eb9565b5b611f8e87828801611ec9565b925092505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611fd3578082015181840152602081019050611fb8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611ff882611f9c565b6120028185611fa6565b9350612012818560208601611fb6565b61201b81611fde565b840191505092915050565b5f8115159050919050565b61203a81612026565b82525050565b5f60c0820190508181035f8301526120588189611fee565b9050818103602083015261206c8188611fee565b905061207b6040830187611e84565b6120886060830186612031565b6120956080830185612031565b6120a260a0830184612031565b979650505050505050565b6120b681611e7b565b81146120c0575f80fd5b50565b5f813590506120d1816120ad565b92915050565b5f602082840312156120ec576120eb611eb5565b5b5f6120f9848285016120c3565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61213c82611fde565b810181811067ffffffffffffffff8211171561215b5761215a612106565b5b80604052505050565b5f61216d611eac565b90506121798282612133565b919050565b5f67ffffffffffffffff82111561219857612197612106565b5b6121a182611fde565b9050602081019050919050565b828183375f83830152505050565b5f6121ce6121c98461217e565b612164565b9050828152602081018484840111156121ea576121e9612102565b5b6121f58482856121ae565b509392505050565b5f82601f83011261221157612210611ebd565b5b81356122218482602086016121bc565b91505092915050565b61223381612026565b811461223d575f80fd5b50565b5f8135905061224e8161222a565b92915050565b5f805f805f60a0868803121561226d5761226c611eb5565b5b5f86013567ffffffffffffffff81111561228a57612289611eb9565b5b612296888289016121fd565b955050602086013567ffffffffffffffff8111156122b7576122b6611eb9565b5b6122c3888289016121fd565b94505060406122d4888289016120c3565b93505060606122e588828901612240565b92505060806122f688828901612240565b9150509295509295909350565b5f805f6060848603121561231a57612319611eb5565b5b5f84013567ffffffffffffffff81111561233757612336611eb9565b5b612343868287016121fd565b935050602084013567ffffffffffffffff81111561236457612363611eb9565b5b612370868287016121fd565b925050604084013567ffffffffffffffff81111561239157612390611eb9565b5b61239d868287016121fd565b9150509250925092565b5f6020820190506123ba5f830184612031565b92915050565b5f805f805f80606087890312156123da576123d9611eb5565b5b5f87013567ffffffffffffffff8111156123f7576123f6611eb9565b5b61240389828a01611ec9565b9650965050602087013567ffffffffffffffff81111561242657612425611eb9565b5b61243289828a01611ec9565b9450945050604087013567ffffffffffffffff81111561245557612454611eb9565b5b61246189828a01611ec9565b92509250509295509295509295565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249982612470565b9050919050565b6124a98161248f565b81146124b3575f80fd5b50565b5f813590506124c4816124a0565b92915050565b5f602082840312156124df576124de611eb5565b5b5f6124ec848285016124b6565b91505092915050565b5f805f805f805f6080888a0312156125105761250f611eb5565b5b5f88013567ffffffffffffffff81111561252d5761252c611eb9565b5b6125398a828b01611ec9565b9750975050602088013567ffffffffffffffff81111561255c5761255b611eb9565b5b6125688a828b01611ec9565b9550955050604088013567ffffffffffffffff81111561258b5761258a611eb9565b5b6125978a828b01611ec9565b935093505060606125aa8a828b016120c3565b91505092959891949750929550565b5f80604083850312156125cf576125ce611eb5565b5b5f6125dc858286016120c3565b92505060206125ed858286016120c3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061266857607f821691505b60208210810361267b5761267a612624565b5b50919050565b5f8151905061268f816124a0565b92915050565b5f602082840312156126aa576126a9611eb5565b5b5f6126b784828501612681565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f6126f4600e83611fa6565b91506126ff826126c0565b602082019050919050565b5f6020820190508181035f830152612721816126e8565b9050919050565b7f6163636573734c6576656c2076616c75652073686f756c6420626520626574775f8201527f65656e203020746f203700000000000000000000000000000000000000000000602082015250565b5f612782602a83611fa6565b915061278d82612728565b604082019050919050565b5f6020820190508181035f8301526127af81612776565b9050919050565b7f696e76616c6964206163636573732076616c75650000000000000000000000005f82015250565b5f6127ea601483611fa6565b91506127f5826127b6565b602082019050919050565b5f6020820190508181035f830152612817816127de565b9050919050565b5f6040820190508181035f8301526128368185611fee565b9050818103602083015261284a8184611fee565b90509392505050565b7f726f6c652065786973747320666f7220746865206f72670000000000000000005f82015250565b5f612887601783611fa6565b915061289282612853565b602082019050919050565b5f6020820190508181035f8301526128b48161287b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128f282611e7b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612924576129236128bb565b5b600182019050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261298b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612950565b6129958683612950565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6129d06129cb6129c684611e7b565b6129ad565b611e7b565b9050919050565b5f819050919050565b6129e9836129b6565b6129fd6129f5826129d7565b84845461295c565b825550505050565b5f90565b612a11612a05565b612a1c8184846129e0565b505050565b5b81811015612a3f57612a345f82612a09565b600181019050612a22565b5050565b601f821115612a8457612a558161292f565b612a5e84612941565b81016020851015612a6d578190505b612a81612a7985612941565b830182612a21565b50505b505050565b5f82821c905092915050565b5f612aa45f1984600802612a89565b1980831691505092915050565b5f612abc8383612a95565b9150826002028217905092915050565b612ad582611f9c565b67ffffffffffffffff811115612aee57612aed612106565b5b612af88254612651565b612b03828285612a43565b5f60209050601f831160018114612b34575f8415612b22578287015190505b612b2c8582612ab1565b865550612b93565b601f198416612b428661292f565b5f5b82811015612b6957848901518255600182019150602085019450602081019050612b44565b86831015612b865784890151612b82601f891682612a95565b8355505b6001600288020188555050505b505050505050565b5f60a0820190508181035f830152612bb38188611fee565b90508181036020830152612bc78187611fee565b9050612bd66040830186611e84565b612be36060830185612031565b612bf06080830184612031565b9695505050505050565b5f612c058385611fa6565b9350612c128385846121ae565b612c1b83611fde565b840190509392505050565b5f6040820190508181035f830152612c3f818688612bfa565b90508181036020830152612c54818486612bfa565b905095945050505050565b7f726f6c6520646f6573206e6f74206578697374000000000000000000000000005f82015250565b5f612c93601383611fa6565b9150612c9e82612c5f565b602082019050919050565b5f6020820190508181035f830152612cc081612c87565b9050919050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f612cfb601b83611fa6565b9150612d0682612cc7565b602082019050919050565b5f6020820190508181035f830152612d2881612cef565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f612d65612d60612d5b84612d2f565b6129ad565b612d38565b9050919050565b612d7581612d4b565b82525050565b5f602082019050612d8e5f830184612d6c565b92915050565b5f612d9e82611e7b565b9150612da983611e7b565b9250828203905081811115612dc157612dc06128bb565b5b9291505056fea2646970667358221220f65df7a9d4714df03659bba153a556321e9f52ce9ea307c88d815986d7af715264736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/VoterManager.abi b/permission/v2/contract/gen/VoterManager.abi index 10c875209b..93a18fd4c4 100644 --- a/permission/v2/contract/gen/VoterManager.abi +++ b/permission/v2/contract/gen/VoterManager.abi @@ -1 +1 @@ -[{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getPendingOpDetails","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_vAccount","type":"address"}],"name":"addVoter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_vAccount","type":"address"}],"name":"deleteVoter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_authOrg","type":"string"},{"name":"_vAccount","type":"address"},{"name":"_pendingOp","type":"uint256"}],"name":"processVote","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_authOrg","type":"string"},{"name":"_orgId","type":"string"},{"name":"_enodeId","type":"string"},{"name":"_account","type":"address"},{"name":"_pendingOp","type":"uint256"}],"name":"addVotingItem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_permUpgradable","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_vAccount","type":"address"}],"name":"VoterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_vAccount","type":"address"}],"name":"VoterDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"}],"name":"VotingItemAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"}],"name":"VoteProcessed","type":"event"}] \ No newline at end of file +[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"VoteProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"address","name":"_vAccount","type":"address"}],"name":"VoterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_orgId","type":"string"},{"indexed":false,"internalType":"address","name":"_vAccount","type":"address"}],"name":"VoterDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_orgId","type":"string"}],"name":"VotingItemAdded","type":"event"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_vAccount","type":"address"}],"name":"addVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_authOrg","type":"string"},{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"string","name":"_enodeId","type":"string"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_pendingOp","type":"uint256"}],"name":"addVotingItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"},{"internalType":"address","name":"_vAccount","type":"address"}],"name":"deleteVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_orgId","type":"string"}],"name":"getPendingOpDetails","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_permUpgradable","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_authOrg","type":"string"},{"internalType":"address","name":"_vAccount","type":"address"},{"internalType":"uint256","name":"_pendingOp","type":"uint256"}],"name":"processVote","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/permission/v2/contract/gen/VoterManager.bin b/permission/v2/contract/gen/VoterManager.bin index 9d9cde004b..0a43532f3e 100644 --- a/permission/v2/contract/gen/VoterManager.bin +++ b/permission/v2/contract/gen/VoterManager.bin @@ -1 +1 @@ -6080604052600060035534801561001557600080fd5b50604051602080611fe48339810180604052602081101561003557600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055611f7d806100676000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063014e6acc1461005c5780635607395b146101c857806359cbd6fe14610241578063b0213864146102b8578063e98ac22d14610349575b600080fd5b6100ca6004803603602081101561007257600080fd5b810190602081018135600160201b81111561008c57600080fd5b82018360208201111561009e57600080fd5b803590602001918460018302840111600160201b831117156100bf57600080fd5b509092509050610466565b604051808060200180602001856001600160a01b03166001600160a01b03168152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015610129578181015183820152602001610111565b50505050905090810190601f1680156101565780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61023f600480360360408110156101de57600080fd5b810190602081018135600160201b8111156101f857600080fd5b82018360208201111561020a57600080fd5b803590602001918460018302840111600160201b8311171561022b57600080fd5b9193509150356001600160a01b0316610740565b005b61023f6004803603604081101561025757600080fd5b810190602081018135600160201b81111561027157600080fd5b82018360208201111561028357600080fd5b803590602001918460018302840111600160201b831117156102a457600080fd5b9193509150356001600160a01b0316610f06565b610335600480360360608110156102ce57600080fd5b810190602081018135600160201b8111156102e857600080fd5b8201836020820111156102fa57600080fd5b803590602001918460018302840111600160201b8311171561031b57600080fd5b91935091506001600160a01b0381351690602001356111e8565b604080519115158252519081900360200190f35b61023f600480360360a081101561035f57600080fd5b810190602081018135600160201b81111561037957600080fd5b82018360208201111561038b57600080fd5b803590602001918460018302840111600160201b831117156103ac57600080fd5b919390929091602081019035600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b919390929091602081019035600160201b81111561041957600080fd5b82018360208201111561042b57600080fd5b803590602001918460018302840111600160201b8311171561044c57600080fd5b91935091506001600160a01b0381351690602001356116f8565b6060806000806000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b957600080fd5b505afa1580156104cd573d6000803e3d6000fd5b505050506040513d60208110156104e357600080fd5b50516001600160a01b031633146105385760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b600061057987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b905060018181548110151561058a57fe5b90600052602060002090600b02016004016000016001828154811015156105ad57fe5b90600052602060002090600b02016004016001016001838154811015156105d057fe5b600091825260209091206006600b909202010154600180546001600160a01b0390921691859081106105fe57fe5b60009182526020918290206007600b909202010154845460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928691908301828280156106995780601f1061066e57610100808354040283529160200191610699565b820191906000526020600020905b81548152906001019060200180831161067c57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156107275780601f106106fc57610100808354040283529160200191610727565b820191906000526020600020905b81548152906001019060200180831161070a57829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561078d57600080fd5b505afa1580156107a1573d6000803e3d6000fd5b505050506040513d60208110156107b757600080fd5b50516001600160a01b0316331461080c5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60026000848460405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415610b78576003805460010190819055604080516020808201908152918101859052600291600091879187918190606001848480828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020819055506000600180548091906001016109069190611cdd565b9050838360018381548110151561091957fe5b6000918252602090912061093393600b9092020191611d0e565b506001808281548110151561094457fe5b90600052602060002090600b0201600101819055506001808281548110151561096957fe5b90600052602060002090600b020160020181905550600060018281548110151561098f57fe5b90600052602060002090600b020160030181905550604051806020016040528060008152506001828154811015156109c357fe5b90600052602060002090600b020160040160000190805190602001906109ea929190611d8c565b506040805160208101909152600081526001805483908110610a0857fe5b90600052602060002090600b02016004016001019080519060200190610a2f929190611d8c565b506000600182815481101515610a4157fe5b600091825260208220600b919091020160060180546001600160a01b0319166001600160a01b0393909316929092179091556001805483908110610a8157fe5b600091825260209091206007600b9092020101556001805482908110610aa357fe5b90600052602060002090600b020160010154600182815481101515610ac457fe5b600091825260208083206001600160a01b03871684526009600b9093020191909101905260409020556001805482908110610afb57fe5b60009182526020808320604080518082019091526001600160a01b0387811682526001828501818152600b969096029093016008018054938401815586529290942093519301805492516001600160a01b03199093169390911692909217600160a01b60ff021916600160a01b9115159190910217905550610e90565b6000610bb984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b9050600181815481101515610bca57fe5b600091825260208083206001600160a01b03861684526009600b9093020191909101905260409020541515610d2c576001805482908110610c0757fe5b600091825260209091206001600b909202018101805482019055805482908110610c2d57fe5b90600052602060002090600b020160010154600182815481101515610c4e57fe5b600091825260208083206001600160a01b03871684526009600b9093020191909101905260409020556001805482908110610c8557fe5b60009182526020808320604080518082019091526001600160a01b0387811682526001828501818152600b96909602909301600801805480850182559087529390952090519201805493516001600160a01b03199094169290941691909117600160a01b60ff021916600160a01b9215159290920291909117909155805482908110610d0d57fe5b600091825260209091206002600b909202010180546001019055610e8e565b6000610d6f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611ba5915050565b9050600182815481101515610d8057fe5b90600052602060002090600b020160080181815481101515610d9e57fe5b600091825260209091200154600160a01b900460ff16151560011415610e0e5760408051600160e51b62461bcd02815260206004820152600f60248201527f616c7265616479206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b60018083815481101515610e1e57fe5b90600052602060002090600b020160080182815481101515610e3c57fe5b60009182526020909120018054911515600160a01b02600160a01b60ff02199092169190911790556001805483908110610e7257fe5b600091825260209091206002600b909202010180546001019055505b505b604080516001600160a01b03831660208201528181529081018390527f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574908490849084908060608101858580828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610f5357600080fd5b505afa158015610f67573d6000803e3d6000fd5b505050506040513d6020811015610f7d57600080fd5b50516001600160a01b03163314610fd25760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250611016915083905082611bf7565b15156001146110645760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e36bab9ba1031329030903b37ba32b902604482015290519081900360640190fd5b60006110a586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b905060006110ea87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611ba5915050565b90506001828154811015156110fb57fe5b6000918252602082206002600b90920201018054600019019055600180548490811061112357fe5b90600052602060002090600b02016008018281548110151561114157fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b68787876040518080602001836001600160a01b03166001600160a01b031681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561123757600080fd5b505afa15801561124b573d6000803e3d6000fd5b505050506040513d602081101561126157600080fd5b50516001600160a01b031633146112b65760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506112fa915083905082611bf7565b15156001146113485760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e36bab9ba1031329030903b37ba32b902604482015290519081900360640190fd5b61138987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250611ca7915050565b15156001146113e25760408051600160e51b62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061142388888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b905060018181548110151561143457fe5b60009182526020808320848452600a600b9093020191909101815260408083206001600160a01b038a16845290915290205460ff161515600114156114c35760408051600160e51b62461bcd02815260206004820152601260248201527f63616e6e6f7420646f75626c6520766f74650000000000000000000000000000604482015290519081900360640190fd5b60018054829081106114d157fe5b600091825260209091206003600b90920201018054600190810190915580548190839081106114fc57fe5b60009182526020808320858452600b92909202909101600a01815260408083206001600160a01b038b168452825291829020805460ff19169315159390931790925580518281529182018990527f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a160026001828154811015156115ac57fe5b90600052602060002090600b0201600201548115156115c757fe5b046001828154811015156115d757fe5b90600052602060002090600b02016003015411156116e857604080516020810190915260008152600180548390811061160c57fe5b90600052602060002090600b02016004016000019080519060200190611633929190611d8c565b50604080516020810190915260008152600180548390811061165157fe5b90600052602060002090600b02016004016001019080519060200190611678929190611d8c565b50600060018281548110151561168a57fe5b600091825260208220600b919091020160060180546001600160a01b0319166001600160a01b03939093169290921790915560018054839081106116ca57fe5b600091825260209091206007600b90920201015550600192506116ee565b60009350505b5050949350505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561174557600080fd5b505afa158015611759573d6000803e3d6000fd5b505050506040513d602081101561176f57600080fd5b50516001600160a01b031633146117c45760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b61180388888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611ca7915050565b151561184357604051600160e51b62461bcd028152600401808060200182810382526034815260200180611f1e6034913960400191505060405180910390fd5b600061188489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611afd92505050565b9050868660018381548110151561189757fe5b90600052602060002090600b020160040160000191906118b8929190611d0e565b5084846001838154811015156118ca57fe5b90600052602060002090600b020160040160010191906118eb929190611d0e565b50826001828154811015156118fc57fe5b90600052602060002090600b020160040160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508160018281548110151561194457fe5b6000918252602082206007600b9092020101919091555b600180548390811061196957fe5b90600052602060002090600b020160080180549050811015611a6b57600180548390811061199357fe5b90600052602060002090600b0201600801818154811015156119b157fe5b600091825260209091200154600160a01b900460ff1615611a635760006001838154811015156119dd57fe5b90600052602060002090600b0201600a0160008481526020019081526020016000206000600185815481101515611a1057fe5b90600052602060002090600b020160080184815481101515611a2e57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b60010161195b565b506000600182815481101515611a7d57fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611b46578181015183820152602001611b2e565b50505050905090810190601f168015611b735780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b600080611bb184611afd565b905060018082815481101515611bc357fe5b600091825260208083206001600160a01b03881684526009600b909302019190910190526040902054039150505b92915050565b600080611c0384611afd565b9050600181815481101515611c1457fe5b600091825260208083206001600160a01b03871684526009600b9093020191909101905260409020541515611c4d576000915050611bf1565b6000611c598585611ba5565b9050600182815481101515611c6a57fe5b90600052602060002090600b020160080181815481101515611c8857fe5b600091825260209091200154600160a01b900460ff1695945050505050565b6000816001611cb585611afd565b81548110611cbf57fe5b90600052602060002090600b02016004016003015414905092915050565b815481835581811115611d0957600b0281600b028360005260206000209182019101611d099190611dfa565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611d4f5782800160ff19823516178555611d7c565b82800160010185558215611d7c579182015b82811115611d7c578235825591602001919060010190611d61565b50611d88929150611e7f565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dcd57805160ff1916838001178555611d7c565b82800160010185558215611d7c579182015b82811115611d7c578251825591602001919060010190611ddf565b611e7c91905b80821115611d88576000611e148282611e99565b60006001830181905560028301819055600383018190556004830190611e3a8282611e99565b611e48600183016000611e99565b506002810180546001600160a01b031916905560006003909101819055611e73906008840190611ee0565b50600b01611e00565b90565b611e7c91905b80821115611d885760008155600101611e85565b50805460018160011615610100020316600290046000825580601f10611ebf5750611edd565b601f016020900490600052602060002090810190611edd9190611e7f565b50565b5080546000825590600052602060002090810190611edd9190611e7c91905b80821115611d885780546001600160a81b0319168155600101611eff56fe6974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a723058207dc9a68c6931494f043f7420dfa8288733d9a3a676ed30b4ac8e9cc704bd928b0029 \ No newline at end of file +60806040525f600355348015610013575f80fd5b50612d52806100215f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c8063014e6acc146100645780635607395b1461009757806359cbd6fe146100b3578063b0213864146100cf578063c4d66de8146100ff578063e98ac22d1461011b575b5f80fd5b61007e60048036038101906100799190611fd5565b610137565b60405161008e9493929190612101565b60405180910390f35b6100b160048036038101906100ac919061217c565b610462565b005b6100cd60048036038101906100c8919061217c565b610d73565b005b6100e960048036038101906100e49190612203565b611073565b6040516100f6919061228e565b60405180910390f35b610119600480360381019061011491906122a7565b61161f565b005b610135600480360381019061013091906122d2565b611844565b005b6060805f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c891906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022c90612432565b60405180910390fd5b5f61028287878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b90506001818154811061029857610297612450565b5b905f5260205f2090600b02016004015f01600182815481106102bd576102bc612450565b5b905f5260205f2090600b0201600401600101600183815481106102e3576102e2612450565b5b905f5260205f2090600b02016004016002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001848154811061032957610328612450565b5b905f5260205f2090600b020160040160030154838054610348906124aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610374906124aa565b80156103bf5780601f10610396576101008083540402835291602001916103bf565b820191905f5260205f20905b8154815290600101906020018083116103a257829003601f168201915b505050505093508280546103d2906124aa565b80601f01602080910402602001604051908101604052809291908181526020018280546103fe906124aa565b80156104495780601f1061042057610100808354040283529160200191610449565b820191905f5260205f20905b81548152906001019060200180831161042c57829003601f168201915b5050505050925094509450945094505092959194509250565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ee91906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461055b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055290612432565b60405180910390fd5b5f60025f8585604051602001610572929190612514565b6040516020818303038152906040528051906020012081526020019081526020015f2054036109365760035f8154809291906105ad90612563565b919050555060035460025f85856040516020016105cb929190612514565b6040516020818303038152906040528051906020012081526020019081526020015f20819055505f60018054905090506001808160018154018082558091505003905f5260205f2090505083836001838154811061062c5761062b612450565b5b905f5260205f2090600b02015f01918261064792919061277e565b50600180828154811061065d5761065c612450565b5b905f5260205f2090600b020160010181905550600180828154811061068557610684612450565b5b905f5260205f2090600b0201600201819055505f600182815481106106ad576106ac612450565b5b905f5260205f2090600b02016003018190555060405180602001604052805f815250600182815481106106e3576106e2612450565b5b905f5260205f2090600b02016004015f019081610700919061284b565b5060405180602001604052805f8152506001828154811061072457610723612450565b5b905f5260205f2090600b02016004016001019081610742919061284b565b505f6001828154811061075857610757612450565b5b905f5260205f2090600b02016004016002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600182815481106107bc576107bb612450565b5b905f5260205f2090600b020160040160030181905550600181815481106107e6576107e5612450565b5b905f5260205f2090600b0201600101546001828154811061080a57610809612450565b5b905f5260205f2090600b02016009015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001818154811061086c5761086b612450565b5b905f5260205f2090600b020160080160405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548160ff021916908315150217905550505050610d33565b5f61098384848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b90505f6001828154811061099a57610999612450565b5b905f5260205f2090600b02016009015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610bbd57600181815481106109fe576109fd612450565b5b905f5260205f2090600b02016001015f815480929190610a1d90612563565b919050555060018181548110610a3657610a35612450565b5b905f5260205f2090600b02016001015460018281548110610a5a57610a59612450565b5b905f5260205f2090600b02016009015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060018181548110610abc57610abb612450565b5b905f5260205f2090600b020160080160405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548160ff021916908315150217905550505060018181548110610b9457610b93612450565b5b905f5260205f2090600b02016002015f815480929190610bb390612563565b9190505550610d31565b5f610c0b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505084611d73565b90506001151560018381548110610c2557610c24612450565b5b905f5260205f2090600b02016008018281548110610c4657610c45612450565b5b905f5260205f20015f0160149054906101000a900460ff16151503610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790612964565b60405180910390fd5b6001808381548110610cb557610cb4612450565b5b905f5260205f2090600b02016008018281548110610cd657610cd5612450565b5b905f5260205f20015f0160146101000a81548160ff02191690831515021790555060018281548110610d0b57610d0a612450565b5b905f5260205f2090600b02016002015f815480929190610d2a90612563565b9190505550505b505b7f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574838383604051610d6693929190612982565b60405180910390a1505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff91906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390612432565b60405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508160011515610ebf8383611e2b565b151514610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef8906129fc565b60405180910390fd5b5f610f4e86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b90505f610f9e87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505086611d73565b905060018281548110610fb457610fb3612450565b5b905f5260205f2090600b02016002015f815480929190610fd390612a1a565b91905055505f60018381548110610fed57610fec612450565b5b905f5260205f2090600b0201600801828154811061100e5761100d612450565b5b905f5260205f20015f0160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b687878760405161106293929190612982565b60405180910390a150505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110191906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461116e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116590612432565b60405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505083600115156111c18383611e2b565b151514611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa906129fc565b60405180910390fd5b6001151561125488888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505086611f0b565b151514611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612a8b565b60405180910390fd5b5f6112e388888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b905060011515600182815481106112fd576112fc612450565b5b905f5260205f2090600b0201600a015f8381526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90612af3565b60405180910390fd5b600181815481106113b9576113b8612450565b5b905f5260205f2090600b02016003015f8154809291906113d890612563565b919050555060018082815481106113f2576113f1612450565b5b905f5260205f2090600b0201600a015f8381526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b435088888604051611492929190612514565b60405180910390a16002600182815481106114b0576114af612450565b5b905f5260205f2090600b0201600201546114ca9190612b3e565b600182815481106114de576114dd612450565b5b905f5260205f2090600b02016003015411156116105760405180602001604052805f8152506001828154811061151757611516612450565b5b905f5260205f2090600b02016004015f019081611534919061284b565b5060405180602001604052805f8152506001828154811061155857611557612450565b5b905f5260205f2090600b02016004016001019081611576919061284b565b505f6001828154811061158c5761158b612450565b5b905f5260205f2090600b02016004016002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600182815481106115f0576115ef612450565b5b905f5260205f2090600b0201600401600301819055506001935050611615565b5f9350505b5050949350505050565b5f611628611f45565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156116705750825b90505f60018367ffffffffffffffff161480156116a357505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156116b1575080155b156116e8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611735576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90612bb8565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550831561183c575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516118339190612c22565b60405180910390a15b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d091906123bd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193490612432565b60405180910390fd5b61198a88888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050505f611f0b565b6119c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c090612cab565b60405180910390fd5b5f611a1689898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611cf1565b9050868660018381548110611a2e57611a2d612450565b5b905f5260205f2090600b02016004015f019182611a4c92919061277e565b50848460018381548110611a6357611a62612450565b5b905f5260205f2090600b02016004016001019182611a8292919061277e565b508260018281548110611a9857611a97612450565b5b905f5260205f2090600b02016004016002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160018281548110611afc57611afb612450565b5b905f5260205f2090600b0201600401600301819055505f5b60018281548110611b2857611b27612450565b5b905f5260205f2090600b020160080180549050811015611c845760018281548110611b5657611b55612450565b5b905f5260205f2090600b02016008018181548110611b7757611b76612450565b5b905f5260205f20015f0160149054906101000a900460ff1615611c77575f60018381548110611ba957611ba8612450565b5b905f5260205f2090600b0201600a015f8481526020019081526020015f205f60018581548110611bdc57611bdb612450565b5b905f5260205f2090600b02016008018481548110611bfd57611bfc612450565b5b905f5260205f20015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b8080600101915050611b14565b505f60018281548110611c9a57611c99612450565b5b905f5260205f2090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca38989604051611cde929190612514565b60405180910390a1505050505050505050565b5f8060025f84604051602001611d079190612cc9565b6040516020818303038152906040528051906020012081526020019081526020015f205490505f8103611d5d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050611d6e565b600181611d6a9190612ce9565b9150505b919050565b5f80611d7e84611cf1565b90505f60018281548110611d9557611d94612450565b5b905f5260205f2090600b02016009015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8103611e13577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92505050611e25565b600181611e209190612ce9565b925050505b92915050565b5f80611e3684611cf1565b90505f60018281548110611e4d57611e4c612450565b5b905f5260205f2090600b02016009015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403611ea6575f915050611f05565b5f611eb18585611d73565b905060018281548110611ec757611ec6612450565b5b905f5260205f2090600b02016008018181548110611ee857611ee7612450565b5b905f5260205f20015f0160149054906101000a900460ff16925050505b92915050565b5f816001611f1885611cf1565b81548110611f2957611f28612450565b5b905f5260205f2090600b02016004016003015414905092915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f9557611f94611f74565b5b8235905067ffffffffffffffff811115611fb257611fb1611f78565b5b602083019150836001820283011115611fce57611fcd611f7c565b5b9250929050565b5f8060208385031215611feb57611fea611f6c565b5b5f83013567ffffffffffffffff81111561200857612007611f70565b5b61201485828601611f80565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561205757808201518184015260208101905061203c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61207c82612020565b612086818561202a565b935061209681856020860161203a565b61209f81612062565b840191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120d3826120aa565b9050919050565b6120e3816120c9565b82525050565b5f819050919050565b6120fb816120e9565b82525050565b5f6080820190508181035f8301526121198187612072565b9050818103602083015261212d8186612072565b905061213c60408301856120da565b61214960608301846120f2565b95945050505050565b61215b816120c9565b8114612165575f80fd5b50565b5f8135905061217681612152565b92915050565b5f805f6040848603121561219357612192611f6c565b5b5f84013567ffffffffffffffff8111156121b0576121af611f70565b5b6121bc86828701611f80565b935093505060206121cf86828701612168565b9150509250925092565b6121e2816120e9565b81146121ec575f80fd5b50565b5f813590506121fd816121d9565b92915050565b5f805f806060858703121561221b5761221a611f6c565b5b5f85013567ffffffffffffffff81111561223857612237611f70565b5b61224487828801611f80565b9450945050602061225787828801612168565b9250506040612268878288016121ef565b91505092959194509250565b5f8115159050919050565b61228881612274565b82525050565b5f6020820190506122a15f83018461227f565b92915050565b5f602082840312156122bc576122bb611f6c565b5b5f6122c984828501612168565b91505092915050565b5f805f805f805f8060a0898b0312156122ee576122ed611f6c565b5b5f89013567ffffffffffffffff81111561230b5761230a611f70565b5b6123178b828c01611f80565b9850985050602089013567ffffffffffffffff81111561233a57612339611f70565b5b6123468b828c01611f80565b9650965050604089013567ffffffffffffffff81111561236957612368611f70565b5b6123758b828c01611f80565b945094505060606123888b828c01612168565b92505060806123998b828c016121ef565b9150509295985092959890939650565b5f815190506123b781612152565b92915050565b5f602082840312156123d2576123d1611f6c565b5b5f6123df848285016123a9565b91505092915050565b7f696e76616c69642063616c6c65720000000000000000000000000000000000005f82015250565b5f61241c600e8361202a565b9150612427826123e8565b602082019050919050565b5f6020820190508181035f83015261244981612410565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124c157607f821691505b6020821081036124d4576124d361247d565b5b50919050565b828183375f83830152505050565b5f6124f3838561202a565b93506125008385846124da565b61250983612062565b840190509392505050565b5f6020820190508181035f83015261252d8184866124e8565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61256d826120e9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361259f5761259e612536565b5b600182019050919050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261263d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612602565b6126478683612602565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61268261267d612678846120e9565b61265f565b6120e9565b9050919050565b5f819050919050565b61269b83612668565b6126af6126a782612689565b84845461260e565b825550505050565b5f90565b6126c36126b7565b6126ce818484612692565b505050565b5b818110156126f1576126e65f826126bb565b6001810190506126d4565b5050565b601f82111561273657612707816125e1565b612710846125f3565b8101602085101561271f578190505b61273361272b856125f3565b8301826126d3565b50505b505050565b5f82821c905092915050565b5f6127565f198460080261273b565b1980831691505092915050565b5f61276e8383612747565b9150826002028217905092915050565b61278883836125aa565b67ffffffffffffffff8111156127a1576127a06125b4565b5b6127ab82546124aa565b6127b68282856126f5565b5f601f8311600181146127e3575f84156127d1578287013590505b6127db8582612763565b865550612842565b601f1984166127f1866125e1565b5f5b82811015612818578489013582556001820191506020850194506020810190506127f3565b868310156128355784890135612831601f891682612747565b8355505b6001600288020188555050505b50505050505050565b61285482612020565b67ffffffffffffffff81111561286d5761286c6125b4565b5b61287782546124aa565b6128828282856126f5565b5f60209050601f8311600181146128b3575f84156128a1578287015190505b6128ab8582612763565b865550612912565b601f1984166128c1866125e1565b5f5b828110156128e8578489015182556001820191506020850194506020810190506128c3565b868310156129055784890151612901601f891682612747565b8355505b6001600288020188555050505b505050505050565b7f616c7265616479206120766f74657200000000000000000000000000000000005f82015250565b5f61294e600f8361202a565b91506129598261291a565b602082019050919050565b5f6020820190508181035f83015261297b81612942565b9050919050565b5f6040820190508181035f83015261299b8185876124e8565b90506129aa60208301846120da565b949350505050565b7f6d757374206265206120766f74657200000000000000000000000000000000005f82015250565b5f6129e6600f8361202a565b91506129f1826129b2565b602082019050919050565b5f6020820190508181035f830152612a13816129da565b9050919050565b5f612a24826120e9565b91505f8203612a3657612a35612536565b5b600182039050919050565b7f6e6f7468696e6720746f20617070726f766500000000000000000000000000005f82015250565b5f612a7560128361202a565b9150612a8082612a41565b602082019050919050565b5f6020820190508181035f830152612aa281612a69565b9050919050565b7f63616e6e6f7420646f75626c6520766f746500000000000000000000000000005f82015250565b5f612add60128361202a565b9150612ae882612aa9565b602082019050919050565b5f6020820190508181035f830152612b0a81612ad1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b48826120e9565b9150612b53836120e9565b925082612b6357612b62612b11565b5b828204905092915050565b7f43616e6e6f742073657420746f20656d707479206164647265737300000000005f82015250565b5f612ba2601b8361202a565b9150612bad82612b6e565b602082019050919050565b5f6020820190508181035f830152612bcf81612b96565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f612c0c612c07612c0284612bd6565b61265f565b612bdf565b9050919050565b612c1c81612bf2565b82525050565b5f602082019050612c355f830184612c13565b92915050565b7f6974656d732070656e64696e6720666f7220617070726f76616c2e206e6577205f8201527f6974656d2063616e6e6f74206265206164646564000000000000000000000000602082015250565b5f612c9560348361202a565b9150612ca082612c3b565b604082019050919050565b5f6020820190508181035f830152612cc281612c89565b9050919050565b5f6020820190508181035f830152612ce18184612072565b905092915050565b5f612cf3826120e9565b9150612cfe836120e9565b9250828203905081811115612d1657612d15612536565b5b9291505056fea26469706673582212200e739070aa6d77efa044c7c065c37ef5f85890f577daa7b3aefe64a17e0cb78564736f6c63430008180033 \ No newline at end of file diff --git a/permission/v2/contract/gen/gen.go b/permission/v2/contract/gen/gen.go index 1c622e2a16..8fe84da539 100644 --- a/permission/v2/contract/gen/gen.go +++ b/permission/v2/contract/gen/gen.go @@ -3,7 +3,7 @@ // this is to generate go binding for smart contracts used in permissioning // // Require: -// 1. solc 0.5.4 +// 1. solc 0.8.1 // 2. abigen (make all from root) //go:generate solc --abi --bin -o . --overwrite ../AccountManager.sol @@ -14,14 +14,18 @@ //go:generate solc --abi --bin -o . --overwrite ../PermissionsUpgradable.sol //go:generate solc --abi --bin -o . --overwrite ../RoleManager.sol //go:generate solc --abi --bin -o . --overwrite ../VoterManager.sol +//go:generate solc --abi --bin -o . --overwrite ../ContractWhitelistManager.sol +//go:generate solc --abi --bin -o . --overwrite ../openzeppelin-v5/Initializable.sol +//go:generate solc --abi --bin -o . --overwrite ../openzeppelin-v5/EnumerableSet.sol -//go:generate abigen -pkg bind -abi ./AccountManager.abi -bin ./AccountManager.bin -type AcctManager -out ../../bind/accounts.go -//go:generate abigen -pkg bind -abi ./NodeManager.abi -bin ./NodeManager.bin -type NodeManager -out ../../bind/nodes.go -//go:generate abigen -pkg bind -abi ./OrgManager.abi -bin ./OrgManager.bin -type OrgManager -out ../../bind/org.go -//go:generate abigen -pkg bind -abi ./PermissionsImplementation.abi -bin ./PermissionsImplementation.bin -type PermImpl -out ../../bind/permission_impl.go -//go:generate abigen -pkg bind -abi ./PermissionsInterface.abi -bin ./PermissionsInterface.bin -type PermInterface -out ../../bind/permission_interface.go -//go:generate abigen -pkg bind -abi ./PermissionsUpgradable.abi -bin ./PermissionsUpgradable.bin -type permUpgr -out ../../bind/permission_upgr.go -//go:generate abigen -pkg bind -abi ./RoleManager.abi -bin ./RoleManager.bin -type RoleManager -out ../../bind/roles.go -//go:generate abigen -pkg bind -abi ./VoterManager.abi -bin ./VoterManager.bin -type VoterManager -out ../../bind/voter.go +//go:generate abigen -pkg bind -abi ./AccountManager.abi -bin ./AccountManager.bin -type AcctManager -out ../../bind/accounts.go --alias Initialized=InitializedAccs +//go:generate abigen -pkg bind -abi ./NodeManager.abi -bin ./NodeManager.bin -type NodeManager -out ../../bind/nodes.go --alias Initialized=InitializedNodes +//go:generate abigen -pkg bind -abi ./OrgManager.abi -bin ./OrgManager.bin -type OrgManager -out ../../bind/org.go --alias Initialized=InitializedOrg +//go:generate abigen -pkg bind -abi ./PermissionsImplementation.abi -bin ./PermissionsImplementation.bin -type PermImpl -out ../../bind/permission_impl.go --alias Initialized=InitializedPermImpl +//go:generate abigen -pkg bind -abi ./PermissionsInterface.abi -bin ./PermissionsInterface.bin -type PermInterface -out ../../bind/permission_interface.go --alias Initialized=InitializedPermIface +//go:generate abigen -pkg bind -abi ./PermissionsUpgradable.abi -bin ./PermissionsUpgradable.bin -type permUpgr -out ../../bind/permission_upgr.go --alias Initialized=Initialized +//go:generate abigen -pkg bind -abi ./RoleManager.abi -bin ./RoleManager.bin -type RoleManager -out ../../bind/roles.go --alias Initialized=InitializedRoles +//go:generate abigen -pkg bind -abi ./VoterManager.abi -bin ./VoterManager.bin -type VoterManager -out ../../bind/voter.go --alias Initialized=InitializedVoter +//go:generate abigen -pkg bind -abi ./ContractWhitelistManager.abi -bin ./ContractWhitelistManager.bin -type ContractWhitelistManager -out ../../bind/whitelist.go --alias Initialized=InitializedWhitelist package gen diff --git a/permission/v2/contract/openzeppelin-v5/EnumerableSet.sol b/permission/v2/contract/openzeppelin-v5/EnumerableSet.sol new file mode 100644 index 0000000000..2bef9514e3 --- /dev/null +++ b/permission/v2/contract/openzeppelin-v5/EnumerableSet.sol @@ -0,0 +1,423 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.0.0) (utils/structs/EnumerableSet.sol) +// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js. + +pragma solidity ^0.8.17; + +/** + * @dev Library for managing + * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive + * types. + * + * Sets have the following properties: + * + * - Elements are added, removed, and checked for existence in constant time + * (O(1)). + * - Elements are enumerated in O(n). No guarantees are made on the ordering. + * + * ```solidity + * contract Example { + * // Add the library methods + * using EnumerableSet for EnumerableSet.AddressSet; + * + * // Declare a set state variable + * EnumerableSet.AddressSet private mySet; + * } + * ``` + * + * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) + * and `uint256` (`UintSet`) are supported. + * + * [WARNING] + * ==== + * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure + * unusable. + * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. + * + * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an + * array of EnumerableSet. + * ==== + */ +library EnumerableSet { + // To implement this library for multiple types with as little code + // repetition as possible, we write it in terms of a generic Set type with + // bytes32 values. + // The Set implementation uses private functions, and user-facing + // implementations (such as AddressSet) are just wrappers around the + // underlying Set. + // This means that we can only create new EnumerableSets for types that fit + // in bytes32. + + struct Set { + // Storage of set values + bytes32[] _values; + // Position is the index of the value in the `values` array plus 1. + // Position 0 is used to mean a value is not in the set. + mapping(bytes32 => uint256) _positions; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function _add(Set storage set, bytes32 value) private returns (bool) { + if (!_contains(set, value)) { + set._values.push(value); + // The value is stored at length-1, but we add 1 to all indexes + // and use 0 as a sentinel value + set._positions[value] = set._values.length; + return true; + } else { + return false; + } + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function _remove(Set storage set, bytes32 value) private returns (bool) { + // We cache the value's position to prevent multiple reads from the same storage slot + uint256 position = set._positions[value]; + + if (position != 0) { + // Equivalent to contains(set, value) + // To delete an element from the _values array in O(1), we swap the element to delete with the last one in + // the array, and then remove the last element (sometimes called as 'swap and pop'). + // This modifies the order of the array, as noted in {at}. + + uint256 valueIndex = position - 1; + uint256 lastIndex = set._values.length - 1; + + if (valueIndex != lastIndex) { + bytes32 lastValue = set._values[lastIndex]; + + // Move the lastValue to the index where the value to delete is + set._values[valueIndex] = lastValue; + // Update the tracked position of the lastValue (that was just moved) + set._positions[lastValue] = position; + } + + // Delete the slot where the moved value was stored + set._values.pop(); + + // Delete the tracked position for the deleted slot + delete set._positions[value]; + + return true; + } else { + return false; + } + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function _contains( + Set storage set, + bytes32 value + ) private view returns (bool) { + return set._positions[value] != 0; + } + + /** + * @dev Returns the number of values on the set. O(1). + */ + function _length(Set storage set) private view returns (uint256) { + return set._values.length; + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function _at( + Set storage set, + uint256 index + ) private view returns (bytes32) { + return set._values[index]; + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function _values(Set storage set) private view returns (bytes32[] memory) { + return set._values; + } + + // Bytes32Set + + struct Bytes32Set { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add( + Bytes32Set storage set, + bytes32 value + ) internal returns (bool) { + return _add(set._inner, value); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove( + Bytes32Set storage set, + bytes32 value + ) internal returns (bool) { + return _remove(set._inner, value); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains( + Bytes32Set storage set, + bytes32 value + ) internal view returns (bool) { + return _contains(set._inner, value); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(Bytes32Set storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at( + Bytes32Set storage set, + uint256 index + ) internal view returns (bytes32) { + return _at(set._inner, index); + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values( + Bytes32Set storage set + ) internal view returns (bytes32[] memory) { + bytes32[] memory store = _values(set._inner); + bytes32[] memory result; + + /// @solidity memory-safe-assembly + assembly { + result := store + } + + return result; + } + + // AddressSet + + struct AddressSet { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add( + AddressSet storage set, + address value + ) internal returns (bool) { + return _add(set._inner, bytes32(uint256(uint160(value)))); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove( + AddressSet storage set, + address value + ) internal returns (bool) { + return _remove(set._inner, bytes32(uint256(uint160(value)))); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains( + AddressSet storage set, + address value + ) internal view returns (bool) { + return _contains(set._inner, bytes32(uint256(uint160(value)))); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(AddressSet storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at( + AddressSet storage set, + uint256 index + ) internal view returns (address) { + return address(uint160(uint256(_at(set._inner, index)))); + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values( + AddressSet storage set + ) internal view returns (address[] memory) { + bytes32[] memory store = _values(set._inner); + address[] memory result; + + /// @solidity memory-safe-assembly + assembly { + result := store + } + + return result; + } + + // UintSet + + struct UintSet { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(UintSet storage set, uint256 value) internal returns (bool) { + return _add(set._inner, bytes32(value)); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove( + UintSet storage set, + uint256 value + ) internal returns (bool) { + return _remove(set._inner, bytes32(value)); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains( + UintSet storage set, + uint256 value + ) internal view returns (bool) { + return _contains(set._inner, bytes32(value)); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(UintSet storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at( + UintSet storage set, + uint256 index + ) internal view returns (uint256) { + return uint256(_at(set._inner, index)); + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values( + UintSet storage set + ) internal view returns (uint256[] memory) { + bytes32[] memory store = _values(set._inner); + uint256[] memory result; + + /// @solidity memory-safe-assembly + assembly { + result := store + } + + return result; + } +} diff --git a/permission/v2/contract/openzeppelin-v5/Initializable.sol b/permission/v2/contract/openzeppelin-v5/Initializable.sol new file mode 100644 index 0000000000..f8b8e8848b --- /dev/null +++ b/permission/v2/contract/openzeppelin-v5/Initializable.sol @@ -0,0 +1,233 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol) + +/** + NOTE: The current OpenZeppelin library used in this repo is 4.7.3. To take advantage of specific OpenZeppelin contract version 5.0.0 - Initializable.sol contract, + and without the need of upgrading the whole OpenZeppelin to v5 that can introduce potential risk of breaking changes, + therefore a copy of Initializable.sol is explicitly kept here. - John + */ +pragma solidity ^0.8.17; + +/** + * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed + * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an + * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer + * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. + * + * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be + * reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in + * case an upgrade adds a module that needs to be initialized. + * + * For example: + * + * [.hljs-theme-light.nopadding] + * ```solidity + * contract MyToken is ERC20Upgradeable { + * function initialize() initializer public { + * __ERC20_init("MyToken", "MTK"); + * } + * } + * + * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { + * function initializeV2() reinitializer(2) public { + * __ERC20Permit_init("MyToken"); + * } + * } + * ``` + * + * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as + * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. + * + * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure + * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. + * + * [CAUTION] + * ==== + * Avoid leaving a contract uninitialized. + * + * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation + * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke + * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: + * + * [.hljs-theme-light.nopadding] + * ``` + * /// @custom:oz-upgrades-unsafe-allow constructor + * constructor() { + * _disableInitializers(); + * } + * ``` + * ==== + */ +abstract contract Initializable { + /** + * @dev Storage of the initializable contract. + * + * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions + * when using with upgradeable contracts. + * + * @custom:storage-location erc7201:openzeppelin.storage.Initializable + */ + struct InitializableStorage { + /** + * @dev Indicates that the contract has been initialized. + */ + uint64 _initialized; + /** + * @dev Indicates that the contract is in the process of being initialized. + */ + bool _initializing; + } + + // keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.Initializable")) - 1)) & ~bytes32(uint256(0xff)) + bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00; + + /** + * @dev The contract is already initialized. + */ + error InvalidInitialization(); + + /** + * @dev The contract is not initializing. + */ + error NotInitializing(); + + /** + * @dev Triggered when the contract has been initialized or reinitialized. + */ + event Initialized(uint64 version); + + /** + * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope, + * `onlyInitializing` functions can be used to initialize parent contracts. + * + * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any + * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in + * production. + * + * Emits an {Initialized} event. + */ + modifier initializer() { + // solhint-disable-next-line var-name-mixedcase + InitializableStorage storage $ = _getInitializableStorage(); + + // Cache values to avoid duplicated sloads + bool isTopLevelCall = !$._initializing; + uint64 initialized = $._initialized; + + // Allowed calls: + // - initialSetup: the contract is not in the initializing state and no previous version was + // initialized + // - construction: the contract is initialized at version 1 (no reininitialization) and the + // current contract is just being deployed + bool initialSetup = initialized == 0 && isTopLevelCall; + bool construction = initialized == 1 && address(this).code.length == 0; + + if (!initialSetup && !construction) { + revert InvalidInitialization(); + } + $._initialized = 1; + if (isTopLevelCall) { + $._initializing = true; + } + _; + if (isTopLevelCall) { + $._initializing = false; + emit Initialized(1); + } + } + + /** + * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the + * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be + * used to initialize parent contracts. + * + * A reinitializer may be used after the original initialization step. This is essential to configure modules that + * are added through upgrades and that require initialization. + * + * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer` + * cannot be nested. If one is invoked in the context of another, execution will revert. + * + * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in + * a contract, executing them in the right order is up to the developer or operator. + * + * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization. + * + * Emits an {Initialized} event. + */ + modifier reinitializer(uint64 version) { + // solhint-disable-next-line var-name-mixedcase + InitializableStorage storage $ = _getInitializableStorage(); + + if ($._initializing || $._initialized >= version) { + revert InvalidInitialization(); + } + $._initialized = version; + $._initializing = true; + _; + $._initializing = false; + emit Initialized(version); + } + + /** + * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the + * {initializer} and {reinitializer} modifiers, directly or indirectly. + */ + modifier onlyInitializing() { + _checkInitializing(); + _; + } + + /** + * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}. + */ + function _checkInitializing() internal view virtual { + if (!_isInitializing()) { + revert NotInitializing(); + } + } + + /** + * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call. + * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized + * to any version. It is recommended to use this to lock implementation contracts that are designed to be called + * through proxies. + * + * Emits an {Initialized} event the first time it is successfully executed. + */ + function _disableInitializers() internal virtual { + // solhint-disable-next-line var-name-mixedcase + InitializableStorage storage $ = _getInitializableStorage(); + + if ($._initializing) { + revert InvalidInitialization(); + } + if ($._initialized != type(uint64).max) { + $._initialized = type(uint64).max; + emit Initialized(type(uint64).max); + } + } + + /** + * @dev Returns the highest version that has been initialized. See {reinitializer}. + */ + function _getInitializedVersion() internal view returns (uint64) { + return _getInitializableStorage()._initialized; + } + + /** + * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}. + */ + function _isInitializing() internal view returns (bool) { + return _getInitializableStorage()._initializing; + } + + /** + * @dev Returns a pointer to the storage namespace. + */ + // solhint-disable-next-line var-name-mixedcase + function _getInitializableStorage() private pure returns (InitializableStorage storage $) { + assembly { + $.slot := INITIALIZABLE_STORAGE + } + } +} \ No newline at end of file