From 9a2a3f5b2ef2c98457187d20c92c8600dd497b29 Mon Sep 17 00:00:00 2001 From: vsmk98 Date: Wed, 2 Oct 2019 23:43:24 +0800 Subject: [PATCH] permission: added cache rebuild when an evicted item is accessed for permission checks --- core/types/permissions_cache.go | 162 +++++++++++++++--- permission/bind/accounts.go | 2 +- permission/bind/nodes.go | 2 +- permission/bind/org.go | 66 ++++--- permission/bind/permission_impl.go | 2 +- permission/bind/permission_interface.go | 2 +- permission/bind/permission_upgr.go | 2 +- permission/bind/roles.go | 2 +- permission/bind/voter.go | 2 +- permission/contract/NodeManager.sol | 3 + permission/contract/OrgManager.sol | 22 ++- permission/contract/gen/AccountManager.bin | 2 +- permission/contract/gen/NodeManager.bin | 2 +- permission/contract/gen/OrgManager.abi | 2 +- permission/contract/gen/OrgManager.bin | 2 +- .../gen/PermissionsImplementation.bin | 2 +- .../contract/gen/PermissionsInterface.bin | 2 +- .../contract/gen/PermissionsUpgradable.bin | 2 +- permission/contract/gen/RoleManager.bin | 2 +- permission/contract/gen/VoterManager.bin | 2 +- permission/permission.go | 129 +++++++++++++- 21 files changed, 345 insertions(+), 69 deletions(-) diff --git a/core/types/permissions_cache.go b/core/types/permissions_cache.go index f0e8a2823..d4978a0fa 100644 --- a/core/types/permissions_cache.go +++ b/core/types/permissions_cache.go @@ -7,7 +7,7 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/common" - lru "github.com/hashicorp/golang-lru" + "github.com/hashicorp/golang-lru" ) type AccessType uint8 @@ -129,40 +129,86 @@ type AccountKey struct { } type OrgCache struct { - c *lru.Cache - mux sync.Mutex + c *lru.Cache + mux sync.Mutex + reqCh chan string + respCh chan *OrgInfo + evicted bool } type NodeCache struct { - c *lru.Cache + c *lru.Cache + reqCh chan string + respCh chan *NodeInfo + evicted bool } type RoleCache struct { - c *lru.Cache + c *lru.Cache + reqCh chan *RoleKey + respCh chan *RoleInfo + evicted bool } type AcctCache struct { - c *lru.Cache + c *lru.Cache + reqCh chan common.Address + respCh chan *AccountInfo + evicted bool } func NewOrgCache() *OrgCache { - c, _ := lru.New(defaultOrgMapLimit) - return &OrgCache{c, sync.Mutex{}} + orgCache := OrgCache{reqCh: make(chan string, 10), respCh: make(chan *OrgInfo, 10), evicted: false} + onEvictedFunc := func(k interface{}, v interface{}) { + orgCache.evicted = true + } + orgCache.c, _ = lru.NewWithEvict(defaultOrgMapLimit, onEvictedFunc) + return &orgCache } func NewNodeCache() *NodeCache { - c, _ := lru.New(defaultNodeMapLimit) - return &NodeCache{c} + nodeCache := NodeCache{reqCh: make(chan string, 1), respCh: make(chan *NodeInfo, 1), evicted: false} + onEvictedFunc := func(k interface{}, v interface{}) { + nodeCache.evicted = true + + } + nodeCache.c, _ = lru.NewWithEvict(defaultNodeMapLimit, onEvictedFunc) + return &nodeCache } func NewRoleCache() *RoleCache { - c, _ := lru.New(defaultRoleMapLimit) - return &RoleCache{c} + roleCache := RoleCache{reqCh: make(chan *RoleKey, 1), respCh: make(chan *RoleInfo, 1), evicted: false} + onEvictedFunc := func(k interface{}, v interface{}) { + roleCache.evicted = true + } + roleCache.c, _ = lru.NewWithEvict(defaultRoleMapLimit, onEvictedFunc) + return &roleCache } func NewAcctCache() *AcctCache { - c, _ := lru.New(defaultAccountMapLimit) - return &AcctCache{c} + acctCache := AcctCache{reqCh: make(chan common.Address, 1), respCh: make(chan *AccountInfo, 1), evicted: false} + onEvictedFunc := func(k interface{}, v interface{}) { + acctCache.evicted = true + } + + acctCache.c, _ = lru.NewWithEvict(defaultAccountMapLimit, onEvictedFunc) + return &acctCache +} + +func (a *AcctCache) GetAcctCacheChannels() (chan common.Address, chan *AccountInfo) { + return a.reqCh, a.respCh +} + +func (o *OrgCache) GetOrgCacheChannels() (chan string, chan *OrgInfo) { + return o.reqCh, o.respCh +} + +func (r *RoleCache) GetRoleCacheChannels() (chan *RoleKey, chan *RoleInfo) { + return r.reqCh, r.respCh +} + +func (n *NodeCache) GetNodeCacheChannels() (chan string, chan *NodeInfo) { + return n.reqCh, n.respCh } var syncStarted = false @@ -172,10 +218,14 @@ var QIP714BlockReached = false var networkAdminRole string var orgAdminRole string -const defaultOrgMapLimit = 2000 -const defaultRoleMapLimit = 2500 -const defaultNodeMapLimit = 1000 -const defaultAccountMapLimit = 6000 +//const defaultOrgMapLimit = 2000 +//const defaultRoleMapLimit = 2500 +//const defaultNodeMapLimit = 1000 +//const defaultAccountMapLimit = 6000 +const defaultOrgMapLimit = 2 +const defaultRoleMapLimit = 100 +const defaultNodeMapLimit = 100 +const defaultAccountMapLimit = 2 var OrgInfoMap = NewOrgCache() var NodeInfoMap = NewNodeCache() @@ -195,7 +245,7 @@ func GetSyncStatus() bool { } // sets the default access to Readonly upon QIP714Blokc -func SetDefaultAccess(){ +func SetDefaultAccess() { DefaultAccess = ReadOnly QIP714BlockReached = true } @@ -243,12 +293,27 @@ func containsKey(s []string, e string) bool { } func (o *OrgCache) GetOrg(orgId string) *OrgInfo { - defer o.mux.Unlock() - o.mux.Lock() key := OrgKey{OrgId: orgId} if ent, ok := o.c.Get(key); ok { return ent.(*OrgInfo) } + // check if the org cache is evicted. if yes we need + // fetch the record from the contract + if o.evicted { + // send the org details on a channel for permissions to + // populate details from contracts + o.reqCh <- orgId + orgRec := <-o.respCh + + if orgRec == nil { + return nil + } + // insert the received record into cache + o.UpsertOrg(orgRec.OrgId, orgRec.ParentOrgId, orgRec.UltimateParent, orgRec.Level, orgRec.Status) + + //return the record + return orgRec + } return nil } @@ -275,6 +340,24 @@ func (n *NodeCache) GetNodeByUrl(url string) *NodeInfo { return v.(*NodeInfo) } } + // check if the node cache is evicted. if yes we need + // fetch the record from the contract + if n.evicted { + + // send the node details on a channel for permissions to + // populate details from contracts + n.reqCh <- url + nodeRec := <- n.respCh + + if nodeRec == nil { + return nil + } + + // insert the received record into cache + n.UpsertNode(nodeRec.OrgId, nodeRec.Url, nodeRec.Status) + //return the record + return nodeRec + } return nil } @@ -297,6 +380,23 @@ func (a *AcctCache) GetAccount(acct common.Address) *AccountInfo { if v, ok := a.c.Get(AccountKey{acct}); ok { return v.(*AccountInfo) } + + // check if the account cache is evicted. if yes we need + // fetch the record from the contract + if a.evicted { + // send the account details on a channel for permissions to + // populate details from contracts + a.reqCh <- acct + acctRec := <-a.respCh + + // insert the received record into cache + if acctRec == nil { + return nil + } + a.UpsertAccount(acctRec.OrgId, acctRec.RoleId, acctRec.AcctId, acctRec.IsOrgAdmin, acctRec.Status) + //return the record + return acctRec + } return nil } @@ -346,6 +446,22 @@ func (r *RoleCache) GetRole(orgId string, roleId string) *RoleInfo { if ent, ok := r.c.Get(key); ok { return ent.(*RoleInfo) } + // check if the role cache is evicted. if yes we need + // fetch the record from the contract + if r.evicted{ + // send the role details on a channel for permissions to + // populate details from contracts + r.reqCh <- &key + roleRec := <-r.respCh + if roleRec == nil { + return nil + } + // insert the received record into cache + r.UpsertRole(roleRec.OrgId, roleRec.RoleId, roleRec.IsVoter, roleRec.IsAdmin, roleRec.Access, roleRec.Active) + + //return the record + return roleRec + } return nil } @@ -393,7 +509,7 @@ func GetAcctAccess(acctId common.Address) AccessType { } func ValidateNodeForTxn(hexnodeId string, from common.Address) bool { - if !QIP714BlockReached || hexnodeId == ""{ + if !QIP714BlockReached || hexnodeId == "" { return true } @@ -412,7 +528,7 @@ func ValidateNodeForTxn(hexnodeId string, from common.Address) bool { for _, n := range NodeInfoMap.GetNodeList() { if OrgInfoMap.GetOrg(n.OrgId).UltimateParent == ultimateParent { recEnodeId, _ := enode.ParseV4(n.Url) - if recEnodeId.ID() == passedEnodeId.ID() { + if recEnodeId.ID() == passedEnodeId.ID() && n.Status == NodeApproved { return true } } diff --git a/permission/bind/accounts.go b/permission/bind/accounts.go index 3de510ab6..85b16107e 100644 --- a/permission/bind/accounts.go +++ b/permission/bind/accounts.go @@ -31,7 +31,7 @@ var ( 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\":\"_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\"},{\"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\"}]" // AcctManagerBin is the compiled bytecode used for deploying new contracts. -const AcctManagerBin = `608060405234801561001057600080fd5b50604051602080620048c18339810180604052602081101561003157600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061482e80620000936000396000f3fe608060405234801561001057600080fd5b50600436106100ec576000357c01000000000000000000000000000000000000000000000000000000009004806384b7a84a116100a9578063c214e5e511610083578063c214e5e514610877578063cef7f6af14610928578063e3483a9d146109f6578063e8b42bf414610aee576100ec565b806384b7a84a146105a9578063950145cf1461064c578063b20185681461071f576100ec565b8063143a5604146100f15780631d09dc93146101eb5780632aceb534146102af578063309e36ef1461041d5780636b568d761461043b57806381d66b23146104ec575b600080fd5b6101e96004803603608081101561010757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561014457600080fd5b82018360208201111561015657600080fd5b8035906020019184600183028401116401000000008311171561017857600080fd5b90919293919293908035906020019064010000000081111561019957600080fd5b8201836020820111156101ab57600080fd5b803590602001918460018302840111640100000000831117156101cd57600080fd5b9091929391929390803515159060200190929190505050610c78565b005b6102626004803603602081101561020157600080fd5b810190808035906020019064010000000081111561021e57600080fd5b82018360208201111561023057600080fd5b8035906020019184600183028401116401000000008311171561025257600080fd5b9091929391929390505050611157565b60405180831515151581526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6102f1600480360360208110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611823565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b8381101561037757808201518184015260208101905061035c565b50505050905090810190601f1680156103a45780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b838110156103dd5780820151818401526020810190506103c2565b50505050905090810190601f16801561040a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b610425611afe565b6040518082815260200191505060405180910390f35b6104d26004803603604081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561048e57600080fd5b8201836020820111156104a057600080fd5b803590602001918460018302840111640100000000831117156104c257600080fd5b9091929391929390505050611b0b565b604051808215151515815260200191505060405180910390f35b61052e6004803603602081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c91565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561056e578082015181840152602081019050610553565b50505050905090810190601f16801561059b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61064a600480360360608110156105bf57600080fd5b81019080803590602001906401000000008111156105dc57600080fd5b8201836020820111156105ee57600080fd5b8035906020019184600183028401116401000000008311171561061057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e4f565b005b6107056004803603602081101561066257600080fd5b810190808035906020019064010000000081111561067f57600080fd5b82018360208201111561069157600080fd5b803590602001918460018302840111640100000000831117156106b357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612781565b604051808215151515815260200191505060405180910390f35b61074b6004803603602081101561073557600080fd5b8101908080359060200190929190505050612957565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156107d15780820151818401526020810190506107b6565b50505050905090810190601f1680156107fe5780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b8381101561083757808201518184015260208101905061081c565b50505050905090810190601f1680156108645780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b61090e6004803603604081101561088d57600080fd5b81019080803590602001906401000000008111156108aa57600080fd5b8201836020820111156108bc57600080fd5b803590602001918460018302840111640100000000831117156108de57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b7a565b604051808215151515815260200191505060405180910390f35b6109f46004803603604081101561093e57600080fd5b810190808035906020019064010000000081111561095b57600080fd5b82018360208201111561096d57600080fd5b8035906020019184600183028401116401000000008311171561098f57600080fd5b9091929391929390803590602001906401000000008111156109b057600080fd5b8201836020820111156109c257600080fd5b803590602001918460018302840111640100000000831117156109e457600080fd5b90919293919293905050506132e3565b005b610aec60048036036080811015610a0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a4957600080fd5b820183602082011115610a5b57600080fd5b80359060200191846001830284011164010000000083111715610a7d57600080fd5b909192939192939080359060200190640100000000811115610a9e57600080fd5b820183602082011115610ab057600080fd5b80359060200191846001830284011164010000000083111715610ad257600080fd5b90919293919293908035906020019092919050505061346d565b005b610c5e60048036036060811015610b0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610b4157600080fd5b820183602082011115610b5357600080fd5b80359060200191846001830284011164010000000083111715610b7557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bd857600080fd5b820183602082011115610bea57600080fd5b80359060200191846001830284011164010000000083111715610c0c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506138c5565b604051808215151515815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015610cfb57600080fd5b505afa158015610d0f573d6000803e3d6000fd5b505050506040513d6020811015610d2557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b60046040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610e665780601f10610e3b57610100808354040283529160200191610e66565b820191906000526020600020905b815481529060010190602001808311610e4957829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015611062575060056040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610f6c5780601f10610f4157610100808354040283529160200191610f6c565b820191906000526020600020905b815481529060010190602001808311610f4f57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611017578082015181840152602081019050610ffc565b50505050905090810190601f1680156110445780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b15156110b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061475e6040913960400191505060405180910390fd5b61114f8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600285613ebc565b505050505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156111dd57600080fd5b505afa1580156111f1573d6000803e3d6000fd5b505050506040513d602081101561120757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b61130784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612781565b1561181157600061139c60066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166143d6565b905060066001828154811015156113af57fe5b90600052602060002090600502016003018190555060006001828154811015156113d557fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77660018281548110151561142d57fe5b906000526020600020906005020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561146e57fe5b906000526020600020906005020160010160018481548110151561148e57fe5b90600052602060002090600502016002016001858154811015156114ae57fe5b906000526020600020906005020160040160009054906101000a900460ff166001868154811015156114dc57fe5b906000526020600020906005020160030154604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001851515151581526020018481526020018381038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115bd5780601f10611592576101008083540402835291602001916115bd565b820191906000526020600020905b8154815290600101906020018083116115a057829003601f168201915b50508381038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116405780601f1061161557610100808354040283529160200191611640565b820191906000526020600020905b81548152906001019060200180831161162357829003601f168201915b505097505050505050505060405180910390a1600460405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116e15780601f106116b6576101008083540402835291602001916116e1565b820191906000526020600020905b8154815290600101906020018083116116c457829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561170c57fe5b906000526020600020906005020160020160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156117a95780601f1061177e576101008083540402835291602001916117a9565b820191906000526020600020905b81548152906001019060200180831161178c57829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156117d557fe5b906000526020600020906005020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925092505061181c565b600080809050915091505b9250929050565b60006060806000806000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156118d457856000806040805190810160405280600481526020017f4e4f4e450000000000000000000000000000000000000000000000000000000081525091906020604051908101604052806000815250919081915094509450945094509450611af5565b60006118df876143d6565b90506001818154811015156118f057fe5b906000526020600020906005020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018281548110151561193157fe5b906000526020600020906005020160010160018381548110151561195157fe5b906000526020600020906005020160020160018481548110151561197157fe5b90600052602060002090600502016003015460018581548110151561199257fe5b906000526020600020906005020160040160009054906101000a900460ff16838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a465780601f10611a1b57610100808354040283529160200191611a46565b820191906000526020600020905b815481529060010190602001808311611a2957829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ae25780601f10611ab757610100808354040283529160200191611ae2565b820191906000526020600020905b815481529060010190602001808311611ac557829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6000600180549050905090565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611b5d5760019050611c8a565b6000611b68856143d6565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120600182815481101515611bcc57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611c695780601f10611c3e57610100808354040283529160200191611c69565b820191906000526020600020905b815481529060010190602001808311611c4c57829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b60606000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611d18576040805190810160405280600481526020017f4e4f4e45000000000000000000000000000000000000000000000000000000008152509050611e4a565b6000611d23836143d6565b90506000600182815481101515611d3657fe5b906000526020600020906005020160030154141515611e1057600181815481101515611d5e57fe5b90600052602060002090600502016002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e035780601f10611dd857610100808354040283529160200191611e03565b820191906000526020600020905b815481529060010190602001808311611de657829003601f168201915b5050505050915050611e4a565b6040805190810160405280600481526020017f4e4f4e45000000000000000000000000000000000000000000000000000000008152509150505b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611ed257600080fd5b505afa158015611ee6573d6000803e3d6000fd5b505050506040513d6020811015611efc57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611faf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050826000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515156120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6163636f756e7420646f6573206e6f742065786973747300000000000000000081525060200191505060405180910390fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156120f15780820151818401526020810190506120d6565b50505050905090810190601f16801561211e5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612144836143d6565b81548110151561215057fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121ed5780601f106121c2576101008083540402835291602001916121ed565b820191906000526020600020905b8154815290600101906020018083116121d057829003601f168201915b5050925050506040516020818303038152906040528051906020012014151561227e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6163636f756e7420696e20646966666572656e74206f7267000000000000000081525060200191505060405180910390fd5b60008311801561228e5750600683105b1515612302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f696e76616c696420737461747573206368616e6765207265717565737400000081525060200191505060405180910390fd5b600115156123658588888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060206040519081016040528060008152506138c5565b1515141515156123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806147d26031913960400191505060405180910390fd5b6000600184141561245757600260016123d8876143d6565b8154811015156123e457fe5b90600052602060002090600502016003015414151561244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806146fd6039913960400191505060405180910390fd5b600490506126ac565b60028414156124ec576004600161246d876143d6565b81548110151561247957fe5b9060005260206000209060050201600301541415156124e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806146c1603c913960400191505060405180910390fd5b600290506126ab565b60038414156125825760056001612502876143d6565b81548110151561250e57fe5b90600052602060002090600502016003015414151515612579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806146896038913960400191505060405180910390fd5b600590506126aa565b60048414156126175760056001612598876143d6565b8154811015156125a457fe5b90600052602060002090600502016003015414151561260e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061479e6034913960400191505060405180910390fd5b600790506126a9565b60058414156126a8576007600161262d876143d6565b81548110151561263957fe5b9060005260206000209060050201600301541415156126a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806146516038913960400191505060405180910390fd5b600290505b5b5b5b5b8060016126b8876143d6565b8154811015156126c457fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b2585888884604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a150505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156127e25780820151818401526020810190506127c7565b50505050905090810190601f16801561280f5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561294d57600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156128c05780820151818401526020810190506128a5565b50505050905090810190601f1680156128ed5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600261294482614422565b14915050612952565b600090505b919050565b600060608060008060018681548110151561296e57fe5b906000526020600020906005020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001878154811015156129af57fe5b90600052602060002090600502016001016001888154811015156129cf57fe5b90600052602060002090600502016002016001898154811015156129ef57fe5b90600052602060002090600502016003015460018a815481101515612a1057fe5b906000526020600020906005020160040160009054906101000a900460ff16838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612ac45780601f10612a9957610100808354040283529160200191612ac4565b820191906000526020600020905b815481529060010190602001808311612aa757829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b605780601f10612b3557610100808354040283529160200191612b60565b820191906000526020600020905b815481529060010190602001808311612b4357829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015612bff57600080fd5b505afa158015612c13573d6000803e3d6000fd5b505050506040513d6020811015612c2957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6060612ce783611c91565b90506000612cf484614422565b90506000612d01856143d6565b905060056040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612d915780601f10612d6657610100808354040283529160200191612d91565b820191906000526020600020905b815481529060010190602001808311612d7457829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612df1578082015181840152602081019050612dd6565b50505050905090810190601f168015612e1e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120148015612e465750600182145b15612ef0578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6002600182815481101515612f0157fe5b90600052602060002090600502016003018190555060018082815481101515612f2657fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77685600183815481101515612f7f57fe5b9060005260206000209060050201600101600184815481101515612f9f57fe5b9060005260206000209060050201600201600185815481101515612fbf57fe5b906000526020600020906005020160040160009054906101000a900460ff16600186815481101515612fed57fe5b906000526020600020906005020160030154604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001851515151581526020018481526020018381038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156130ce5780601f106130a3576101008083540402835291602001916130ce565b820191906000526020600020905b8154815290600101906020018083116130b157829003601f168201915b50508381038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156131515780601f1061312657610100808354040283529160200191613151565b820191906000526020600020905b81548152906001019060200180831161313457829003601f168201915b505097505050505050505060405180910390a1600460405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156131f25780601f106131c7576101008083540402835291602001916131f2565b820191906000526020600020905b8154815290600101906020018083116131d557829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561321d57fe5b906000526020600020906005020160020160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156132ba5780601f1061328f576101008083540402835291602001916132ba565b820191906000526020600020905b81548152906001019060200180831161329d57829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561336657600080fd5b505afa15801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b8383600491906134549291906144ab565b508181600591906134669291906144ab565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156134f057600080fd5b505afa158015613504573d6000803e3d6000fd5b505050506040513d602081101561351a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156135cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6005604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561365b5780601f106136305761010080835404028352916020019161365b565b820191906000526020600020905b81548152906001019060200180831161363e57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014806137d057506004604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561375f5780601f106137345761010080835404028352916020019161375f565b820191906000526020600020905b81548152906001019060200180831161374257829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515613827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806147366028913960400191505060405180910390fd5b6138bd8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050846001613ebc565b505050505050565b6000600460405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156139555780601f1061392a57610100808354040283529160200191613955565b820191906000526020600020905b81548152906001019060200180831161393857829003601f168201915b5050925050506040516020818303038152906040528051906020012061397a85611c91565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156139bd5780820151818401526020810190506139a2565b50505050905090810190601f1680156139ea5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201415613cd1576000613a16856143d6565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613a5c578082015181840152602081019050613a41565b50505050905090810190601f168015613a895780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515613ab357fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613b505780601f10613b2557610100808354040283529160200191613b50565b820191906000526020600020905b815481529060010190602001808311613b3357829003601f168201915b505092505050604051602081830303815290604052805190602001201480613cc95750826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613bb7578082015181840152602081019050613b9c565b50505050905090810190601f168015613be45780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515613c0e57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613cab5780601f10613c8057610100808354040283529160200191613cab565b820191906000526020600020905b815481529060010190602001808311613c8e57829003601f168201915b50509250505060405160208183030381529060405280519060200120145b915050613eb5565b8373ffffffffffffffffffffffffffffffffffffffff1660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613d30578082015181840152602081019050613d15565b50505050905090810190601f168015613d5d5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613eb257508373ffffffffffffffffffffffffffffffffffffffff1660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613e23578082015181840152602081019050613e08565b50505050905090810190601f168015613e505780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b90505b9392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015613f3f57600080fd5b505afa158015613f53573d6000803e3d6000fd5b505050506040513d6020811015613f6957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561401c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6000614027866143d6565b90506000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515614109578360018281548110151561408257fe5b906000526020600020906005020160020190805190602001906140a692919061452b565b50826001828154811015156140b757fe5b906000526020600020906005020160030181905550816001828154811015156140dc57fe5b906000526020600020906005020160040160006101000a81548160ff02191690831515021790555061427d565b600360008154809291906001019190505550600354600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160a0604051908101604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018415158152509080600181540180825580915050906001820390600052602060002090600502016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190805190602001906142319291906145ab565b50604082015181600201908051906020019061424e9291906145ab565b506060820151816003015560808201518160040160006101000a81548160ff0219169083151502179055505050505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768686868587604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561432957808201518184015260208101905061430e565b50505050905090810190601f1680156143565780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b8381101561438f578082015181840152602081019050614374565b50505050905090810190601f1680156143bc5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b60006001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054039050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561447457600090506144a6565b600061447f836143d6565b905060018181548110151561449057fe5b9060005260206000209060050201600301549150505b919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106144ec57803560ff191683800117855561451a565b8280016001018555821561451a579182015b828111156145195782358255916020019190600101906144fe565b5b509050614527919061462b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061456c57805160ff191683800117855561459a565b8280016001018555821561459a579182015b8281111561459957825182559160200191906001019061457e565b5b5090506145a7919061462b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106145ec57805160ff191683800117855561461a565b8280016001018555821561461a579182015b828111156146195782518255916020019190600101906145fe565b5b509050614627919061462b565b5090565b61464d91905b80821115614649576000816000905550600101614631565b5090565b9056fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a72305820a534fbde5dac7e84dd47dee87465cfb80f5dc4b2409ed9c4e52bced609423e980029` +const AcctManagerBin = `608060405234801561001057600080fd5b50604051602080613a988339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a0319909216919091179055613a36806100626000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e060020a9004806384b7a84a11610090578063c214e5e51161006a578063c214e5e5146105fb578063cef7f6af14610674578063e3483a9d14610736578063e8b42bf414610808576100d3565b806384b7a84a146104b9578063950145cf14610538578063b2018568146105de576100d3565b8063143a5604146100d85780631d09dc93146101ae5780632aceb53414610241578063309e36ef146103705780636b568d761461038a57806381d66b231461041e575b600080fd5b6101ac600480360360808110156100ee57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561011957600080fd5b82018360208201111561012b57600080fd5b8035906020019184600183028401116401000000008311171561014d57600080fd5b91939092909160208101903564010000000081111561016b57600080fd5b82018360208201111561017d57600080fd5b8035906020019184600183028401116401000000008311171561019f57600080fd5b9193509150351515610945565b005b61021e600480360360208110156101c457600080fd5b8101906020810181356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184600183028401116401000000008311171561021357600080fd5b509092509050610d40565b604080519215158352600160a060020a0390911660208301528051918290030190f35b6102676004803603602081101561025757600080fd5b5035600160a060020a03166112dd565b6040518086600160a060020a0316600160a060020a03168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156102d05781810151838201526020016102b8565b50505050905090810190601f1680156102fd5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610330578181015183820152602001610318565b50505050905090810190601f16801561035d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b61037861154b565b60408051918252519081900360200190f35b61040a600480360360408110156103a057600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156103cb57600080fd5b8201836020820111156103dd57600080fd5b803590602001918460018302840111640100000000831117156103ff57600080fd5b509092509050611552565b604080519115158252519081900360200190f35b6104446004803603602081101561043457600080fd5b5035600160a060020a03166116ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047e578181015183820152602001610466565b50505050905090810190601f1680156104ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ac600480360360608110156104cf57600080fd5b8101906020810181356401000000008111156104ea57600080fd5b8201836020820111156104fc57600080fd5b8035906020019184600183028401116401000000008311171561051e57600080fd5b9193509150600160a060020a03813516906020013561182f565b61040a6004803603602081101561054e57600080fd5b81019060208101813564010000000081111561056957600080fd5b82018360208201111561057b57600080fd5b8035906020019184600183028401116401000000008311171561059d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f5f945050505050565b610267600480360360208110156105f457600080fd5b50356120da565b61040a6004803603604081101561061157600080fd5b81019060208101813564010000000081111561062c57600080fd5b82018360208201111561063e57600080fd5b8035906020019184600183028401116401000000008311171561066057600080fd5b919350915035600160a060020a03166122c4565b6101ac6004803603604081101561068a57600080fd5b8101906020810181356401000000008111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460018302840111640100000000831117156106d957600080fd5b9193909290916020810190356401000000008111156106f757600080fd5b82018360208201111561070957600080fd5b8035906020019184600183028401116401000000008311171561072b57600080fd5b509092509050612913565b6101ac6004803603608081101561074c57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561077757600080fd5b82018360208201111561078957600080fd5b803590602001918460018302840111640100000000831117156107ab57600080fd5b9193909290916020810190356401000000008111156107c957600080fd5b8201836020820111156107db57600080fd5b803590602001918460018302840111640100000000831117156107fd57600080fd5b9193509150356129fc565b61040a6004803603606081101561081e57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561084957600080fd5b82018360208201111561085b57600080fd5b8035906020019184600183028401116401000000008311171561087d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156108d057600080fd5b8201836020820111156108e257600080fd5b8035906020019184600183028401116401000000008311171561090457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d6b945050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561099557600080fd5b505afa1580156109a9573d6000803e3d6000fd5b505050506040513d60208110156109bf57600080fd5b5051600160a060020a03163314610a0e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015610c7f57506040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015610b8c5780601f10610b6157610100808354040283529160200191610b8c565b820191906000526020600020905b815481529060010190602001808311610b6f57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610c34578181015183820152602001610c1c565b50505050905090810190601f168015610c615780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b1515610cbf5760405160e560020a62461bcd0281526004018080602001828103825260408152602001806139666040913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250600292508791506132d29050565b505050505050565b60008054604080517f0e32cf9000000000000000000000000000000000000000000000000000000000815290518392600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610d9e57600080fd5b505afa158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b5051600160a060020a03163314610e17576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b610e5684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5f92505050565b156112cf576000610ede60066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a9004600160a060020a03166136b6565b90506006600182815481101515610ef157fe5b9060005260206000209060050201600301819055506000600182815481101515610f1757fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776600182815481101515610f6f57fe5b600091825260209091206005909102015460018054600160a060020a039092169184908110610f9a57fe5b9060005260206000209060050201600101600184815481101515610fba57fe5b9060005260206000209060050201600201600185815481101515610fda57fe5b60009182526020909120600460059092020101546001805460ff909216918790811061100257fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156110b55780601f1061108a576101008083540402835291602001916110b5565b820191906000526020600020905b81548152906001019060200180831161109857829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b505097505050505050505060405180910390a160408051602080820190815260048054600260001961010060018416150201909116049383018490529290918291606090910190849080156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b505092505050604051602081830303815290604052805190602001206001828154811015156111ea57fe5b60009182526020918290206040805180850194855260026005909402909201830180546000196101006001831615020116939093049082018190529192918291606001908490801561127d5780601f106112525761010080835404028352916020019161127d565b820191906000526020600020905b81548152906001019060200180831161126057829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156112a957fe5b6000918252602090912060059091020154909350600160a060020a031691506112d69050565b5060009050805b9250929050565b600160a060020a038116600090815260026020526040812054606090819083908190151561135a575050604080518082018252600481527f4e4f4e45000000000000000000000000000000000000000000000000000000006020808301919091528251908101909252600080835286955090935090915080611542565b6000611365876136b6565b905060018181548110151561137657fe5b600091825260209091206005909102015460018054600160a060020a0390921691839081106113a157fe5b90600052602060002090600502016001016001838154811015156113c157fe5b90600052602060002090600502016002016001848154811015156113e157fe5b90600052602060002090600502016003015460018581548110151561140257fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156114a15780601f10611476576101008083540402835291602001916114a1565b820191906000526020600020905b81548152906001019060200180831161148457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6001545b90565b600160a060020a0383166000908152600260205260408120541515611579575060016116a6565b6000611584856136b6565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001206001828154811015156115e857fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b600160a060020a0381166000908152600260205260409020546060901515611709575060408051808201909152600481527f4e4f4e4500000000000000000000000000000000000000000000000000000000602082015261182a565b6000611714836136b6565b905060018181548110151561172557fe5b90600052602060002090600502016003015460001415156117f357600180548290811061174e57fe5b600091825260209182902060026005909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156117e65780601f106117bb576101008083540402835291602001916117e6565b820191906000526020600020905b8154815290600101906020018083116117c957829003601f168201915b505050505091505061182a565b505060408051808201909152600481527f4e4f4e450000000000000000000000000000000000000000000000000000000060208201525b919050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d60208110156118a957600080fd5b5051600160a060020a031633146118f8576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250600160a060020a0387168152600260205260409020548693501515915061199d9050576040805160e560020a62461bcd02815260206004820152601760248201527f6163636f756e7420646f6573206e6f7420657869737473000000000000000000604482015290519081900360640190fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156119de5781810151838201526020016119c6565b50505050905090810190601f168015611a0b5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611a31836136b6565b81548110611a3b57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b50509250505060405160208183030381529060405280519060200120141515611b4b576040805160e560020a62461bcd02815260206004820152601860248201527f6163636f756e7420696e20646966666572656e74206f72670000000000000000604482015290519081900360640190fd5b600083118015611b5b5750600683105b1515611bb1576040805160e560020a62461bcd02815260206004820152601d60248201527f696e76616c696420737461747573206368616e67652072657175657374000000604482015290519081900360640190fd5b611bff8487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612d6b915050565b151560011415611c435760405160e560020a62461bcd0281526004018080602001828103825260318152602001806139da6031913960400191505060405180910390fd5b60008360011415611cc0576001611c59866136b6565b81548110611c6357fe5b9060005260206000209060050201600301546002141515611cb85760405160e560020a62461bcd0281526004018080602001828103825260398152602001806139056039913960400191505060405180910390fd5b506004611ea9565b8360021415611d3b576001611cd4866136b6565b81548110611cde57fe5b9060005260206000209060050201600301546004141515611d335760405160e560020a62461bcd02815260040180806020018281038252603c8152602001806138c9603c913960400191505060405180910390fd5b506002611ea9565b8360031415611db7576001611d4f866136b6565b81548110611d5957fe5b906000526020600020906005020160030154600514151515611daf5760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138716038913960400191505060405180910390fd5b506005611ea9565b8360041415611e32576001611dcb866136b6565b81548110611dd557fe5b9060005260206000209060050201600301546005141515611e2a5760405160e560020a62461bcd0281526004018080602001828103825260348152602001806139a66034913960400191505060405180910390fd5b506007611ea9565b8360051415611ea9576001611e46866136b6565b81548110611e5057fe5b9060005260206000209060050201600301546007141515611ea55760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138396038913960400191505060405180910390fd5b5060025b806001611eb5876136b6565b81548110611ebf57fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b25858888846040518085600160a060020a0316600160a060020a03168152602001806020018381526020018281038252858582818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a150505050505050565b600080600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fb0578181015183820152602001611f98565b50505050905090810190601f168015611fdd5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316146120d257600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561205c578181015183820152602001612044565b50505050905090810190601f1680156120895780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031690506120c7816136d5565b60021491505061182a565b506000919050565b60006060806000806001868154811015156120f157fe5b600091825260209091206005909102015460018054600160a060020a03909216918890811061211c57fe5b906000526020600020906005020160010160018881548110151561213c57fe5b906000526020600020906005020160020160018981548110151561215c57fe5b90600052602060002090600502016003015460018a81548110151561217d57fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff9092169286919083018282801561221c5780601f106121f15761010080835404028352916020019161221c565b820191906000526020600020905b8154815290600101906020018083116121ff57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156122aa5780601f1061227f576101008083540402835291602001916122aa565b820191906000526020600020905b81548152906001019060200180831161228d57829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561231657600080fd5b505afa15801561232a573d6000803e3d6000fd5b505050506040513d602081101561234057600080fd5b5051600160a060020a0316331461238f576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b606061239a836116ad565b905060006123a7846136d5565b905060006123b4856136b6565b604080516020808201908152600580546002600019610100600184161502019091160493830184905293945091829160600190849080156124365780601f1061240b57610100808354040283529160200191612436565b820191906000526020600020905b81548152906001019060200180831161241957829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561249357818101518382015260200161247b565b50505050905090810190601f1680156124c05780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201480156124e85750816001145b15612578578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055505b600260018281548110151561258957fe5b906000526020600020906005020160030181905550600180828154811015156125ae57fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768560018381548110151561260757fe5b906000526020600020906005020160010160018481548110151561262757fe5b906000526020600020906005020160020160018581548110151561264757fe5b60009182526020909120600460059092020101546001805460ff909216918790811061266f57fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156127225780601f106126f757610100808354040283529160200191612722565b820191906000526020600020905b81548152906001019060200180831161270557829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156127965780601f1061276b57610100808354040283529160200191612796565b820191906000526020600020905b81548152906001019060200180831161277957829003601f168201915b505097505050505050505060405180910390a1604080516020808201908152600480546002600019610100600184161502019091160493830184905292909182916060909101908490801561282c5780601f106128015761010080835404028352916020019161282c565b820191906000526020600020905b81548152906001019060200180831161280f57829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561285757fe5b6000918252602091829020604080518085019485526002600590940290920183018054600019610100600183161502011693909304908201819052919291829160600190849080156128ea5780601f106128bf576101008083540402835291602001916128ea565b820191906000526020600020905b8154815290600101906020018083116128cd57829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561296357600080fd5b505afa158015612977573d6000803e3d6000fd5b505050506040513d602081101561298d57600080fd5b5051600160a060020a031633146129dc576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6129e860048585613732565b506129f560058383613732565b5050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612a4c57600080fd5b505afa158015612a60573d6000803e3d6000fd5b505050506040513d6020811015612a7657600080fd5b5051600160a060020a03163314612ac5576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015612b485780601f10612b1d57610100808354040283529160200191612b48565b820191906000526020600020905b815481529060010190602001808311612b2b57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001201480612cb257506040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612c415780601f10612c1657610100808354040283529160200191612c41565b820191906000526020600020905b815481529060010190602001808311612c2457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515612cf25760405160e560020a62461bcd02815260040180806020018281038252602881526020018061393e6028913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250600191506132d29050565b60408051602080820190815260048054600260001961010060018416150201909116049383018490526000939092829160609091019084908015612df05780601f10612dc557610100808354040283529160200191612df0565b820191906000526020600020905b815481529060010190602001808311612dd357829003601f168201915b50509250505060405160208183030381529060405280519060200120612e15856116ad565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612e55578181015183820152602001612e3d565b50505050905090810190601f168015612e825780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201415613163576000612eae856136b6565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612ef1578181015183820152602001612ed9565b50505050905090810190601f168015612f1e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515612f4857fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612fe55780601f10612fba57610100808354040283529160200191612fe5565b820191906000526020600020905b815481529060010190602001808311612fc857829003601f168201915b50509250505060405160208183030381529060405280519060200120148061315b5750826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613049578181015183820152602001613031565b50505050905090810190601f1680156130765780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001828154811015156130a057fe5b9060005260206000209060050201600101604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561313d5780601f106131125761010080835404028352916020019161313d565b820191906000526020600020905b81548152906001019060200180831161312057829003601f168201915b50509250505060405160208183030381529060405280519060200120145b9150506116a6565b83600160a060020a031660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131b257818101518382015260200161319a565b50505050905090810190601f1680156131df5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031614806132ca575083600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613268578181015183820152602001613250565b50505050905090810190601f1680156132955780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316145b949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561332257600080fd5b505afa158015613336573d6000803e3d6000fd5b505050506040513d602081101561334c57600080fd5b5051600160a060020a0316331461339b576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b60006133a6866136b6565b600160a060020a0387166000908152600260205260409020549091501561345857836001828154811015156133d757fe5b906000526020600020906005020160020190805190602001906133fb9291906137b0565b508260018281548110151561340c57fe5b9060005260206000209060050201600301819055508160018281548110151561343157fe5b60009182526020909120600590910201600401805460ff1916911515919091179055613580565b60038054600190810191829055600160a060020a03888116600081815260026020908152604080832096909655855160a0810187529283528281018b81529583018a905260608301899052871515608084015284548086018087559590925282517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66005909302928301805473ffffffffffffffffffffffffffffffffffffffff191691909516178455945180519495929461353d937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf79093019291909101906137b0565b50604082015180516135599160028401916020909101906137b0565b50606082015160038201556080909101516004909101805460ff1916911515919091179055505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77686868685876040518086600160a060020a0316600160a060020a03168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561360f5781810151838201526020016135f7565b50505050905090810190601f16801561363c5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561366f578181015183820152602001613657565b50505050905090810190601f16801561369c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b600160a060020a03166000908152600260205260409020546000190190565b600160a060020a03811660009081526002602052604081205415156136fc5750600061182a565b6000613707836136b6565b905060018181548110151561371857fe5b906000526020600020906005020160030154915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137735782800160ff198235161785556137a0565b828001600101855582156137a0579182015b828111156137a0578235825591602001919060010190613785565b506137ac92915061381e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137f157805160ff19168380011785556137a0565b828001600101855582156137a0579182015b828111156137a0578251825591602001919060010190613803565b61154f91905b808211156137ac576000815560010161382456fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65696e76616c69642063616c6c65720000000000000000000000000000000000006163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a72305820905dd08251754880557108999e24e038e5619ec6a203c14dfd976249332a1ec70029` // 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) { diff --git a/permission/bind/nodes.go b/permission/bind/nodes.go index 9b0983bc8..0682bfd81 100644 --- a/permission/bind/nodes.go +++ b/permission/bind/nodes.go @@ -31,7 +31,7 @@ var ( const NodeManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"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\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrgNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveNode\",\"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\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addAdminNode\",\"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\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryCompleted\",\"type\":\"event\"}]" // NodeManagerBin is the compiled bytecode used for deploying new contracts. -const NodeManagerBin = `608060405234801561001057600080fd5b506040516020806131c18339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613130806100916000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c01000000000000000000000000000000000000000000000000000000009004806397c07a9b1161007857806397c07a9b14610483578063a97a44061461059d578063b81c806a1461066b578063e3b09d8414610689576100a5565b80630cc50146146100aa5780633f0e0e47146101825780633f5e1a45146102e757806386bc3652146103b5575b600080fd5b610180600480360360608110156100c057600080fd5b81019080803590602001906401000000008111156100dd57600080fd5b8201836020820111156100ef57600080fd5b8035906020019184600183028401116401000000008311171561011157600080fd5b90919293919293908035906020019064010000000081111561013257600080fd5b82018360208201111561014457600080fd5b8035906020019184600183028401116401000000008311171561016657600080fd5b909192939192939080359060200190929190505050610757565b005b6101f96004803603602081101561019857600080fd5b81019080803590602001906401000000008111156101b557600080fd5b8201836020820111156101c757600080fd5b803590602001918460018302840111640100000000831117156101e957600080fd5b9091929391929390505050611404565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610243578082015181840152602081019050610228565b50505050905090810190601f1680156102705780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156102a957808201518184015260208101905061028e565b50505050905090810190601f1680156102d65780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6103b3600480360360408110156102fd57600080fd5b810190808035906020019064010000000081111561031a57600080fd5b82018360208201111561032c57600080fd5b8035906020019184600183028401116401000000008311171561034e57600080fd5b90919293919293908035906020019064010000000081111561036f57600080fd5b82018360208201111561038157600080fd5b803590602001918460018302840111640100000000831117156103a357600080fd5b9091929391929390505050611600565b005b610481600480360360408110156103cb57600080fd5b81019080803590602001906401000000008111156103e857600080fd5b8201836020820111156103fa57600080fd5b8035906020019184600183028401116401000000008311171561041c57600080fd5b90919293919293908035906020019064010000000081111561043d57600080fd5b82018360208201111561044f57600080fd5b8035906020019184600183028401116401000000008311171561047157600080fd5b9091929391929390505050611af0565b005b6104af6004803603602081101561049957600080fd5b8101908080359060200190929190505050612159565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156104f95780820151818401526020810190506104de565b50505050905090810190601f1680156105265780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b8381101561055f578082015181840152602081019050610544565b50505050905090810190601f16801561058c5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610669600480360360408110156105b357600080fd5b81019080803590602001906401000000008111156105d057600080fd5b8201836020820111156105e257600080fd5b8035906020019184600183028401116401000000008311171561060457600080fd5b90919293919293908035906020019064010000000081111561062557600080fd5b82018360208201111561063757600080fd5b8035906020019184600183028401116401000000008311171561065957600080fd5b9091929391929390505050612304565b005b6106736127f4565b6040518082815260200191505060405180910390f35b6107556004803603604081101561069f57600080fd5b81019080803590602001906401000000008111156106bc57600080fd5b8201836020820111156106ce57600080fd5b803590602001918460018302840111640100000000831117156106f057600080fd5b90919293919293908035906020019064010000000081111561071157600080fd5b82018360208201111561072357600080fd5b8035906020019184600183028401116401000000008311171561074557600080fd5b90919293919293905050506127fe565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156107da57600080fd5b505afa1580156107ee573d6000803e3d6000fd5b505050506040513d602081101561080457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561094657808201518184015260208101905061092b565b50505050905090810190601f1680156109735780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012081526020019081526020016000205414151515610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f70617373656420656e6f646520696420646f6573206e6f74206578697374000081525060200191505060405180910390fd5b610aa586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612cee565b1515610afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613088602a913960400191505060405180910390fd5b6001821480610b0b5750600282145b80610b165750600382145b80610b215750600482145b80610b2c5750600582145b1515610b83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806130b26026913960400191505060405180910390fd5b6001821415610d5e576002610bdb87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b141515610c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b60036001610ca188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b815481101515610cad57fe5b9060005260206000209060030201600201819055507fc6c3720fe673e87bb26e06be713d514278aa94c3939cfe7c64b9bea4d486824a868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a16113fc565b6002821415610f39576003610db687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b141515610e2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b60026001610e7c88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b815481101515610e8857fe5b9060005260206000209060030201600201819055507f49796be3ca168a59c8ae46c75a36a9bb3a84753d3e12a812f93ae010e783b14f868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a16113fb565b60038214156110505760046001610f9388888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b815481101515610f9f57fe5b9060005260206000209060030201600201819055507f4714623279994517c446c8fb72c3fdaca26434da1e2490d3976fe0cd880cfa7a868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a16113fa565b600482141561122b5760046110a887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b14151561111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b6005600161116e88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b81548110151561117a57fe5b9060005260206000209060030201600201819055507ffd385c618a1e89d01fb9a21780846793e282e8bc0b60caf6ccb3e422d543fbfb868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a16113f9565b600561127a87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b1415156112ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b6002600161134088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b81548110151561134c57fe5b9060005260206000209060030201600201819055507f787d7bc525e7c4658c64e3e456d974a1be21cc196e8162a4bf1337a12cb38dac868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15b5b5b5b505050505050565b60608060008061145786868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b905060018181548110151561146857fe5b906000526020600020906003020160010160018281548110151561148857fe5b90600052602060002090600302016000016001838154811015156114a857fe5b906000526020600020906003020160020154828054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b50505050509250818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115eb5780601f106115c0576101008083540402835291602001916115eb565b820191906000526020600020905b8154815290600101906020018083116115ce57829003601f168201915b50505050509150935093509350509250925092565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561168357600080fd5b505afa158015611697573d6000803e3d6000fd5b505050506040513d60208110156116ad57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156117ef5780820151818401526020810190506117d4565b50505050905090810190601f16801561181c5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020541415156118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f70617373656420656e6f6465206964206578697374730000000000000000000081525060200191505060405180910390fd5b60036000815480929190600101919050555060035460026000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020016002815250908060018154018082558091505090600182039060005260206000209060030201600090919290919091506000820151816000019080519060200190611a27929190612fe2565b506020820151816001019080519060200190611a44929190612fe2565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611b7357600080fd5b505afa158015611b87573d6000803e3d6000fd5b505050506040513d6020811015611b9d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611cdf578082015181840152602081019050611cc4565b50505050905090810190601f168015611d0c5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012081526020019081526020016000205414151515611dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f70617373656420656e6f646520696420646f6573206e6f74206578697374000081525060200191505060405180910390fd5b611e3e85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612cee565b1515611e95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806130d8602d913960400191505060405180910390fd5b6001611ee486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b141515611f59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6e6f7468696e672070656e64696e6720666f7220617070726f76616c0000000081525060200191505060405180910390fd5b6000611fa886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b90506002600182815481101515611fbb57fe5b9060005260206000209060030201600201819055507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d60018281548110151561200057fe5b906000526020600020906003020160000160018381548110151561202057fe5b90600052602060002090600302016001016040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b50508381038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121415780601f1061211657610100808354040283529160200191612141565b820191906000526020600020905b81548152906001019060200180831161212457829003601f168201915b505094505050505060405180910390a1505050505050565b606080600060018481548110151561216d57fe5b906000526020600020906003020160010160018581548110151561218d57fe5b90600052602060002090600302016000016001868154811015156121ad57fe5b906000526020600020906003020160020154828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122545780601f1061222957610100808354040283529160200191612254565b820191906000526020600020905b81548152906001019060200180831161223757829003601f168201915b50505050509250818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122f05780601f106122c5576101008083540402835291602001916122f0565b820191906000526020600020905b8154815290600101906020018083116122d357829003601f168201915b505050505091509250925092509193909250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561238757600080fd5b505afa15801561239b573d6000803e3d6000fd5b505050506040513d60208110156123b157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156124f35780820151818401526020810190506124d8565b50505050905090810190601f1680156125205780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020541415156125bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f70617373656420656e6f6465206964206578697374730000000000000000000081525060200191505060405180910390fd5b60036000815480929190600101919050555060035460026000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001600181525090806001815401808255809150509060018203906000526020600020906003020160009091929091909150600082015181600001908051906020019061272b929190612fe2565b506020820151816001019080519060200190612748929190612fe2565b50604082015181600201555050507fb1a7eec7dd1a516c3132d6d1f770758b19aa34c3a07c138caf662688b7e3556f858585856040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15050505050565b6000600354905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561288157600080fd5b505afa158015612895573d6000803e3d6000fd5b505050506040513d60208110156128ab57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156129ed5780820151818401526020810190506129d2565b50505050905090810190601f168015612a1a5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054141515612ab9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f70617373656420656e6f6465206964206578697374730000000000000000000081525060200191505060405180910390fd5b60036000815480929190600101919050555060035460026000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020016002815250908060018154018082558091505090600182039060005260206000209060030201600090919290919091506000820151816000019080519060200190612c25929190612fe2565b506020820151816001019080519060200190612c42929190612fe2565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15050505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612d34578082015181840152602081019050612d19565b50505050905090810190601f168015612d615780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612d8785612f37565b815481101515612d9357fe5b90600052602060002090600302016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612e305780601f10612e0557610100808354040283529160200191612e30565b820191906000526020600020905b815481529060010190602001808311612e1357829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b60008060026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612ea0578082015181840152602081019050612e85565b50505050905090810190601f168015612ecd5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020541415612f065760009050612f32565b6001612f1183612f37565b815481101515612f1d57fe5b90600052602060002090600302016002015490505b919050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612f83578082015181840152602081019050612f68565b50505050905090810190601f168015612fb05780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061302357805160ff1916838001178555613051565b82800160010185558215613051579182015b82811115613050578251825591602001919060010190613035565b5b50905061305e9190613062565b5090565b61308491905b80821115613080576000816000905550600101613068565b5090565b9056fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a7230582011179f2b111ff0fc199ae5bdfe206abf5283b1c344d947e24ad65df0e432745e0029` +const NodeManagerBin = `608060405234801561001057600080fd5b506040516020806125388339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556124d6806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a9004806397c07a9b1161005f57806397c07a9b1461042e578063a97a44061461044b578063b81c806a1461050d578063e3b09d84146102aa5761008c565b80630cc50146146100915780633f0e0e47146101555780633f5e1a45146102aa57806386bc36521461036c575b600080fd5b610153600480360360608110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b919350915035610527565b005b6101c56004803603602081101561016b57600080fd5b81019060208101813564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111640100000000831117156101ba57600080fd5b509092509050610f34565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561020c5781810151838201526020016101f4565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610153600480360360408110156102c057600080fd5b8101906020810181356401000000008111156102db57600080fd5b8201836020820111156102ed57600080fd5b8035906020019184600183028401116401000000008311171561030f57600080fd5b91939092909160208101903564010000000081111561032d57600080fd5b82018360208201111561033f57600080fd5b8035906020019184600183028401116401000000008311171561036157600080fd5b50909250905061120b565b6101536004803603604081101561038257600080fd5b81019060208101813564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460018302840111640100000000831117156103d157600080fd5b9193909290916020810190356401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b5090925090506115e2565b6101c56004803603602081101561044457600080fd5b5035611b01565b6101536004803603604081101561046157600080fd5b81019060208101813564010000000081111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111640100000000831117156104b057600080fd5b9193909290916020810190356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b509092509050611c90565b610515612067565b60408051918252519081900360200190f35b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b5051600160a060020a031633146105f0576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561066d578181015183820152602001610655565b50505050905090810190601f16801561069a5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054151561071a576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61078d86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061206e92505050565b15156107cd5760405160e560020a62461bcd02815260040180806020018281038252602a8152602001806123ee602a913960400191505060405180910390fd5b81600114806107dc5750816002145b806107e75750816003145b806107f25750816004145b806107fd5750816005145b151561083d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806124586026913960400191505060405180910390fd5b81600114156109bd5761088586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b6002146108ca576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b6003600161090d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b8154811061091757fe5b9060005260206000209060030201600201819055507fc6c3720fe673e87bb26e06be713d514278aa94c3939cfe7c64b9bea4d486824a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160021415610b3d57610a0586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600314610a4a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60026001610a8d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610a9757fe5b9060005260206000209060030201600201819055507f49796be3ca168a59c8ae46c75a36a9bb3a84753d3e12a812f93ae010e783b14f868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160031415610c395760046001610b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610b9357fe5b9060005260206000209060030201600201819055507f4714623279994517c446c8fb72c3fdaca26434da1e2490d3976fe0cd880cfa7a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160041415610db957610c8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600414610cc6576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60056001610d0988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610d1357fe5b9060005260206000209060030201600201819055507ffd385c618a1e89d01fb9a21780846793e282e8bc0b60caf6ccb3e422d543fbfb868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b610df886868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600514610e3d576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60026001610e8088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610e8a57fe5b9060005260206000209060030201600201819055507f787d7bc525e7c4658c64e3e456d974a1be21cc196e8162a4bf1337a12cb38dac868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15b505050505050565b606080600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610f7e578181015183820152602001610f66565b50505050905090810190601f168015610fab5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561103c5784846000602060405190810160405280600081525092919082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250969950919750919550611204945050505050565b600061107d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b905060018181548110151561108e57fe5b90600052602060002090600302016001016001828154811015156110ae57fe5b90600052602060002090600302016000016001838154811015156110ce57fe5b60009182526020918290206002600390920201810154845460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835290928591908301828280156111675780601f1061113c57610100808354040283529160200191611167565b820191906000526020600020905b81548152906001019060200180831161114a57829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156111f55780601f106111ca576101008083540402835291602001916111f5565b820191906000526020600020905b8154815290600101906020018083116111d857829003601f168201915b50505050509150935093509350505b9250925092565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561125b57600080fd5b505afa15801561126f573d6000803e3d6000fd5b505050506040513d602081101561128557600080fd5b5051600160a060020a031633146112d4576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611351578181015183820152602001611339565b50505050905090810190601f16801561137e5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054156113fd576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f88018190048102820181019092528681529181019190879087908190840183828082843760009201829052509385525050600260209384015250835460018101808655948252908290208351805160039093029091019261152892849290910190612355565b5060208281015180516115419260018501920190612355565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561163257600080fd5b505afa158015611646573d6000803e3d6000fd5b505050506040513d602081101561165c57600080fd5b5051600160a060020a031633146116ab576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611728578181015183820152602001611710565b50505050905090810190601f1680156117555780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415156117d5576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61184885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061206e92505050565b15156118885760405160e560020a62461bcd02815260040180806020018281038252602d81526020018061247e602d913960400191505060405180910390fd5b6118c785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b60011461191e576040805160e560020a62461bcd02815260206004820152601c60248201527f6e6f7468696e672070656e64696e6720666f7220617070726f76616c00000000604482015290519081900360640190fd5b600061195f86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b9050600260018281548110151561197257fe5b9060005260206000209060030201600201819055507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d6001828154811015156119b757fe5b90600052602060002090600302016000016001838154811015156119d757fe5b9060005260206000209060030201600101604051808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611a755780601f10611a4a57610100808354040283529160200191611a75565b820191906000526020600020905b815481529060010190602001808311611a5857829003601f168201915b5050838103825284546002600019610100600184161502019091160480825260209091019085908015611ae95780601f10611abe57610100808354040283529160200191611ae9565b820191906000526020600020905b815481529060010190602001808311611acc57829003601f168201915b505094505050505060405180910390a1505050505050565b6060806000600184815481101515611b1557fe5b9060005260206000209060030201600101600185815481101515611b3557fe5b9060005260206000209060030201600001600186815481101515611b5557fe5b60009182526020918290206002600390920201810154845460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529092859190830182828015611bee5780601f10611bc357610100808354040283529160200191611bee565b820191906000526020600020905b815481529060010190602001808311611bd157829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015611c7c5780601f10611c5157610100808354040283529160200191611c7c565b820191906000526020600020905b815481529060010190602001808311611c5f57829003601f168201915b505050505091509250925092509193909250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ce057600080fd5b505afa158015611cf4573d6000803e3d6000fd5b505050506040513d6020811015611d0a57600080fd5b5051600160a060020a03163314611d59576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611dd6578181015183820152602001611dbe565b50505050905090810190601f168015611e035780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415611e82576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f880181900481028201810190925286815291810191908790879081908401838280828437600092018290525093855250506001602093840181905285549081018087559583529183902084518051600390940290910193611fad93859350910190612355565b506020828101518051611fc69260018501920190612355565b50604082015181600201555050507fb1a7eec7dd1a516c3132d6d1f770758b19aa34c3a07c138caf662688b7e3556f858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6003545b90565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156120b1578181015183820152602001612099565b50505050905090810190601f1680156120de5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612104856122ad565b8154811061210e57fe5b906000526020600020906003020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121ab5780601f10612180576101008083540402835291602001916121ab565b820191906000526020600020905b81548152906001019060200180831161218e57829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122175781810151838201526020016121ff565b50505050905090810190601f1680156122445780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561227e575060006122a8565b6001612289836122ad565b8154811061229357fe5b90600052602060002090600302016002015490505b919050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122f65781810151838201526020016122de565b50505050905090810190601f1680156123235780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061239657805160ff19168380011785556123c3565b828001600101855582156123c3579182015b828111156123c35782518255916020019190600101906123a8565b506123cf9291506123d3565b5090565b61206b91905b808211156123cf57600081556001016123d956fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f72676f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000696e76616c69642063616c6c6572000000000000000000000000000000000000696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a72305820d87c3beef2bad7bcfa000ee92b4322634755d5ec39f17fbf0e25c1a699faca4b0029` // 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) { diff --git a/permission/bind/org.go b/permission/bind/org.go index c65e44356..fc426e645 100644 --- a/permission/bind/org.go +++ b/permission/bind/org.go @@ -28,10 +28,10 @@ var ( ) // 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\":\"_getOrgIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"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\":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\"}]" +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\":\"_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\":\"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\"}]" // OrgManagerBin is the compiled bytecode used for deploying new contracts. -const OrgManagerBin = `60806040526000600160146101000a81548160ff02191690831515021790555060046002556004600355600060065534801561003a57600080fd5b506040516020806140b48339810180604052602081101561005a57600080fd5b810190808051906020019092919050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613ff8806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100d1576000357c0100000000000000000000000000000000000000000000000000000000900480637755ebdd1161008e5780637755ebdd1461060c5780638c8642df1461062a5780639e58eb9f14610707578063e302831614610794578063f9953de51461080d578063ffe40d1d14610886576100d1565b80630cc27493146100d657806314f775f91461016d578063177c8d8a146101f05780631f953480146102e2578063320d2c39146103b05780635c4f32ee1461047f575b600080fd5b610157600480360360408110156100ec57600080fd5b810190808035906020019064010000000081111561010957600080fd5b82018360208201111561011b57600080fd5b8035906020019184600183028401116401000000008311171561013d57600080fd5b909192939192939080359060200190929190505050610959565b6040518082815260200191505060405180910390f35b6101ee6004803603604081101561018357600080fd5b81019080803590602001906401000000008111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460018302840111640100000000831117156101d457600080fd5b909192939192939080359060200190929190505050610e46565b005b6102676004803603602081101561020657600080fd5b810190808035906020019064010000000081111561022357600080fd5b82018360208201111561023557600080fd5b8035906020019184600183028401116401000000008311171561025757600080fd5b909192939192939050505061111f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a757808201518184015260208101905061028c565b50505050905090810190601f1680156102d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ae600480360360408110156102f857600080fd5b810190808035906020019064010000000081111561031557600080fd5b82018360208201111561032757600080fd5b8035906020019184600183028401116401000000008311171561034957600080fd5b90919293919293908035906020019064010000000081111561036a57600080fd5b82018360208201111561037c57600080fd5b8035906020019184600183028401116401000000008311171561039e57600080fd5b909192939192939050505061138f565b005b610469600480360360208110156103c657600080fd5b81019080803590602001906401000000008111156103e357600080fd5b8201836020820111156103f557600080fd5b8035906020019184600183028401116401000000008311171561041757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611672565b6040518082815260200191505060405180910390f35b6104ab6004803603602081101561049557600080fd5b8101908080359060200190929190505050611705565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b838110156104ff5780820151818401526020810190506104e4565b50505050905090810190601f16801561052c5780820380516001836020036101000a031916815260200191505b50848103835288818151815260200191508051906020019080838360005b8381101561056557808201518184015260208101905061054a565b50505050905090810190601f1680156105925780820380516001836020036101000a031916815260200191505b50848103825287818151815260200191508051906020019080838360005b838110156105cb5780820151818401526020810190506105b0565b50505050905090810190601f1680156105f85780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b610614611996565b6040518082815260200191505060405180910390f35b6106ed6004803603604081101561064057600080fd5b810190808035906020019064010000000081111561065d57600080fd5b82018360208201111561066f57600080fd5b8035906020019184600183028401116401000000008311171561069157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506119a3565b604051808215151515815260200191505060405180910390f35b6107926004803603606081101561071d57600080fd5b810190808035906020019064010000000081111561073a57600080fd5b82018360208201111561074c57600080fd5b8035906020019184600183028401116401000000008311171561076e57600080fd5b90919293919293908035906020019092919080359060200190929190505050611a70565b005b61080b600480360360208110156107aa57600080fd5b81019080803590602001906401000000008111156107c757600080fd5b8201836020820111156107d957600080fd5b803590602001918460018302840111640100000000831117156107fb57600080fd5b9091929391929390505050611c47565b005b6108846004803603602081101561082357600080fd5b810190808035906020019064010000000081111561084057600080fd5b82018360208201111561085257600080fd5b8035906020019184600183028401116401000000008311171561087457600080fd5b9091929391929390505050612149565b005b61093f6004803603602081101561089c57600080fd5b81019080803590602001906401000000008111156108b957600080fd5b8201836020820111156108cb57600080fd5b803590602001918460018302840111640100000000831117156108ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506123d9565b604051808215151515815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d6020811015610a0957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610abc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515610b0e826123d9565b1515141515610b85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f726720646f6573206e6f74206578697374000000000000000000000000000081525060200191505060405180910390fd5b6001831480610b945750600283145b1515610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613f266025913960400191505060405180910390fd5b6000610c3a86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611672565b90506001600482815481101515610c4d57fe5b906000526020600020906008020160060154141515610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613f4b6027913960400191505060405180910390fd5b6000806001861415610cd0576002915060029050610ce3565b6002861415610ce25760049150600390505b5b60011515610d3589898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050846119a3565b1515141515610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613f726027913960400191505060405180910390fd5b6001861415610dea57610de588888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061246c565b610e38565b610e3788888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612767565b5b809450505050509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d6020811015610ef457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515610ff9826123d9565b1515141515611070576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f726720646f6573206e6f74206578697374000000000000000000000000000081525060200191505060405180910390fd5b60018214156110cb576110c684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612a7f565b611119565b61111884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612d8d565b5b50505050565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156111a557600080fd5b505afa1580156111b9573d6000803e3d6000fd5b505050506040513d60208110156111cf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b60046112d184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611672565b8154811015156112dd57fe5b90600052602060002090600802016004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113825780601f1061135757610100808354040283529160200191611382565b820191906000526020600020905b81548152906001019060200180831161136557829003601f168201915b5050505050905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561141357600080fd5b505afa158015611427573d6000803e3d6000fd5b505050506040513d602081101561143d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b838383836040516020018085858082843780830192505050807f2e00000000000000000000000000000000000000000000000000000000000000815250600101838380828437808301925050509450505050506040516020818303038152906040526000151561155f826123d9565b15151415156115d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f7267206578697374730000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61166b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060028061309c565b5050505050565b6000600160056000846040516020018082805190602001908083835b6020831015156116b3578051825260208201915060208101905060208303925061168e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b606080606060008060048681548110151561171c57fe5b906000526020600020906008020160000160048781548110151561173c57fe5b906000526020600020906008020160020160048881548110151561175c57fe5b906000526020600020906008020160040160048981548110151561177c57fe5b90600052602060002090600802016006015460048a81548110151561179d57fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118445780601f1061181957610100808354040283529160200191611844565b820191906000526020600020905b81548152906001019060200180831161182757829003601f168201915b50505050509450838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118e05780601f106118b5576101008083540402835291602001916118e0565b820191906000526020600020905b8154815290600101906020018083116118c357829003601f168201915b50505050509350828054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561197c5780601f106119515761010080835404028352916020019161197c565b820191906000526020600020905b81548152906001019060200180831161195f57829003601f168201915b505050505092509450945094509450945091939590929450565b6000600480549050905090565b6000806119af84611672565b9050600060056000866040516020018082805190602001908083835b6020831015156119f057805182526020820191506020810190506020830392506119cb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205414158015611a67575082600482815481101515611a5357fe5b906000526020600020906008020160010154145b91505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611af457600080fd5b505afa158015611b08573d6000803e3d6000fd5b505050506040513d6020811015611b1e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b611c33602060405190810160405280600081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001600261309c565b806002819055508160038190555050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611ccb57600080fd5b505afa158015611cdf573d6000803e3d6000fd5b505050506040513d6020811015611cf557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b60011515611dfb83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060016119a3565b1515141515611e72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b6000611ec183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611672565b90506002600482815481101515611ed457fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515611f1957fe5b9060005260206000209060080201600001600483815481101515611f3957fe5b9060005260206000209060080201600201600484815481101515611f5957fe5b9060005260206000209060080201600401600485815481101515611f7957fe5b90600052602060002090600802016006015460026040518080602001806020018060200186815260200185815260200184810384528981815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561202a5780601f10611fff5761010080835404028352916020019161202a565b820191906000526020600020905b81548152906001019060200180831161200d57829003601f168201915b50508481038352888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156120ad5780601f10612082576101008083540402835291602001916120ad565b820191906000526020600020905b81548152906001019060200180831161209057829003601f168201915b50508481038252878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121305780601f1061210557610100808354040283529160200191612130565b820191906000526020600020905b81548152906001019060200180831161211357829003601f168201915b50509850505050505050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156121cd57600080fd5b505afa1580156121e1573d6000803e3d6000fd5b505050506040513d60208110156121f757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b81818080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600015156122fc826123d9565b1515141515612373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f7267206578697374730000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6123d4602060405190810160405280600081525084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060018061309c565b505050565b60008060056000846040516020018082805190602001908083835b60208310151561241957805182526020820191506020810190506020830392506123f4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205414159050919050565b6001151561247b8260026119a3565b15151415156124d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613f996034913960400191505060405180910390fd5b60006124e082611672565b905060036004828154811015156124f357fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561253857fe5b906000526020600020906008020160000160048381548110151561255857fe5b906000526020600020906008020160020160048481548110151561257857fe5b906000526020600020906008020160040160048581548110151561259857fe5b9060005260206000209060080201600601546003604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156126495780601f1061261e57610100808354040283529160200191612649565b820191906000526020600020905b81548152906001019060200180831161262c57829003601f168201915b50508481038352888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156126cc5780601f106126a1576101008083540402835291602001916126cc565b820191906000526020600020905b8154815290600101906020018083116126af57829003601f168201915b505084810382528781815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561274f5780601f106127245761010080835404028352916020019161274f565b820191906000526020600020905b81548152906001019060200180831161273257829003601f168201915b50509850505050505050505060405180910390a15050565b600115156127768260046119a3565b15151415156127ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e2073757370656e64656420737461746500000000000081525060200191505060405180910390fd5b60006127f882611672565b9050600560048281548110151561280b57fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561285057fe5b906000526020600020906008020160000160048381548110151561287057fe5b906000526020600020906008020160020160048481548110151561289057fe5b90600052602060002090600802016004016004858154811015156128b057fe5b9060005260206000209060080201600601546005604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156129615780601f1061293657610100808354040283529160200191612961565b820191906000526020600020905b81548152906001019060200180831161294457829003601f168201915b50508481038352888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156129e45780601f106129b9576101008083540402835291602001916129e4565b820191906000526020600020905b8154815290600101906020018083116129c757829003601f168201915b5050848103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612a675780601f10612a3c57610100808354040283529160200191612a67565b820191906000526020600020905b815481529060010190602001808311612a4a57829003601f168201915b50509850505050505050505060405180910390a15050565b60011515612a8e8260036119a3565b1515141515612b05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b6000612b1082611672565b905060048082815481101515612b2257fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d96600482815481101515612b6757fe5b9060005260206000209060080201600001600483815481101515612b8757fe5b9060005260206000209060080201600201600484815481101515612ba757fe5b9060005260206000209060080201600401600485815481101515612bc757fe5b90600052602060002090600802016006015460405180806020018060200180602001858152602001848103845288818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612c705780601f10612c4557610100808354040283529160200191612c70565b820191906000526020600020905b815481529060010190602001808311612c5357829003601f168201915b5050848103835287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612cf35780601f10612cc857610100808354040283529160200191612cf3565b820191906000526020600020905b815481529060010190602001808311612cd657829003601f168201915b5050848103825286818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612d765780601f10612d4b57610100808354040283529160200191612d76565b820191906000526020600020905b815481529060010190602001808311612d5957829003601f168201915b505097505050505050505060405180910390a15050565b60011515612d9c8260056119a3565b1515141515612e13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b6000612e1e82611672565b90506002600482815481101515612e3157fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f600482815481101515612e7657fe5b9060005260206000209060080201600001600483815481101515612e9657fe5b9060005260206000209060080201600201600484815481101515612eb657fe5b9060005260206000209060080201600401600485815481101515612ed657fe5b90600052602060002090600802016006015460405180806020018060200180602001858152602001848103845288818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612f7f5780601f10612f5457610100808354040283529160200191612f7f565b820191906000526020600020905b815481529060010190602001808311612f6257829003601f168201915b50508481038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156130025780601f10612fd757610100808354040283529160200191613002565b820191906000526020600020905b815481529060010190602001808311612fe557829003601f168201915b50508481038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156130855780601f1061305a57610100808354040283529160200191613085565b820191906000526020600020905b81548152906001019060200180831161306857829003601f168201915b505097505050505050505060405180910390a15050565b600080905060008090506000809050600185141561312f57856040516020018082805190602001908083835b6020831015156130ed57805182526020820191506020810190506020830392506130c8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209150613299565b866040516020018082805190602001908083835b6020831015156131685780518252602082019150602081019050602083039250613143565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b6020831015156131df57805182526020820191506020810190506020830392506131ba565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310151561325a5780518252602082019150602081019050602083039250613235565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b60066000815480929190600101919050555060065460056000848152602001908152602001600020819055506000600480548091906001016132db9190613cab565b905060018614156133a057856004828154811015156132f657fe5b906000526020600020906008020160060181905550600060048281548110151561331c57fe5b9060005260206000209060080201600501819055508660048281548110151561334157fe5b90600052602060002090600802016003019080519060200190613365929190613cdd565b508660048281548110151561337657fe5b9060005260206000209060080201600401908051906020019061339a929190613cdd565b5061374d565b600160056000868152602001908152602001600020540391506003546004838154811015156133cb57fe5b906000526020600020906008020160070180549050101515613455576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f62726561647468206c6576656c2065786365656465640000000000000000000081525060200191505060405180910390fd5b60025460048381548110151561346757fe5b9060005260206000209060080201600601541015156134ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6465707468206c6576656c20657863656564656400000000000000000000000081525060200191505060405180910390fd5b60016004838154811015156134ff57fe5b9060005260206000209060080201600601540160048281548110151561352157fe5b9060005260206000209060080201600601819055508160048281548110151561354657fe5b90600052602060002090600802016005018190555060048281548110151561356a57fe5b906000526020600020906008020160040160048281548110151561358a57fe5b906000526020600020906008020160040190805460018160011615610100020316600290046135ba929190613d5d565b5060006004838154811015156135cc57fe5b906000526020600020906008020160070180548091906001016135ef9190613de4565b90508160048481548110151561360157fe5b90600052602060002090600802016007018281548110151561361f57fe5b906000526020600020018190555088886040516020018083805190602001908083835b6020831015156136675780518252602082019150602081019050602083039250613642565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831015156136e257805182526020820191506020810190506020830392506136bd565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405260048381548110151561372657fe5b9060005260206000209060080201600301908051906020019061374a929190613cdd565b50505b8660048281548110151561375d57fe5b90600052602060002090600802016000019080519060200190613781929190613cdd565b508760048281548110151561379257fe5b906000526020600020906008020160020190805190602001906137b6929190613cdd565b50846004828154811015156137c757fe5b9060005260206000209060080201600101819055506001851415613a45577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561381557fe5b906000526020600020906008020160000160048381548110151561383557fe5b906000526020600020906008020160020160048481548110151561385557fe5b906000526020600020906008020160040160048581548110151561387557fe5b9060005260206000209060080201600601546001604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156139265780601f106138fb57610100808354040283529160200191613926565b820191906000526020600020905b81548152906001019060200180831161390957829003601f168201915b50508481038352888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156139a95780601f1061397e576101008083540402835291602001916139a9565b820191906000526020600020905b81548152906001019060200180831161398c57829003601f168201915b5050848103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613a2c5780601f10613a0157610100808354040283529160200191613a2c565b820191906000526020600020905b815481529060010190602001808311613a0f57829003601f168201915b50509850505050505050505060405180910390a1613ca1565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515613a7557fe5b9060005260206000209060080201600001600483815481101515613a9557fe5b9060005260206000209060080201600201600484815481101515613ab557fe5b9060005260206000209060080201600401600485815481101515613ad557fe5b906000526020600020906008020160060154600260405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613b865780601f10613b5b57610100808354040283529160200191613b86565b820191906000526020600020905b815481529060010190602001808311613b6957829003601f168201915b5050848103835288818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613c095780601f10613bde57610100808354040283529160200191613c09565b820191906000526020600020905b815481529060010190602001808311613bec57829003601f168201915b5050848103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613c8c5780601f10613c6157610100808354040283529160200191613c8c565b820191906000526020600020905b815481529060010190602001808311613c6f57829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b815481835581811115613cd857600802816008028360005260206000209182019101613cd79190613e10565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d1e57805160ff1916838001178555613d4c565b82800160010185558215613d4c579182015b82811115613d4b578251825591602001919060010190613d30565b5b509050613d599190613e97565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d965780548555613dd3565b82800160010185558215613dd357600052602060002091601f016020900482015b82811115613dd2578254825591600101919060010190613db7565b5b509050613de09190613e97565b5090565b815481835581811115613e0b57818360005260206000209182019101613e0a9190613e97565b5b505050565b613e9491905b80821115613e905760008082016000613e2f9190613ebc565b6001820160009055600282016000613e479190613ebc565b600382016000613e579190613ebc565b600482016000613e679190613ebc565b60058201600090556006820160009055600782016000613e879190613f04565b50600801613e16565b5090565b90565b613eb991905b80821115613eb5576000816000905550600101613e9d565b5090565b90565b50805460018160011615610100020316600290046000825580601f10613ee25750613f01565b601f016020900490600052602060002090810190613f009190613e97565b5b50565b5080546000825590600052602060002090810190613f229190613e97565b5056fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f7765646f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a72305820ad4f7ede501fde744bd99a211aae38fa1573644d4dc550d1c4e668f404270efd0029` +const OrgManagerBin = `60806040526001805460a060020a60ff021916905560046002819055600355600060065534801561002f57600080fd5b506040516020806137978339810180604052602081101561004f57600080fd5b505160018054600160a060020a031916600160a060020a039092169190911790556137188061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100b85760003560e060020a900480638c8642df116100755780638c8642df146104cf5780639e58eb9f1461058b578063e302831614610601578063f4d6d9f514610671578063f9953de5146106e1578063ffe40d1d14610751576100b8565b80630cc27493146100bd57806314f775f91461013f578063177c8d8a146101b15780631f953480146102965780635c4f32ee146103585780637755ebdd146104c7575b600080fd5b61012d600480360360408110156100d357600080fd5b8101906020810181356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b9193509150356107f7565b60408051918252519081900360200190f35b6101af6004803603604081101561015557600080fd5b81019060208101813564010000000081111561017057600080fd5b82018360208201111561018257600080fd5b803590602001918460018302840111640100000000831117156101a457600080fd5b919350915035610ba2565b005b610221600480360360208110156101c757600080fd5b8101906020810181356401000000008111156101e257600080fd5b8201836020820111156101f457600080fd5b8035906020019184600183028401116401000000008311171561021657600080fd5b509092509050610d99565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025b578181015183820152602001610243565b50505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101af600480360360408110156102ac57600080fd5b8101906020810181356401000000008111156102c757600080fd5b8201836020820111156102d957600080fd5b803590602001918460018302840111640100000000831117156102fb57600080fd5b91939092909160208101903564010000000081111561031957600080fd5b82018360208201111561032b57600080fd5b8035906020019184600183028401116401000000008311171561034d57600080fd5b509092509050610f5f565b6103756004803603602081101561036e57600080fd5b5035611163565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b838110156103c65781810151838201526020016103ae565b50505050905090810190601f1680156103f35780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b8381101561042657818101518382015260200161040e565b50505050905090810190601f1680156104535780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b8381101561048657818101518382015260200161046e565b50505050905090810190601f1680156104b35780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61012d6113d8565b610577600480360360408110156104e557600080fd5b81019060208101813564010000000081111561050057600080fd5b82018360208201111561051257600080fd5b8035906020019184600183028401116401000000008311171561053457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506113df915050565b604080519115158252519081900360200190f35b6101af600480360360608110156105a157600080fd5b8101906020810181356401000000008111156105bc57600080fd5b8201836020820111156105ce57600080fd5b803590602001918460018302840111640100000000831117156105f057600080fd5b919350915080359060200135611537565b6101af6004803603602081101561061757600080fd5b81019060208101813564010000000081111561063257600080fd5b82018360208201111561064457600080fd5b8035906020019184600183028401116401000000008311171561066657600080fd5b50909250905061165a565b6103756004803603602081101561068757600080fd5b8101906020810181356401000000008111156106a257600080fd5b8201836020820111156106b457600080fd5b803590602001918460018302840111640100000000831117156106d657600080fd5b509092509050611a6a565b6101af600480360360208110156106f757600080fd5b81019060208101813564010000000081111561071257600080fd5b82018360208201111561072457600080fd5b8035906020019184600183028401116401000000008311171561074657600080fd5b509092509050611dd3565b6105776004803603602081101561076757600080fd5b81019060208101813564010000000081111561078257600080fd5b82018360208201111561079457600080fd5b803590602001918460018302840111640100000000831117156107b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f87945050505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630e32cf90916004808301926020929190829003018186803b15801561085557600080fd5b505afa158015610869573d6000803e3d6000fd5b505050506040513d602081101561087f57600080fd5b5051600160a060020a031633146108ce576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109109250839150611f879050565b1515600114610969576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b82600114806109785750826002145b15156109b85760405160e560020a62461bcd0281526004018080602001828103825260258152602001806136266025913960400191505060405180910390fd5b60006109f986868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061201592505050565b9050600481815481101515610a0a57fe5b9060005260206000209060080201600601546001141515610a5f5760405160e560020a62461bcd02815260040180806020018281038252602781526020018061364b6027913960400191505060405180910390fd5b6000808560011415610a7657506002905080610a87565b8560021415610a8757506004905060035b610ac888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506113df915050565b1515600114610b0b5760405160e560020a62461bcd0281526004018080602001828103825260278152602001806136926027913960400191505060405180910390fd5b8560011415610b5857610b5388888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120a292505050565b610b97565b610b9788888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061236492505050565b979650505050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610bf357600080fd5b505afa158015610c07573d6000803e3d6000fd5b505050506040513d6020811015610c1d57600080fd5b5051600160a060020a03163314610c6c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610cae9250839150611f879050565b1515600114610d07576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8160011415610d5457610d4f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061251192505050565b610d93565b610d9384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127d792505050565b50505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051606092600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610df757600080fd5b505afa158015610e0b573d6000803e3d6000fd5b505050506040513d6020811015610e2157600080fd5b5051600160a060020a03163314610e70576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b6004610eb184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061201592505050565b81548110610ebb57fe5b6000918252602091829020600460089092020101805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610f515780601f10610f2657610100808354040283529160200191610f51565b820191906000526020600020905b815481529060010190602001808311610f3457829003601f168201915b505050505090505b92915050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fb057600080fd5b505afa158015610fc4573d6000803e3d6000fd5b505050506040513d6020811015610fda57600080fd5b5051600160a060020a03163314611029576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b83838383604051602001808585808284377f2e000000000000000000000000000000000000000000000000000000000000009201918252506001018383808284378083019250505094505050505060405160208183030381529060405261108f81611f87565b156110e4576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b61115c85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284376000920191909152506002925082915061289e9050565b5050505050565b606080606060008060048681548110151561117a57fe5b906000526020600020906008020160000160048781548110151561119a57fe5b90600052602060002090600802016002016004888154811015156111ba57fe5b90600052602060002090600802016004016004898154811015156111da57fe5b90600052602060002090600802016006015460048a8154811015156111fb57fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112a25780601f10611277576101008083540402835291602001916112a2565b820191906000526020600020905b81548152906001019060200180831161128557829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156113305780601f1061130557610100808354040283529160200191611330565b820191906000526020600020905b81548152906001019060200180831161131357829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156113be5780601f10611393576101008083540402835291602001916113be565b820191906000526020600020905b8154815290600101906020018083116113a157829003601f168201915b505050505092509450945094509450945091939590929450565b6004545b90565b600060056000846040516020018082805190602001908083835b602083106114185780518252601f1990920191602091820191016113f9565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001208152602001908152602001600020546000141561147257506000610f59565b600061147d84612015565b905060056000856040516020018082805190602001908083835b602083106114b65780518252601f199092019160209182019101611497565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205460001415801561152f57508260048281548110151561151b57fe5b906000526020600020906008020160010154145b949350505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561158857600080fd5b505afa15801561159c573d6000803e3d6000fd5b505050506040513d60208110156115b257600080fd5b5051600160a060020a03163314611601576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b6040805160208181018352600082528251601f870182900482028101820190935285835261165092908790879081908401838280828437600092019190915250600192506002915061289e9050565b6002556003555050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156116ab57600080fd5b505afa1580156116bf573d6000803e3d6000fd5b505050506040513d60208110156116d557600080fd5b5051600160a060020a03163314611724576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b61176682828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506113df915050565b15156001146117bf576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061180083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061201592505050565b9050600260048281548110151561181357fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110151561185857fe5b906000526020600020906008020160000160048381548110151561187857fe5b906000526020600020906008020160020160048481548110151561189857fe5b90600052602060002090600802016004016004858154811015156118b857fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156119695780601f1061193e57610100808354040283529160200191611969565b820191906000526020600020905b81548152906001019060200180831161194c57829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156119dd5780601f106119b2576101008083540402835291602001916119dd565b820191906000526020600020905b8154815290600101906020018083116119c057829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611a515780601f10611a2657610100808354040283529160200191611a51565b820191906000526020600020905b815481529060010190602001808311611a3457829003601f168201915b50509850505050505050505060405180910390a1505050565b6060806060600080611ab187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8792505050565b1515611b2057868660008083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081810183528382528251908101909252918152949d509b50929950939750919550611dc9945050505050565b6000611b6188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061201592505050565b9050600481815481101515611b7257fe5b9060005260206000209060080201600001600482815481101515611b9257fe5b9060005260206000209060080201600201600483815481101515611bb257fe5b9060005260206000209060080201600401600484815481101515611bd257fe5b906000526020600020906008020160060154600485815481101515611bf357fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c9a5780601f10611c6f57610100808354040283529160200191611c9a565b820191906000526020600020905b815481529060010190602001808311611c7d57829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a5089945092508401905082828015611d285780601f10611cfd57610100808354040283529160200191611d28565b820191906000526020600020905b815481529060010190602001808311611d0b57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015611db65780601f10611d8b57610100808354040283529160200191611db6565b820191906000526020600020905b815481529060010190602001808311611d9957829003601f168201915b5050505050925095509550955095509550505b9295509295909350565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b5051600160a060020a03163314611e9d576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b81818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611edf9250839150611f879050565b15611f34576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b6040805160208181018352600082528251601f8601829004820281018201909352848352611f82929086908690819084018382808284376000920191909152506001925082915061289e9050565b505050565b600060056000836040516020018082805190602001908083835b60208310611fc05780518252601f199092019160209182019101611fa1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014159050919050565b6000600160056000846040516020018082805190602001908083835b602083106120505780518252601f199092019160209182019101612031565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b6120ad8160026113df565b15156001146120f05760405160e560020a62461bcd0281526004018080602001828103825260348152602001806136b96034913960400191505060405180910390fd5b60006120fb82612015565b9050600360048281548110151561210e57fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561215357fe5b906000526020600020906008020160000160048381548110151561217357fe5b906000526020600020906008020160020160048481548110151561219357fe5b90600052602060002090600802016004016004858154811015156121b357fe5b9060005260206000209060080201600601546003604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156122645780601f1061223957610100808354040283529160200191612264565b820191906000526020600020905b81548152906001019060200180831161224757829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156122d85780601f106122ad576101008083540402835291602001916122d8565b820191906000526020600020905b8154815290600101906020018083116122bb57829003601f168201915b505084810382528754600260001961010060018416150201909116048082526020909101908890801561234c5780601f106123215761010080835404028352916020019161234c565b820191906000526020600020905b81548152906001019060200180831161232f57829003601f168201915b50509850505050505050505060405180910390a15050565b61236f8160046113df565b15156001146123c8576040805160e560020a62461bcd02815260206004820152601a60248201527f6f7267206e6f7420696e2073757370656e646564207374617465000000000000604482015290519081900360640190fd5b60006123d382612015565b905060056004828154811015156123e657fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561242b57fe5b906000526020600020906008020160000160048381548110151561244b57fe5b906000526020600020906008020160020160048481548110151561246b57fe5b906000526020600020906008020160040160048581548110151561248b57fe5b9060005260206000209060080201600601546005604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156122645780601f1061223957610100808354040283529160200191612264565b61251c8160036113df565b1515600114612575576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061258082612015565b90506004808281548110151561259257fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d966004828154811015156125d757fe5b90600052602060002090600802016000016004838154811015156125f757fe5b906000526020600020906008020160020160048481548110151561261757fe5b906000526020600020906008020160040160048581548110151561263757fe5b600091825260209182902060066008909202010154604080516060810183905260808082528754600260001961010060018416150201909116049082018190529293909283929183019183019060a0840190899080156126d85780601f106126ad576101008083540402835291602001916126d8565b820191906000526020600020905b8154815290600101906020018083116126bb57829003601f168201915b505084810383528754600260001961010060018416150201909116048082526020909101908890801561274c5780601f106127215761010080835404028352916020019161274c565b820191906000526020600020905b81548152906001019060200180831161272f57829003601f168201915b50508481038252865460026000196101006001841615020190911604808252602090910190879080156127c05780601f10612795576101008083540402835291602001916127c0565b820191906000526020600020905b8154815290600101906020018083116127a357829003601f168201915b505097505050505050505060405180910390a15050565b6127e28160056113df565b151560011461283b576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061284682612015565b9050600260048281548110151561285957fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f6004828154811015156125d757fe5b60008080600185141561292057856040516020018082805190602001908083835b602083106128de5780518252601f1990920191602091820191016128bf565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209150612a78565b866040516020018082805190602001908083835b602083106129535780518252601f199092019160209182019101612934565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b602083106129c45780518252601f1990920191602091820191016129a5565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310612a395780518252601f199092019160209182019101612a1a565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b600680546001908101918290556000848152600560205260408120929092556004805491612aa8919083016133ec565b90508560011415612b6d5785600482815481101515612ac357fe5b9060005260206000209060080201600601819055506000600482815481101515612ae957fe5b90600052602060002090600802016005018190555086600482815481101515612b0e57fe5b90600052602060002090600802016003019080519060200190612b32929190613418565b5086600482815481101515612b4357fe5b90600052602060002090600802016004019080519060200190612b67929190613418565b50612eca565b600084815260056020526040902054600354600480546000199093019450909184908110612b9757fe5b600091825260209091206007600890920201015410612c00576040805160e560020a62461bcd02815260206004820152601660248201527f62726561647468206c6576656c20657863656564656400000000000000000000604482015290519081900360640190fd5b6002546004805484908110612c1157fe5b906000526020600020906008020160060154101515612c7a576040805160e560020a62461bcd02815260206004820152601460248201527f6465707468206c6576656c206578636565646564000000000000000000000000604482015290519081900360640190fd5b6004805483908110612c8857fe5b906000526020600020906008020160060154600101600482815481101515612cac57fe5b90600052602060002090600802016006018190555081600482815481101515612cd157fe5b60009182526020909120600560089092020101556004805483908110612cf357fe5b9060005260206000209060080201600401600482815481101515612d1357fe5b90600052602060002090600802016004019080546001816001161561010002031660029004612d43929190613496565b506000600483815481101515612d5557fe5b90600052602060002090600802016007018054809190600101612d78919061350b565b905081600484815481101515612d8a57fe5b906000526020600020906008020160070182815481101515612da857fe5b906000526020600020018190555088886040516020018083805190602001908083835b60208310612dea5780518252601f199092019160209182019101612dcb565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310612e5f5780518252601f199092019160209182019101612e40565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052600483815481101515612ea357fe5b90600052602060002090600802016003019080519060200190612ec7929190613418565b50505b86600482815481101515612eda57fe5b90600052602060002090600802016000019080519060200190612efe929190613418565b5087600482815481101515612f0f57fe5b90600052602060002090600802016002019080519060200190612f33929190613418565b5084600482815481101515612f4457fe5b90600052602060002090600802016001018190555084600114156131a4577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b600482815481101515612f9257fe5b9060005260206000209060080201600001600483815481101515612fb257fe5b9060005260206000209060080201600201600484815481101515612fd257fe5b9060005260206000209060080201600401600485815481101515612ff257fe5b9060005260206000209060080201600601546001604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156130a35780601f10613078576101008083540402835291602001916130a3565b820191906000526020600020905b81548152906001019060200180831161308657829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156131175780601f106130ec57610100808354040283529160200191613117565b820191906000526020600020905b8154815290600101906020018083116130fa57829003601f168201915b505084810382528754600260001961010060018416150201909116048082526020909101908890801561318b5780601f106131605761010080835404028352916020019161318b565b820191906000526020600020905b81548152906001019060200180831161316e57829003601f168201915b50509850505050505050505060405180910390a16133e2565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c6004828154811015156131d457fe5b90600052602060002090600802016000016004838154811015156131f457fe5b906000526020600020906008020160020160048481548110151561321457fe5b906000526020600020906008020160040160048581548110151561323457fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156132e55780601f106132ba576101008083540402835291602001916132e5565b820191906000526020600020905b8154815290600101906020018083116132c857829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156133595780601f1061332e57610100808354040283529160200191613359565b820191906000526020600020905b81548152906001019060200180831161333c57829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156133cd5780601f106133a2576101008083540402835291602001916133cd565b820191906000526020600020905b8154815290600101906020018083116133b057829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b815481835581811115611f8257600802816008028360005260206000209182019101611f82919061352f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061345957805160ff1916838001178555613486565b82800160010185558215613486579182015b8281111561348657825182559160200191906001019061346b565b506134929291506135a6565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106134cf5780548555613486565b8280016001018555821561348657600052602060002091601f016020900482015b828111156134865782548255916001019190600101906134f0565b815481835581811115611f8257600083815260209020611f829181019083016135a6565b6113dc91905b8082111561349257600061354982826135c0565b600182016000905560028201600061356191906135c0565b61356f6003830160006135c0565b61357d6004830160006135c0565b6005820160009055600682016000905560078201600061359d9190613607565b50600801613535565b6113dc91905b8082111561349257600081556001016135ac565b50805460018160011615610100020316600290046000825580601f106135e65750613604565b601f01602090049060005260206000209081019061360491906135a6565b50565b508054600082559060005260206000209081019061360491906135a656fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f776564696e76616c69642063616c6c65720000000000000000000000000000000000006f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a72305820c4906ba7d247889352844701e5281f571cf03c7a4b48f22b54dee783dcdba3ab0029` // 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) { @@ -188,32 +188,6 @@ func (_OrgManager *OrgManagerTransactorRaw) Transact(opts *bind.TransactOpts, me return _OrgManager.Contract.contract.Transact(opts, method, params...) } -// GetOrgIndex is a free data retrieval call binding the contract method 0x320d2c39. -// -// Solidity: function _getOrgIndex(_orgId string) constant returns(uint256) -func (_OrgManager *OrgManagerCaller) GetOrgIndex(opts *bind.CallOpts, _orgId string) (*big.Int, error) { - var ( - ret0 = new(*big.Int) - ) - out := ret0 - err := _OrgManager.contract.Call(opts, out, "_getOrgIndex", _orgId) - return *ret0, err -} - -// GetOrgIndex is a free data retrieval call binding the contract method 0x320d2c39. -// -// Solidity: function _getOrgIndex(_orgId string) constant returns(uint256) -func (_OrgManager *OrgManagerSession) GetOrgIndex(_orgId string) (*big.Int, error) { - return _OrgManager.Contract.GetOrgIndex(&_OrgManager.CallOpts, _orgId) -} - -// GetOrgIndex is a free data retrieval call binding the contract method 0x320d2c39. -// -// Solidity: function _getOrgIndex(_orgId string) constant returns(uint256) -func (_OrgManager *OrgManagerCallerSession) GetOrgIndex(_orgId string) (*big.Int, error) { - return _OrgManager.Contract.GetOrgIndex(&_OrgManager.CallOpts, _orgId) -} - // CheckOrgExists is a free data retrieval call binding the contract method 0xffe40d1d. // // Solidity: function checkOrgExists(_orgId string) constant returns(bool) @@ -292,6 +266,42 @@ func (_OrgManager *OrgManagerCallerSession) GetNumberOfOrgs() (*big.Int, error) return _OrgManager.Contract.GetNumberOfOrgs(&_OrgManager.CallOpts) } +// GetOrgDetails is a free data retrieval call binding the contract method 0xf4d6d9f5. +// +// Solidity: function getOrgDetails(_orgId string) constant returns(string, string, string, uint256, uint256) +func (_OrgManager *OrgManagerCaller) GetOrgDetails(opts *bind.CallOpts, _orgId string) (string, string, string, *big.Int, *big.Int, error) { + var ( + ret0 = new(string) + ret1 = new(string) + ret2 = new(string) + ret3 = new(*big.Int) + ret4 = new(*big.Int) + ) + out := &[]interface{}{ + ret0, + ret1, + ret2, + ret3, + ret4, + } + err := _OrgManager.contract.Call(opts, out, "getOrgDetails", _orgId) + return *ret0, *ret1, *ret2, *ret3, *ret4, err +} + +// GetOrgDetails is a free data retrieval call binding the contract method 0xf4d6d9f5. +// +// Solidity: function getOrgDetails(_orgId string) constant returns(string, string, string, uint256, uint256) +func (_OrgManager *OrgManagerSession) GetOrgDetails(_orgId string) (string, string, string, *big.Int, *big.Int, error) { + return _OrgManager.Contract.GetOrgDetails(&_OrgManager.CallOpts, _orgId) +} + +// GetOrgDetails is a free data retrieval call binding the contract method 0xf4d6d9f5. +// +// Solidity: function getOrgDetails(_orgId string) constant returns(string, string, string, uint256, uint256) +func (_OrgManager *OrgManagerCallerSession) GetOrgDetails(_orgId string) (string, string, string, *big.Int, *big.Int, error) { + return _OrgManager.Contract.GetOrgDetails(&_OrgManager.CallOpts, _orgId) +} + // GetOrgInfo is a free data retrieval call binding the contract method 0x5c4f32ee. // // Solidity: function getOrgInfo(_orgIndex uint256) constant returns(string, string, string, uint256, uint256) diff --git a/permission/bind/permission_impl.go b/permission/bind/permission_impl.go index d83e1524b..80e6d3432 100644 --- a/permission/bind/permission_impl.go +++ b/permission/bind/permission_impl.go @@ -31,7 +31,7 @@ var ( 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\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveOrg\",\"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\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"addAdminNode\",\"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\":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\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addNode\",\"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\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveBlacklistedNodeRecovery\",\"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\":\"_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\":\"_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\":\"_pOrgId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addSubOrg\",\"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\":\"_caller\",\"type\":\"address\"}],\"name\":\"startBlacklistedNodeRecovery\",\"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\":\"_action\",\"type\":\"uint256\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateNodeStatus\",\"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\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addOrg\",\"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\"}]" // PermImplBin is the compiled bytecode used for deploying new contracts. -const PermImplBin = `608060405260036009556000600a60006101000a81548160ff0219169083151502179055503480156200003157600080fd5b5060405160c0806200a14c833981018060405260c08110156200005357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505085600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050619f1b80620002316000396000f3fe608060405234801561001057600080fd5b50600436106101ec576000357c010000000000000000000000000000000000000000000000000000000090048063655a8ef511610121578063b5546564116100bf578063dbfad7111161008e578063dbfad711146115e2578063f346a3a7146116da578063f5ad584a14611872578063f922f802146119a1576101ec565b8063b55465641461128f578063c3dc8e0914611332578063cc9ba6fa14611420578063d1aa0c2014611586576101ec565b80638baa8191116100fb5780638baa819114610e8f5780639bd3810114611021578063a5843f0814611114578063a64d28601461114c576101ec565b8063655a8ef514610bf55780636b568d7614610ce35780638884304114610dd6576101ec565b8063404bf3eb1161018e5780634cbfa82e116101685780634cbfa82e146109b35780634fe57e7a146109d557806359a260a314610a195780635ca5adbe14610b07576101ec565b8063404bf3eb146107ca57806344478e79146108d85780634b20f45f146108fa576101ec565b80631c249912116101ca5780631c249912146104e75780633bc07dea146105a05780633cf5f33b146106ae5780633f25c28814610751576101ec565b806304e81f1e146101f15780631b04c276146102b45780631b610220146103c4575b600080fd5b6102b26004803603608081101561020757600080fd5b810190808035906020019064010000000081111561022457600080fd5b82018360208201111561023657600080fd5b8035906020019184600183028401116401000000008311171561025857600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aaf565b005b6103c2600480360360c08110156102ca57600080fd5b81019080803590602001906401000000008111156102e757600080fd5b8201836020820111156102f957600080fd5b8035906020019184600183028401116401000000008311171561031b57600080fd5b90919293919293908035906020019064010000000081111561033c57600080fd5b82018360208201111561034e57600080fd5b8035906020019184600183028401116401000000008311171561037057600080fd5b909192939192939080359060200190929190803515159060200190929190803515159060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2b565b005b6104e5600480360360608110156103da57600080fd5b81019080803590602001906401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b90919293919293908035906020019064010000000081111561044c57600080fd5b82018360208201111561045e57600080fd5b8035906020019184600183028401116401000000008311171561048057600080fd5b9091929391929390803590602001906401000000008111156104a157600080fd5b8201836020820111156104b357600080fd5b803590602001918460018302840111640100000000831117156104d557600080fd5b909192939192939050505061221c565b005b61059e600480360360608110156104fd57600080fd5b810190808035906020019064010000000081111561051a57600080fd5b82018360208201111561052c57600080fd5b8035906020019184600183028401116401000000008311171561054e57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061242b565b005b6106ac600480360360808110156105b657600080fd5b81019080803590602001906401000000008111156105d357600080fd5b8201836020820111156105e557600080fd5b8035906020019184600183028401116401000000008311171561060757600080fd5b90919293919293908035906020019064010000000081111561062857600080fd5b82018360208201111561063a57600080fd5b8035906020019184600183028401116401000000008311171561065c57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a0565b005b61074f600480360360608110156106c457600080fd5b81019080803590602001906401000000008111156106e157600080fd5b8201836020820111156106f357600080fd5b8035906020019184600183028401116401000000008311171561071557600080fd5b909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613058565b005b6107c86004803603602081101561076757600080fd5b810190808035906020019064010000000081111561078457600080fd5b82018360208201111561079657600080fd5b803590602001918460018302840111640100000000831117156107b857600080fd5b90919293919293905050506134c1565b005b6108d6600480360360808110156107e057600080fd5b81019080803590602001906401000000008111156107fd57600080fd5b82018360208201111561080f57600080fd5b8035906020019184600183028401116401000000008311171561083157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561087257600080fd5b82018360208201111561088457600080fd5b803590602001918460018302840111640100000000831117156108a657600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137f6565b005b6108e0613d6b565b604051808215151515815260200191505060405180910390f35b6109b16004803603606081101561091057600080fd5b810190808035906020019064010000000081111561092d57600080fd5b82018360208201111561093f57600080fd5b8035906020019184600183028401116401000000008311171561096157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f6e565b005b6109bb6142de565b604051808215151515815260200191505060405180910390f35b610a17600480360360208110156109eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506142f5565b005b610b0560048036036060811015610a2f57600080fd5b8101908080359060200190640100000000811115610a4c57600080fd5b820183602082011115610a5e57600080fd5b80359060200191846001830284011164010000000083111715610a8057600080fd5b909192939192939080359060200190640100000000811115610aa157600080fd5b820183602082011115610ab357600080fd5b80359060200191846001830284011164010000000083111715610ad557600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614762565b005b610bf360048036036060811015610b1d57600080fd5b8101908080359060200190640100000000811115610b3a57600080fd5b820183602082011115610b4c57600080fd5b80359060200191846001830284011164010000000083111715610b6e57600080fd5b909192939192939080359060200190640100000000811115610b8f57600080fd5b820183602082011115610ba157600080fd5b80359060200191846001830284011164010000000083111715610bc357600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614b30565b005b610ce160048036036060811015610c0b57600080fd5b8101908080359060200190640100000000811115610c2857600080fd5b820183602082011115610c3a57600080fd5b80359060200191846001830284011164010000000083111715610c5c57600080fd5b909192939192939080359060200190640100000000811115610c7d57600080fd5b820183602082011115610c8f57600080fd5b80359060200191846001830284011164010000000083111715610cb157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615178565b005b610dbc60048036036040811015610cf957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610d3657600080fd5b820183602082011115610d4857600080fd5b80359060200191846001830284011164010000000083111715610d6a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506154ea565b604051808215151515815260200191505060405180910390f35b610e8d60048036036060811015610dec57600080fd5b8101908080359060200190640100000000811115610e0957600080fd5b820183602082011115610e1b57600080fd5b80359060200191846001830284011164010000000083111715610e3d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615656565b005b61101f60048036036080811015610ea557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610ee257600080fd5b820183602082011115610ef457600080fd5b80359060200191846001830284011164010000000083111715610f1657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610f7957600080fd5b820183602082011115610f8b57600080fd5b80359060200191846001830284011164010000000083111715610fad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615c48565b005b6110fa6004803603604081101561103757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561107457600080fd5b82018360208201111561108657600080fd5b803590602001918460018302840111640100000000831117156110a857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061635e565b604051808215151515815260200191505060405180910390f35b61114a6004803603604081101561112a57600080fd5b8101908080359060200190929190803590602001909291905050506168a9565b005b61128d6004803603608081101561116257600080fd5b810190808035906020019064010000000081111561117f57600080fd5b82018360208201111561119157600080fd5b803590602001918460018302840111640100000000831117156111b357600080fd5b9091929391929390803590602001906401000000008111156111d457600080fd5b8201836020820111156111e657600080fd5b8035906020019184600183028401116401000000008311171561120857600080fd5b90919293919293908035906020019064010000000081111561122957600080fd5b82018360208201111561123b57600080fd5b8035906020019184600183028401116401000000008311171561125d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616f4a565b005b611330600480360360608110156112a557600080fd5b81019080803590602001906401000000008111156112c257600080fd5b8201836020820111156112d457600080fd5b803590602001918460018302840111640100000000831117156112f657600080fd5b909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050617527565b005b61141e6004803603606081101561134857600080fd5b810190808035906020019064010000000081111561136557600080fd5b82018360208201111561137757600080fd5b8035906020019184600183028401116401000000008311171561139957600080fd5b9091929391929390803590602001906401000000008111156113ba57600080fd5b8201836020820111156113cc57600080fd5b803590602001918460018302840111640100000000831117156113ee57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506179dc565b005b611428617e74565b6040518080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b8381101561147a57808201518184015260208101905061145f565b50505050905090810190601f1680156114a75780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b838110156114e05780820151818401526020810190506114c5565b50505050905090810190601f16801561150d5780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b8381101561154657808201518184015260208101905061152b565b50505050905090810190601f1680156115735780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6115c86004803603602081101561159c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050618073565b604051808215151515815260200191505060405180910390f35b6116d8600480360360808110156115f857600080fd5b810190808035906020019064010000000081111561161557600080fd5b82018360208201111561162757600080fd5b8035906020019184600183028401116401000000008311171561164957600080fd5b90919293919293908035906020019064010000000081111561166a57600080fd5b82018360208201111561167c57600080fd5b8035906020019184600183028401116401000000008311171561169e57600080fd5b909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506182fd565b005b611751600480360360208110156116f057600080fd5b810190808035906020019064010000000081111561170d57600080fd5b82018360208201111561171f57600080fd5b8035906020019184600183028401116401000000008311171561174157600080fd5b909192939192939050505061867b565b6040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156117cd5780820151818401526020810190506117b2565b50505050905090810190601f1680156117fa5780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b83811015611833578082015181840152602081019050611818565b50505050905090810190601f1680156118605780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61199f6004803603608081101561188857600080fd5b81019080803590602001906401000000008111156118a557600080fd5b8201836020820111156118b757600080fd5b803590602001918460018302840111640100000000831117156118d957600080fd5b9091929391929390803590602001906401000000008111156118fa57600080fd5b82018360208201111561190c57600080fd5b8035906020019184600183028401116401000000008311171561192e57600080fd5b90919293919293908035906020019064010000000081111561194f57600080fd5b82018360208201111561196157600080fd5b8035906020019184600183028401116401000000008311171561198357600080fd5b9091929391929390803515159060200190929190505050618844565b005b611aad600480360360808110156119b757600080fd5b81019080803590602001906401000000008111156119d457600080fd5b8201836020820111156119e657600080fd5b80359060200191846001830284011164010000000083111715611a0857600080fd5b909192939192939080359060200190640100000000811115611a2957600080fd5b820183602082011115611a3b57600080fd5b80359060200191846001830284011164010000000083111715611a5d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506189ef565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611b3357600080fd5b505afa158015611b47573d6000803e3d6000fd5b505050506040513d6020811015611b5d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b8085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515611c47838361635e565b1515141515611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b6001841480611cb05750600284145b80611cbb5750600384145b1515611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180619e5b6025913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a888888886040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611eaf57600080fd5b505afa158015611ec3573d6000803e3d6000fd5b505050506040513d6020811015611ed957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515611fc182619245565b1515141515612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e20617070726f7665642073746174757300000000000081525060200191505060405180910390fd5b8187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001151561208c838361635e565b15151415156120e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b7135798c8c8c8c8c8c8c6040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001868152602001851515151581526020018415151515815260200183810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508381038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156121f757600080fd5b505af115801561220b573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156122a057600080fd5b505afa1580156122b4573d6000803e3d6000fd5b505050506040513d60208110156122ca57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff1615151415156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b8686600691906123fd929190619db5565b5084846007919061240f929190619db5565b50828260089190612421929190619db5565b5050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156124af57600080fd5b505afa1580156124c3573d6000803e3d6000fd5b505050506040513d60208110156124d957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561256f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b806001151561257d82618073565b15151415156125d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a86868660046040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156126d057600080fd5b505af11580156126e4573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600687878760066040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156128215780601f106127f657610100808354040283529160200191612821565b820191906000526020600020905b81548152906001019060200180831161280457829003601f168201915b50508481038352888882818152602001925080828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561288157600080fd5b505af1158015612895573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561292457600080fd5b505afa158015612938573d6000803e3d6000fd5b505050506040513d602081101561294e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156129f282618073565b1515141515612a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b60011515612a9f88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001619386565b1515141515612b16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b612bbc60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612baf5780601f10612b8457610100808354040283529160200191612baf565b820191906000526020600020905b815481529060010190602001808311612b9257829003601f168201915b50505050508360016194c7565b1561304f57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e302831688886040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015612c7e57600080fd5b505af1158015612c92573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b713579600889896009546001806040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018681526020018515151515815260200184151515158152602001838103835289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612db05780601f10612d8557610100808354040283529160200191612db0565b820191906000526020600020905b815481529060010190602001808311612d9357829003601f168201915b50508381038252888882818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612e0157600080fd5b505af1158015612e15573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166386bc365286868a8a6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612f0a57600080fd5b505af1158015612f1e573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c214e5e58888866040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561301257600080fd5b505af1158015613026573d6000803e3d6000fd5b505050506040513d602081101561303c57600080fd5b8101908080519060200190929190505050505b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156130dc57600080fd5b505afa1580156130f0573d6000803e3d6000fd5b505050506040513d602081101561310657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561319c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156131aa82618073565b1515141515613204576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc274938787876040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018381526020018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156132cb57600080fd5b505af11580156132df573d6000803e3d6000fd5b505050506040513d60208110156132f557600080fd5b81019080805190602001909291905050509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600688886000866040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156134415780601f1061341657610100808354040283529160200191613441565b820191906000526020600020905b81548152906001019060200180831161342457829003601f168201915b50508481038352888882818152602001925080828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b1580156134a157600080fd5b505af11580156134b5573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561354557600080fd5b505afa158015613559573d6000803e3d6000fd5b505050506040513d602081101561356f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613605576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff161515141515613691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3b09d84848460066040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352868682818152602001925080828437600081840152601f19601f8201169050808301925050508381038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156137b65780601f1061378b576101008083540402835291602001916137b6565b820191906000526020600020905b81548152906001019060200180831161379957829003601f168201915b505095505050505050600060405180830381600087803b1580156137d957600080fd5b505af11580156137ed573d6000803e3d6000fd5b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561387a57600080fd5b505afa15801561388e573d6000803e3d6000fd5b505050506040513d60208110156138a457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561393a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001151561398c8261963f565b1515141515613a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f726720646f6573206e6f74206578697374000000000000000000000000000081525060200191505060405180910390fd5b8160011515613a1182618073565b1515141515613a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d878a8a898960016040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018481526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015613b9857600080fd5b505af1158015613bac573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d60068a8a8a60046040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613ce95780601f10613cbe57610100808354040283529160200191613ce9565b820191906000526020600020905b815481529060010190602001808311613ccc57829003601f168201915b50508481038352888882818152602001925080828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015613d4957600080fd5b505af1158015613d5d573d6000803e3d6000fd5b505050505050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015613df157600080fd5b505afa158015613e05573d6000803e3d6000fd5b505050506040513d6020811015613e1b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff161515141515613f3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b6001600a60006101000a81548160ff021916908315150217905550600a60009054906101000a900460ff1691505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015613ff257600080fd5b505afa158015614006573d6000803e3d6000fd5b505050506040513d602081101561401c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156140b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156140c082618073565b151514151561411a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6141c060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156141b35780601f10614188576101008083540402835291602001916141b3565b820191906000526020600020905b81548152906001019060200180831161419657829003601f168201915b50505050508360066194c7565b156142d7576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a86868660056040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156142be57600080fd5b505af11580156142d2573d6000803e3d6000fd5b505050505b5050505050565b6000600a60009054906101000a900460ff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561437957600080fd5b505afa15801561438d573d6000803e3d6000fd5b505050506040513d60208110156143a357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff1615151415156144c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b61456b60068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561455e5780601f106145335761010080835404028352916020019161455e565b820191906000526020600020905b81548152906001019060200180831161454157829003601f168201915b5050505050836001619777565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d836006600760026040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200184815260200183810383528681815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561469f5780601f106146745761010080835404028352916020019161469f565b820191906000526020600020905b81548152906001019060200180831161468257829003601f168201915b50508381038252858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156147225780601f106146f757610100808354040283529160200191614722565b820191906000526020600020905b81548152906001019060200180831161470557829003601f168201915b50509650505050505050600060405180830381600087803b15801561474657600080fd5b505af115801561475a573d6000803e3d6000fd5b505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156147e657600080fd5b505afa1580156147fa573d6000803e3d6000fd5b505050506040513d602081101561481057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156148a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600115156148f882619245565b151514151561496f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e20617070726f7665642073746174757300000000000081525060200191505060405180910390fd5b8186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600115156149c3838361635e565b1515141515614a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f5e1a4587878b8b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015614b0e57600080fd5b505af1158015614b22573d6000803e3d6000fd5b505050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015614bb457600080fd5b505afa158015614bc8573d6000803e3d6000fd5b505050506040513d6020811015614bde57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515614cc682619245565b1515141515614d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e20617070726f7665642073746174757300000000000081525060200191505060405180910390fd5b8184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515614d91838361635e565b1515141515614deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b60076040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015614e795780601f10614e4e57610100808354040283529160200191614e79565b820191906000526020600020905b815481529060010190602001808311614e5c57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015614ff1575060086040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015614f7f5780601f10614f5457610100808354040283529160200191614f7f565b820191906000526020600020905b815481529060010190602001808311614f6257829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b1515615065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f61646d696e20726f6c65732063616e6e6f742062652072656d6f76656400000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6343012898989896040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561515657600080fd5b505af115801561516a573d6000803e3d6000fd5b505050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156151fc57600080fd5b505afa158015615210573d6000803e3d6000fd5b505050506040513d602081101561522657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156152bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156152ca82618073565b1515141515615324576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6153ca60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156153bd5780601f10615392576101008083540402835291602001916153bd565b820191906000526020600020905b8154815290600101906020018083116153a057829003601f168201915b50505050508360056194c7565b156154e257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc501468585898960056040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018481526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b1580156154c957600080fd5b505af11580156154dd573d6000803e3d6000fd5b505050505b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b568d7684846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156155c85780820151818401526020810190506155ad565b50505050905090810190601f1680156155f55780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561561357600080fd5b505afa158015615627573d6000803e3d6000fd5b505050506040513d602081101561563d57600080fd5b8101908080519060200190929190505050905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156156da57600080fd5b505afa1580156156ee573d6000803e3d6000fd5b505050506040513d602081101561570457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561579a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156157a882618073565b1515141515615802576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6158a860068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561589b5780601f106158705761010080835404028352916020019161589b565b820191906000526020600020905b81548152906001019060200180831161587e57829003601f168201915b50505050508360046194c7565b15615c41576000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d09dc9388886040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561596b57600080fd5b505af115801561597f573d6000803e3d6000fd5b505050506040513d604081101561599557600080fd5b810190808051906020019092919080519060200190929190505050915091508115615a6157615a6060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015615a535780601f10615a2857610100808354040283529160200191615a53565b820191906000526020600020905b815481529060010190602001808311615a3657829003601f168201915b5050505050826000619777565b5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c214e5e58989896040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015615b5357600080fd5b505af1158015615b67573d6000803e3d6000fd5b505050506040513d6020811015615b7d57600080fd5b810190808051906020019092919050505090508015615c3d57615c3c60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015615c2f5780601f10615c0457610100808354040283529160200191615c2f565b820191906000526020600020905b815481529060010190602001808311615c1257829003601f168201915b5050505050876001619777565b5b5050505b5050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015615ccc57600080fd5b505afa158015615ce0573d6000803e3d6000fd5b505050506040513d6020811015615cf657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515615d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b808360011515615d9c838361635e565b1515141515615df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b8460011515615e0482619245565b1515141515615e7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e20617070726f7665642073746174757300000000000081525060200191505060405180910390fd5b60011515615e8988886154ea565b1515141515615f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b60011515615f0e8688619a0c565b1515141515615f85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f726f6c6520646f6573206e6f742065786973747300000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be322e548789615fd08b619c27565b6040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015616043578082015181840152602081019050616028565b50505050905090810190601f1680156160705780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b838110156160a957808201518184015260208101905061608e565b50505050905090810190601f1680156160d65780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b8381101561610f5780820151818401526020810190506160f4565b50505050905090810190601f16801561613c5780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561615d57600080fd5b505afa158015616171573d6000803e3d6000fd5b505050506040513d602081101561618757600080fd5b810190808051906020019092919050505090506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663143a5604898989856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200184151515158152602001838103835286818151815260200191508051906020019080838360005b8381101561628657808201518184015260208101905061626b565b50505050905090810190601f1680156162b35780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156162ec5780820151818401526020810190506162d1565b50505050905090810190601f1680156163195780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b15801561633c57600080fd5b505af1158015616350573d6000803e3d6000fd5b505050505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8b42bf484846163a886619c27565b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561644957808201518184015260208101905061642e565b50505050905090810190601f1680156164765780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156164af578082015181840152602081019050616494565b50505050905090810190601f1680156164dc5780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b1580156164fc57600080fd5b505afa158015616510573d6000803e3d6000fd5b505050506040513d602081101561652657600080fd5b81019080805190602001909291905050501561654557600190506168a3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be322e546000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381d66b23866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060006040518083038186803b15801561663d57600080fd5b505afa158015616651573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561667b57600080fd5b81019080805164010000000081111561669357600080fd5b828101905060208101848111156166a957600080fd5b81518560018202830111640100000000821117156166c657600080fd5b5050929190505050846166d886619c27565b6040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561674b578082015181840152602081019050616730565b50505050905090810190601f1680156167785780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b838110156167b1578082015181840152602081019050616796565b50505050905090810190601f1680156167de5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b838110156168175780820151818401526020810190506167fc565b50505050905090810190601f1680156168445780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561686557600080fd5b505afa158015616879573d6000803e3d6000fd5b505050506040513d602081101561688f57600080fd5b810190808051906020019092919050505090505b92915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561692d57600080fd5b505afa158015616941573d6000803e3d6000fd5b505050506040513d602081101561695757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156169ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff161515141515616a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e58eb9f600685856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001848152602001838152602001828103825285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616b7b5780601f10616b5057610100808354040283529160200191616b7b565b820191906000526020600020905b815481529060010190602001808311616b5e57829003601f168201915b5050945050505050600060405180830381600087803b158015616b9d57600080fd5b505af1158015616bb1573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b713579600760066009546001806040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018681526020018515151515815260200184151515158152602001838103835288818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616ccf5780601f10616ca457610100808354040283529160200191616ccf565b820191906000526020600020905b815481529060010190602001808311616cb257829003601f168201915b5050838103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616d525780601f10616d2757610100808354040283529160200191616d52565b820191906000526020600020905b815481529060010190602001808311616d3557829003601f168201915b5050975050505050505050600060405180830381600087803b158015616d7757600080fd5b505af1158015616d8b573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cef7f6af600760086040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616e885780601f10616e5d57610100808354040283529160200191616e88565b820191906000526020600020905b815481529060010190602001808311616e6b57829003601f168201915b5050838103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616f0b5780601f10616ee057610100808354040283529160200191616f0b565b820191906000526020600020905b815481529060010190602001808311616eee57829003601f168201915b5050945050505050600060405180830381600087803b158015616f2d57600080fd5b505af1158015616f41573d6000803e3d6000fd5b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015616fce57600080fd5b505afa158015616fe2573d6000803e3d6000fd5b505050506040513d6020811015616ff857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561708e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600115156170e08261963f565b1515141515617157576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f726720646f6573206e6f74206578697374000000000000000000000000000081525060200191505060405180910390fd5b8188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600115156171ab838361635e565b1515141515617205576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f9534808b8b8b8b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156172f657600080fd5b505af115801561730a573d6000803e3d6000fd5b5050505060608a8a8a8a604051602001808060200180602001806020018481038452888882818152602001925080828437600081840152601f19601f820116905080830192505050848103835260018152602001807f2e000000000000000000000000000000000000000000000000000000000000008152506020018481038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509750505050505050506040516020818303038152906040529050600087879050111561751a57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f5e1a458888846040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352868682818152602001925080828437600081840152601f19601f820116905080830192505050838103825284818151815260200191508051906020019080838360005b838110156174b2578082015181840152602081019050617497565b50505050905090810190601f1680156174df5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561750157600080fd5b505af1158015617515573d6000803e3d6000fd5b505050505b5050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156175ab57600080fd5b505afa1580156175bf573d6000803e3d6000fd5b505050506040513d60208110156175d557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561766b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b806001151561767982618073565b15151415156176d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b60018314806176e25750600283145b1515617756576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f7065726174696f6e206e6f7420616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600080600185141561776f576002915060039050617782565b60028514156177815760039150600590505b5b600115156177d488888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083619386565b151514151561784b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f7065726174696f6e206e6f7420616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6178f060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156178e45780601f106178b9576101008083540402835291602001916178e4565b820191906000526020600020905b8154815290600101906020018083116178c757829003601f168201915b505050505085846194c7565b156179d357600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314f775f98888886040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018381526020018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156179ba57600080fd5b505af11580156179ce573d6000803e3d6000fd5b505050505b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015617a6057600080fd5b505afa158015617a74573d6000803e3d6000fd5b505050506040513d6020811015617a8a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515617b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b8060011515617b2e82618073565b1515141515617b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc501468585898960046040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018481526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015617c8257600080fd5b505af1158015617c96573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600688888888600060056040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184810384528b818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015617dd65780601f10617dab57610100808354040283529160200191617dd6565b820191906000526020600020905b815481529060010190602001808311617db957829003601f168201915b505084810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015617e5457600080fd5b505af1158015617e68573d6000803e3d6000fd5b50505050505050505050565b60608060606000600660076008600a60009054906101000a900460ff16838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617f265780601f10617efb57610100808354040283529160200191617f26565b820191906000526020600020905b815481529060010190602001808311617f0957829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617fc25780601f10617f9757610100808354040283529160200191617fc2565b820191906000526020600020905b815481529060010190602001808311617fa557829003601f168201915b50505050509250818054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561805e5780601f106180335761010080835404028352916020019161805e565b820191906000526020600020905b81548152906001019060200180831161804157829003601f168201915b50505050509150935093509350935090919293565b6000600760405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156181035780601f106180d857610100808354040283529160200191618103565b820191906000526020600020905b8154815290600101906020018083116180e657829003601f168201915b505092505050604051602081830303815290604052805190602001206000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381d66b23846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060006040518083038186803b1580156181d957600080fd5b505afa1580156181ed573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561821757600080fd5b81019080805164010000000081111561822f57600080fd5b8281019050602081018481111561824557600080fd5b815185600182028301116401000000008211171561826257600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156182ad578082015181840152602081019050618292565b50505050905090810190601f1680156182da5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561838157600080fd5b505afa158015618395573d6000803e3d6000fd5b505050506040513d60208110156183ab57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515618441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b8086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515618495838361635e565b15151415156184ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b60018414806184fe5750600284145b806185095750600384145b1515618560576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180619e5b6025913960400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc5014687878b8b896040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018481526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561865957600080fd5b505af115801561866d573d6000803e3d6000fd5b505050505050505050505050565b606080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663014e6acc87876040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561873c57600080fd5b505afa158015618750573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250608081101561877a57600080fd5b81019080805164010000000081111561879257600080fd5b828101905060208101848111156187a857600080fd5b81518560018202830111640100000000821117156187c557600080fd5b505092919060200180516401000000008111156187e157600080fd5b828101905060208101848111156187f757600080fd5b815185600182028301116401000000008211171561881457600080fd5b50509291906020018051906020019092919080519060200190929190505050935093509350935092959194509250565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515618909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6000801515600a60009054906101000a900460ff161515141515618995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b8787600691906189a6929190619db5565b508585600791906189b8929190619db5565b508383600891906189ca929190619db5565b5081600a60006101000a81548160ff0219169083151502179055505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015618a7357600080fd5b505afa158015618a87573d6000803e3d6000fd5b505050506040513d6020811015618a9d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515618b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6001801515600a60009054906101000a900460ff161515141515618bbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b8160011515618bcd82618073565b1515141515618c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d60068a8a8a8a8a60016040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184810384528b818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015618d625780601f10618d3757610100808354040283529160200191618d62565b820191906000526020600020905b815481529060010190602001808311618d4557829003601f168201915b505084810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015618de057600080fd5b505af1158015618df4573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f9953de589896040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015618eb557600080fd5b505af1158015618ec9573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a97a440687878b8b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015618fbe57600080fd5b505af1158015618fd2573d6000803e3d6000fd5b5050505060011515619028858a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506154ea565b151514151561909f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d858a8a600860016040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018481526020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156191fe5780601f106191d3576101008083540402835291602001916191fe565b820191906000526020600020905b8154815290600101906020018083116191e157829003601f168201915b5050975050505050505050600060405180830381600087803b15801561922357600080fd5b505af1158015619237573d6000803e3d6000fd5b505050505050505050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c8642df8360026040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156192f95780820151818401526020810190506192de565b50505050905090810190601f1680156193265780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561934457600080fd5b505afa158015619358573d6000803e3d6000fd5b505050506040513d602081101561936e57600080fd5b81019080805190602001909291905050509050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c8642df84846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561943957808201518184015260208101905061941e565b50505050905090810190601f1680156194665780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561948457600080fd5b505afa158015619498573d6000803e3d6000fd5b505050506040513d60208110156194ae57600080fd5b8101908080519060200190929190505050905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02138648585856040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156195ad578082015181840152602081019050619592565b50505050905090810190601f1680156195da5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156195fb57600080fd5b505af115801561960f573d6000803e3d6000fd5b505050506040513d602081101561962557600080fd5b810190808051906020019092919050505090509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffe40d1d836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156196eb5780820151818401526020810190506196d0565b50505050905090810190601f1680156197185780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561973557600080fd5b505afa158015619749573d6000803e3d6000fd5b505050506040513d602081101561975f57600080fd5b81019080805190602001909291905050509050919050565b80156198c457600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635607395b84846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561985a57808201518184015260208101905061983f565b50505050905090810190601f1680156198875780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156198a757600080fd5b505af11580156198bb573d6000803e3d6000fd5b50505050619a07565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359cbd6fe84846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156199a1578082015181840152602081019050619986565b50505050905090810190601f1680156199ce5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156199ee57600080fd5b505af1158015619a02573d6000803e3d6000fd5b505050505b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abf5739f8484619a5786619c27565b6040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015619aca578082015181840152602081019050619aaf565b50505050905090810190601f168015619af75780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b83811015619b30578082015181840152602081019050619b15565b50505050905090810190601f168015619b5d5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015619b96578082015181840152602081019050619b7b565b50505050905090810190601f168015619bc35780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015619be457600080fd5b505afa158015619bf8573d6000803e3d6000fd5b505050506040513d6020811015619c0e57600080fd5b8101908080519060200190929190505050905092915050565b6060600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663177c8d8a836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015619cd3578082015181840152602081019050619cb8565b50505050905090810190601f168015619d005780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b158015619d1d57600080fd5b505afa158015619d31573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015619d5b57600080fd5b810190808051640100000000811115619d7357600080fd5b82810190506020810184811115619d8957600080fd5b8151856001820283011164010000000082111715619da657600080fd5b50509291905050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10619df657803560ff1916838001178555619e24565b82800160010185558215619e24579182015b82811115619e23578235825591602001919060010190619e08565b5b509050619e319190619e35565b5090565b619e5791905b80821115619e53576000816000905550600101619e3b565b5090565b9056fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a723058201cfc4043c31882758609d4d19ea314d7cb2a97d0aad47c021996fe1b795b5a1a0029` +const PermImplBin = `60806040526003600955600a805460ff191690553480156200002057600080fd5b5060405160c08062007583833981018060405260c08110156200004257600080fd5b508051602082015160408301516060840151608085015160a09095015160058054600160a060020a03968716600160a060020a03199182161790915560048054958716958216959095179094556001805493861693851693909317909255600080549185169184169190911790556002805494841694831694909417909355600380549290931691161790556174a580620000de6000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a90048063655a8ef511610108578063b5546564116100a6578063dbfad71111610075578063dbfad7111461119a578063f346a3a714611267578063f5ad584a146113d3578063f922f802146114e3576101d3565b8063b554656414610edc578063c3dc8e0914610f59578063cc9ba6fa14611020578063d1aa0c2014611174576101d3565b80638baa8191116100e25780638baa819114610baa5780639bd3810114610cee578063a5843f0814610da2578063a64d286014610dc5576101d3565b8063655a8ef5146109b05780636b568d7614610a775780638884304114610b2b576101d3565b8063404bf3eb116101755780634cbfa82e1161014f5780634cbfa82e146107f45780634fe57e7a146107fc57806359a260a3146108225780635ca5adbe146108e9576101d3565b8063404bf3eb1461068557806344478e79146107595780634b20f45f14610775576101d3565b80631c249912116101b15780631c2499121461044c5780633bc07dea146104cb5780633cf5f33b1461059a5780633f25c28814610617576101d3565b806304e81f1e146101d85780631b04c276146102615780631b6102201461033e575b600080fd5b61025f600480360360808110156101ee57600080fd5b810190602081018135602060020a81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111602060020a8311171561023b57600080fd5b9193509150600160a060020a038135811691602081013591604090910135166115b2565b005b61025f600480360360c081101561027757600080fd5b810190602081018135602060020a81111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111602060020a831117156102c457600080fd5b919390929091602081019035602060020a8111156102e157600080fd5b8201836020820111156102f357600080fd5b803590602001918460018302840111602060020a8311171561031457600080fd5b91935091508035906020810135151590604081013515159060600135600160a060020a031661181e565b61025f6004803603606081101561035457600080fd5b810190602081018135602060020a81111561036e57600080fd5b82018360208201111561038057600080fd5b803590602001918460018302840111602060020a831117156103a157600080fd5b919390929091602081019035602060020a8111156103be57600080fd5b8201836020820111156103d057600080fd5b803590602001918460018302840111602060020a831117156103f157600080fd5b919390929091602081019035602060020a81111561040e57600080fd5b82018360208201111561042057600080fd5b803590602001918460018302840111602060020a8311171561044157600080fd5b509092509050611af9565b61025f6004803603606081101561046257600080fd5b810190602081018135602060020a81111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111602060020a831117156104af57600080fd5b9193509150600160a060020a0381358116916020013516611c3b565b61025f600480360360808110156104e157600080fd5b810190602081018135602060020a8111156104fb57600080fd5b82018360208201111561050d57600080fd5b803590602001918460018302840111602060020a8311171561052e57600080fd5b919390929091602081019035602060020a81111561054b57600080fd5b82018360208201111561055d57600080fd5b803590602001918460018302840111602060020a8311171561057e57600080fd5b9193509150600160a060020a0381358116916020013516611f53565b61025f600480360360608110156105b057600080fd5b810190602081018135602060020a8111156105ca57600080fd5b8201836020820111156105dc57600080fd5b803590602001918460018302840111602060020a831117156105fd57600080fd5b919350915080359060200135600160a060020a0316612534565b61025f6004803603602081101561062d57600080fd5b810190602081018135602060020a81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111602060020a8311171561067a57600080fd5b509092509050612855565b61025f6004803603608081101561069b57600080fd5b810190602081018135602060020a8111156106b557600080fd5b8201836020820111156106c757600080fd5b803590602001918460018302840111602060020a831117156106e857600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561071257600080fd5b82018360208201111561072457600080fd5b803590602001918460018302840111602060020a8311171561074557600080fd5b919350915035600160a060020a0316612a82565b610761612e62565b604080519115158252519081900360200190f35b61025f6004803603606081101561078b57600080fd5b810190602081018135602060020a8111156107a557600080fd5b8201836020820111156107b757600080fd5b803590602001918460018302840111602060020a831117156107d857600080fd5b9193509150600160a060020a0381358116916020013516612f9a565b6107616131fc565b61025f6004803603602081101561081257600080fd5b5035600160a060020a0316613206565b61025f6004803603606081101561083857600080fd5b810190602081018135602060020a81111561085257600080fd5b82018360208201111561086457600080fd5b803590602001918460018302840111602060020a8311171561088557600080fd5b919390929091602081019035602060020a8111156108a257600080fd5b8201836020820111156108b457600080fd5b803590602001918460018302840111602060020a831117156108d557600080fd5b919350915035600160a060020a0316613540565b61025f600480360360608110156108ff57600080fd5b810190602081018135602060020a81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460018302840111602060020a8311171561094c57600080fd5b919390929091602081019035602060020a81111561096957600080fd5b82018360208201111561097b57600080fd5b803590602001918460018302840111602060020a8311171561099c57600080fd5b919350915035600160a060020a03166137d5565b61025f600480360360608110156109c657600080fd5b810190602081018135602060020a8111156109e057600080fd5b8201836020820111156109f257600080fd5b803590602001918460018302840111602060020a83111715610a1357600080fd5b919390929091602081019035602060020a811115610a3057600080fd5b820183602082011115610a4257600080fd5b803590602001918460018302840111602060020a83111715610a6357600080fd5b919350915035600160a060020a0316613cb0565b61076160048036036040811015610a8d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111602060020a83111715610aea57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613f2d945050505050565b61025f60048036036060811015610b4157600080fd5b810190602081018135602060020a811115610b5b57600080fd5b820183602082011115610b6d57600080fd5b803590602001918460018302840111602060020a83111715610b8e57600080fd5b9193509150600160a060020a0381358116916020013516614031565b61025f60048036036080811015610bc057600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610bea57600080fd5b820183602082011115610bfc57600080fd5b803590602001918460018302840111602060020a83111715610c1d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610c6f57600080fd5b820183602082011115610c8157600080fd5b803590602001918460018302840111602060020a83111715610ca257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506144b59050565b61076160048036036040811015610d0457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610d2e57600080fd5b820183602082011115610d4057600080fd5b803590602001918460018302840111602060020a83111715610d6157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506149df945050505050565b61025f60048036036040811015610db857600080fd5b5080359060200135614db3565b61025f60048036036080811015610ddb57600080fd5b810190602081018135602060020a811115610df557600080fd5b820183602082011115610e0757600080fd5b803590602001918460018302840111602060020a83111715610e2857600080fd5b919390929091602081019035602060020a811115610e4557600080fd5b820183602082011115610e5757600080fd5b803590602001918460018302840111602060020a83111715610e7857600080fd5b919390929091602081019035602060020a811115610e9557600080fd5b820183602082011115610ea757600080fd5b803590602001918460018302840111602060020a83111715610ec857600080fd5b919350915035600160a060020a03166152b3565b61025f60048036036060811015610ef257600080fd5b810190602081018135602060020a811115610f0c57600080fd5b820183602082011115610f1e57600080fd5b803590602001918460018302840111602060020a83111715610f3f57600080fd5b919350915080359060200135600160a060020a0316615729565b61025f60048036036060811015610f6f57600080fd5b810190602081018135602060020a811115610f8957600080fd5b820183602082011115610f9b57600080fd5b803590602001918460018302840111602060020a83111715610fbc57600080fd5b919390929091602081019035602060020a811115610fd957600080fd5b820183602082011115610feb57600080fd5b803590602001918460018302840111602060020a8311171561100c57600080fd5b919350915035600160a060020a0316615a9b565b611028615dd0565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b8381101561107457818101518382015260200161105c565b50505050905090810190601f1680156110a15780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156110d45781810151838201526020016110bc565b50505050905090810190601f1680156111015780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561113457818101518382015260200161111c565b50505050905090810190601f1680156111615780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6107616004803603602081101561118a57600080fd5b5035600160a060020a0316615fa3565b61025f600480360360808110156111b057600080fd5b810190602081018135602060020a8111156111ca57600080fd5b8201836020820111156111dc57600080fd5b803590602001918460018302840111602060020a831117156111fd57600080fd5b919390929091602081019035602060020a81111561121a57600080fd5b82018360208201111561122c57600080fd5b803590602001918460018302840111602060020a8311171561124d57600080fd5b919350915080359060200135600160a060020a03166161bd565b6112d56004803603602081101561127d57600080fd5b810190602081018135602060020a81111561129757600080fd5b8201836020820111156112a957600080fd5b803590602001918460018302840111602060020a831117156112ca57600080fd5b50909250905061642e565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561133457818101518382015260200161131c565b50505050905090810190601f1680156113615780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561139457818101518382015260200161137c565b50505050905090810190601f1680156113c15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61025f600480360360808110156113e957600080fd5b810190602081018135602060020a81111561140357600080fd5b82018360208201111561141557600080fd5b803590602001918460018302840111602060020a8311171561143657600080fd5b919390929091602081019035602060020a81111561145357600080fd5b82018360208201111561146557600080fd5b803590602001918460018302840111602060020a8311171561148657600080fd5b919390929091602081019035602060020a8111156114a357600080fd5b8201836020820111156114b557600080fd5b803590602001918460018302840111602060020a831117156114d657600080fd5b91935091503515156165ad565b61025f600480360360808110156114f957600080fd5b810190602081018135602060020a81111561151357600080fd5b82018360208201111561152557600080fd5b803590602001918460018302840111602060020a8311171561154657600080fd5b919390929091602081019035602060020a81111561156357600080fd5b82018360208201111561157557600080fd5b803590602001918460018302840111602060020a8311171561159657600080fd5b9193509150600160a060020a038135811691602001351661669c565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561160357600080fd5b505afa158015611617573d6000803e3d6000fd5b505050506040513d602081101561162d57600080fd5b5051600160a060020a031633146116785760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116bc92508491508390506149df565b15156001146116ff5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b836001148061170e5750836002145b806117195750836003145b15156117595760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173e56025913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03878116602483015260448201879052606060048301908152606483018a90529216916384b7a84a918a918a918a918a918190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561186f57600080fd5b505afa158015611883573d6000803e3d6000fd5b505050506040513d602081101561189957600080fd5b5051600160a060020a031633146118e45760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119269250839150616c8a9050565b151560011461196d576040805160e560020a62461bcd02815260206004820152601a60248201526000805160206173a5833981519152604482015290519081900360640190fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119b192508491508390506149df565b15156001146119f45760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b6001546040517f7b713579000000000000000000000000000000000000000000000000000000008152604481018990528715156064820152861515608482015260a06004820190815260a482018d9052600160a060020a0390921691637b713579918e918e918e918e918e918e918e91908190602481019060c4018a8a80828437600083820152601f01601f191690910184810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611b4a57600080fd5b505afa158015611b5e573d6000803e3d6000fd5b505050506040513d6020811015611b7457600080fd5b5051600160a060020a03163314611bbf5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615611c0b576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b611c1760068888617316565b50611c2460078686617316565b50611c3160088484617316565b5050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611c8c57600080fd5b505afa158015611ca0573d6000803e3d6000fd5b505050506040513d6020811015611cb657600080fd5b5051600160a060020a03163314611d015760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b80611d0b81615fa3565b1515600114611d4e5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260046044830181905260608382019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611df657600080fd5b505af1158015611e0a573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a03888116606483015260066084830181905260a060048401908152815460001960018216156101000201169590950460a4840181905291909316955063e98ac22d945091928a928a928a928692909182916024820191604481019160c49091019086908015611ed75780601f10611eac57610100808354040283529160200191611ed7565b820191906000526020600020905b815481529060010190602001808311611eba57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611fa457600080fd5b505afa158015611fb8573d6000803e3d6000fd5b505050506040513d6020811015611fce57600080fd5b5051600160a060020a031633146120195760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8061202381615fa3565b15156001146120665760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6120a887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250616d8f915050565b1515600114612101576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261219b939092909183018282801561218e5780601f106121635761010080835404028352916020019161218e565b820191906000526020600020905b81548152906001019060200180831161217157829003601f168201915b5050505050836001616e12565b1561252b57600480546040517fe3028316000000000000000000000000000000000000000000000000000000008152602092810192835260248101899052600160a060020a039091169163e3028316918a918a918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561223057600080fd5b505af1158015612244573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526008805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b7135799650948e948e94939192839290918291602481019160c4909101908a90801561232a5780601f106122ff5761010080835404028352916020019161232a565b820191906000526020600020905b81548152906001019060200180831161230d57829003601f168201915b50508381038252878152602001888880828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561237857600080fd5b505af115801561238c573d6000803e3d6000fd5b5050600354604080517f86bc36520000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921693506386bc36529250889188918c918c919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561244f57600080fd5b505af1158015612463573d6000803e3d6000fd5b5050600054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03888116602483015260048201928352604482018c9052909216935063c214e5e592508a918a9188918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050506040513d6020811015611f4857600080fd5b50505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561258557600080fd5b505afa158015612599573d6000803e3d6000fd5b505050506040513d60208110156125af57600080fd5b5051600160a060020a031633146125fa5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8061260481615fa3565b15156001146126475760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b60048054604080517f0cc274930000000000000000000000000000000000000000000000000000000081526024810187905292830190815260448301879052600092600160a060020a0390921691630cc27493918991899189918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b505050506040513d602081101561270d57600080fd5b50516002805460405160e060020a63e98ac22d0281526000606482018190526084820185905260a0600483019081526006805460001960018216156101000201169590950460a48401819052959650600160a060020a039093169463e98ac22d94938c938c939289929182916024820191604481019160c4909101908a9080156127d85780601f106127ad576101008083540402835291602001916127d8565b820191906000526020600020905b8154815290600101906020018083116127bb57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156128a657600080fd5b505afa1580156128ba573d6000803e3d6000fd5b505050506040513d60208110156128d057600080fd5b5051600160a060020a0316331461291b5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615612967576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b600354604080517fe3b09d840000000000000000000000000000000000000000000000000000000081526004810191825260448101859052600160a060020a039092169163e3b09d84918691869160069181906024810190606401868680828437600083820152601f01601f191690910184810383528554600260001961010060018416150201909116048082526020909101915085908015612a4b5780601f10612a2057610100808354040283529160200191612a4b565b820191906000526020600020905b815481529060010190602001808311612a2e57829003601f168201915b505095505050505050600060405180830381600087803b158015612a6e57600080fd5b505af115801561252b573d6000803e3d6000fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612ad357600080fd5b505afa158015612ae7573d6000803e3d6000fd5b505050506040513d6020811015612afd57600080fd5b5051600160a060020a03163314612b485760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8a9250839150616f229050565b1515600114612be3576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b81612bed81615fa3565b1515600114612c305760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d938b938e938e938d938d9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a038b8116606483015260046084830181905260a08382019081526006805460001960018216156101000201169690960460a4850181905292909416965063e98ac22d95508e938e938e9382916024810191604482019160c401908a908015612de35780601f10612db857610100808354040283529160200191612de3565b820191906000526020600020905b815481529060010190602001808311612dc657829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612e4057600080fd5b505af1158015612e54573d6000803e3d6000fd5b505050505050505050505050565b600554604080517fe572515c0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e572515c916004808301926020929190829003018186803b158015612ec057600080fd5b505afa158015612ed4573d6000803e3d6000fd5b505050506040513d6020811015612eea57600080fd5b5051600160a060020a03163314612f355760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615612f81576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b600a805460ff19166001179081905560ff1691505b5090565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612feb57600080fd5b505afa158015612fff573d6000803e3d6000fd5b505050506040513d602081101561301557600080fd5b5051600160a060020a031633146130605760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8061306a81615fa3565b15156001146130ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613147939092909183018282801561313a5780601f1061310f5761010080835404028352916020019161313a565b820191906000526020600020905b81548152906001019060200180831161311d57829003601f168201915b5050505050836006616e12565b156131f5576000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660248301526005604483018190526060600484019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611f3457600080fd5b5050505050565b600a5460ff165b90565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561325757600080fd5b505afa15801561326b573d6000803e3d6000fd5b505050506040513d602081101561328157600080fd5b5051600160a060020a031633146132cc5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615613318576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526133b293909290918301828280156133a55780601f1061337a576101008083540402835291602001916133a5565b820191906000526020600020905b81548152906001019060200180831161338857829003601f168201915b5050505050836001616fe7565b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830190815260026064840181905260806024850190815260068054600019600182161561010002011683900460848701819052949096169563e3483a9d95899591946007949390929091604481019160a4909101908790801561348c5780601f106134615761010080835404028352916020019161348c565b820191906000526020600020905b81548152906001019060200180831161346f57829003601f168201915b50508381038252855460026000196101006001841615020190911604808252602090910190869080156135005780601f106134d557610100808354040283529160200191613500565b820191906000526020600020905b8154815290600101906020018083116134e357829003601f168201915b50509650505050505050600060405180830381600087803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d60208110156135bb57600080fd5b5051600160a060020a031633146136065760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136489250839150616c8a9050565b151560011461368f576040805160e560020a62461bcd02815260206004820152601a60248201526000805160206173a5833981519152604482015290519081900360640190fd5b8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136d392508491508390506149df565b15156001146137165760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101889052600160a060020a0390921691633f5e1a4591899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561382657600080fd5b505afa15801561383a573d6000803e3d6000fd5b505050506040513d602081101561385057600080fd5b5051600160a060020a0316331461389b5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138dd9250839150616c8a9050565b1515600114613924576040805160e560020a62461bcd02815260206004820152601a60248201526000805160206173a5833981519152604482015290519081900360640190fd5b8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061396892508491508390506149df565b15156001146139ab5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b6040805160208082019081526007805460026000196101006001841615020190911604938301849052929091829160609091019084908015613a2e5780601f10613a0357610100808354040283529160200191613a2e565b820191906000526020600020905b815481529060010190602001808311613a1157829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015613b9b57506040805160208082019081526008805460026000196101006001841615020190911604938301849052929091829160609091019084908015613b295780601f10613afe57610100808354040283529160200191613b29565b820191906000526020600020905b815481529060010190602001808311613b0c57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b1515613bf1576040805160e560020a62461bcd02815260206004820152601d60248201527f61646d696e20726f6c65732063616e6e6f742062652072656d6f766564000000604482015290519081900360640190fd5b600154604080517fa634301200000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a039092169163a6343012918b918b918b918b919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015613d0157600080fd5b505afa158015613d15573d6000803e3d6000fd5b505050506040513d6020811015613d2b57600080fd5b5051600160a060020a03163314613d765760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b80613d8081615fa3565b1515600114613dc35760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613e5d9390929091830182828015613e505780601f10613e2557610100808354040283529160200191613e50565b820191906000526020600020905b815481529060010190602001808311613e3357829003601f168201915b5050505050836005616e12565b15613538576003546040517f0cc5014600000000000000000000000000000000000000000000000000000000815260056044820181905260606004830190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561283557600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152602483019384528651604484015286519190941693636b568d76938893889360649091019060208501908083838c5b83811015613fb1578181015183820152602001613f99565b50505050905090810190601f168015613fde5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015613ffc57600080fd5b505afa158015614010573d6000803e3d6000fd5b505050506040513d602081101561402657600080fd5b505190505b92915050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561408257600080fd5b505afa158015614096573d6000803e3d6000fd5b505050506040513d60208110156140ac57600080fd5b5051600160a060020a031633146140f75760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8061410181615fa3565b15156001146141445760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526141de93909290918301828280156141d15780601f106141a6576101008083540402835291602001916141d1565b820191906000526020600020905b8154815290600101906020018083116141b457829003601f168201915b5050505050836004616e12565b156131f557600080546040517f1d09dc93000000000000000000000000000000000000000000000000000000008152602060048201908152602482018890528392600160a060020a031691631d09dc93918a918a91908190604401848480828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561427457600080fd5b505af1158015614288573d6000803e3d6000fd5b505050506040513d604081101561429e57600080fd5b5080516020909101519092509050811561434c5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261434c939092909183018282801561433f5780601f106143145761010080835404028352916020019161433f565b820191906000526020600020905b81548152906001019060200180831161432257829003601f168201915b5050505050826000616fe7565b60008054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03898116602483015260048201928352604482018b90529092169163c214e5e5918b918b918b918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156143e757600080fd5b505af11580156143fb573d6000803e3d6000fd5b505050506040513d602081101561441157600080fd5b505190508015611c315760068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152611c3193909290918301828280156144a85780601f1061447d576101008083540402835291602001916144a8565b820191906000526020600020905b81548152906001019060200180831161448b57829003601f168201915b5050505050876001616fe7565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561450657600080fd5b505afa15801561451a573d6000803e3d6000fd5b505050506040513d602081101561453057600080fd5b5051600160a060020a0316331461457b5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b808361458782826149df565b15156001146145ca5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b846145d481616c8a565b151560011461461b576040805160e560020a62461bcd02815260206004820152601a60248201526000805160206173a5833981519152604482015290519081900360640190fd5b6146258787613f2d565b151560011461467e576040805160e560020a62461bcd02815260206004820152601d60248201527f6f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b61468885876171a9565b15156001146146e1576040805160e560020a62461bcd02815260206004820152601460248201527f726f6c6520646f6573206e6f7420657869737473000000000000000000000000604482015290519081900360640190fd5b600154600090600160a060020a031663be322e548789614700816171c4565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561475757818101518382015260200161473f565b50505050905090810190601f1680156147845780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156147b757818101518382015260200161479f565b50505050905090810190601f1680156147e45780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156148175781810151838201526020016147ff565b50505050905090810190601f1680156148445780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561486557600080fd5b505afa158015614879573d6000803e3d6000fd5b505050506040513d602081101561488f57600080fd5b5051600080546040517f143a5604000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830190815285151560648401526080602484019081528d5160848501528d51969750919093169463143a5604948e948e948e948a9492939092604483019260a401916020890191908190849084905b8381101561492f578181015183820152602001614917565b50505050905090810190601f16801561495c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561498f578181015183820152602001614977565b50505050905090810190601f1680156149bc5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612e4057600080fd5b60008054600160a060020a031663e8b42bf484846149fc816171c4565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015614a67578181015183820152602001614a4f565b50505050905090810190601f168015614a945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015614ac7578181015183820152602001614aaf565b50505050905090810190601f168015614af45780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b158015614b1457600080fd5b505afa158015614b28573d6000803e3d6000fd5b505050506040513d6020811015614b3e57600080fd5b505115614b4d5750600161402b565b60015460008054604080517f81d66b23000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015291519482169463be322e549493909216926381d66b2392602480840193829003018186803b158015614bbc57600080fd5b505afa158015614bd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015614bf957600080fd5b810190808051602060020a811115614c1057600080fd5b82016020810184811115614c2357600080fd5b8151602060020a811182820187101715614c3c57600080fd5b505092919050505084614c4e866171c4565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614ca5578181015183820152602001614c8d565b50505050905090810190601f168015614cd25780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015614d05578181015183820152602001614ced565b50505050905090810190601f168015614d325780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015614d65578181015183820152602001614d4d565b50505050905090810190601f168015614d925780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015613ffc57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015614e0457600080fd5b505afa158015614e18573d6000803e3d6000fd5b505050506040513d6020811015614e2e57600080fd5b5051600160a060020a03163314614e795760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615614ec5576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b600480546040517f9e58eb9f00000000000000000000000000000000000000000000000000000000815260248101869052604481018590526060928101928352600680546002600019600183161561010002019091160460648301819052600160a060020a0390931693639e58eb9f9391928892889291829160849091019086908015614f935780601f10614f6857610100808354040283529160200191614f93565b820191906000526020600020905b815481529060010190602001808311614f7657829003601f168201915b5050945050505050600060405180830381600087803b158015614fb557600080fd5b505af1158015614fc9573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526007805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b71357996509460069490928392918291602481019160c490910190899080156150ac5780601f10615081576101008083540402835291602001916150ac565b820191906000526020600020905b81548152906001019060200180831161508f57829003601f168201915b50508381038252875460026000196101006001841615020190911604808252602090910190889080156151205780601f106150f557610100808354040283529160200191615120565b820191906000526020600020905b81548152906001019060200180831161510357829003601f168201915b5050975050505050505050600060405180830381600087803b15801561514557600080fd5b505af1158015615159573d6000803e3d6000fd5b5050600054604080517fcef7f6af00000000000000000000000000000000000000000000000000000000815260048101918252600780546002600019600183161561010002019091160460448301819052600160a060020a03909416955063cef7f6af9450926008929182916024820191606401908690801561521d5780601f106151f25761010080835404028352916020019161521d565b820191906000526020600020905b81548152906001019060200180831161520057829003601f168201915b50508381038252845460026000196101006001841615020190911604808252602090910190859080156152915780601f1061526657610100808354040283529160200191615291565b820191906000526020600020905b81548152906001019060200180831161527457829003601f168201915b5050945050505050600060405180830381600087803b158015612a6e57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561530457600080fd5b505afa158015615318573d6000803e3d6000fd5b505050506040513d602081101561532e57600080fd5b5051600160a060020a031633146153795760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506153bb9250839150616f229050565b1515600114615414576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061545892508491508390506149df565b151560011461549b5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b60048054604080517f1f953480000000000000000000000000000000000000000000000000000000008152928301908152604483018c9052600160a060020a0390911691631f953480918d918d918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561555a57600080fd5b505af115801561556e573d6000803e3d6000fd5b5050505060608a8a8a8a604051602001808060200180602001806020018481038452888882818152602001925080828437600083820152601f01601f1916909101858103808552600182527f2e0000000000000000000000000000000000000000000000000000000000000060208301526040908101845281018790526060019050868680828437600083820181905260408051601f909301601f199081169095018381039095018352939093529a50508e11159750611811965050505050505057600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921691633f5e1a45918a918a918691819060248101906064018686808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b838110156156da5781810151838201526020016156c2565b50505050905090810190601f1680156157075780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ad457600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561577a57600080fd5b505afa15801561578e573d6000803e3d6000fd5b505050506040513d60208110156157a457600080fd5b5051600160a060020a031633146157ef5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b806157f981615fa3565b151560011461583c5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b826001148061584b5750826002145b15156158a1576040805160e560020a62461bcd02815260206004820152601560248201527f4f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60008084600114156158b957506002905060036158ca565b84600214156158ca57506003905060055b61590b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250616d8f915050565b1515600114615964576040805160e560020a62461bcd02815260206004820152601560248201527f6f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526159fd93909290918301828280156159f15780601f106159c6576101008083540402835291602001916159f1565b820191906000526020600020905b8154815290600101906020018083116159d457829003601f168201915b50505050508584616e12565b1561252b5760048054604080517f14f775f90000000000000000000000000000000000000000000000000000000081526024810189905292830190815260448301899052600160a060020a03909116916314f775f9918a918a918a918190606401858580828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156117fd57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015615aec57600080fd5b505afa158015615b00573d6000803e3d6000fd5b505050506040513d6020811015615b1657600080fd5b5051600160a060020a03163314615b615760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b80615b6b81615fa3565b1515600114615bae5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6003546040517f0cc50146000000000000000000000000000000000000000000000000000000008152600460448201819052606082820190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015615c7857600080fd5b505af1158015615c8c573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d02815260006064820181905260056084830181905260a0600484019081526006805460001960018216156101000201169690960460a48501819052600160a060020a03909516975063e98ac22d96508d948d948d948d9490939092909182916024820191604481019160c4909101908c908015615d5d5780601f10615d3257610100808354040283529160200191615d5d565b820191906000526020600020905b815481529060010190602001808311615d4057829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561283557600080fd5b600a5460068054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260609485948594600094919360079360089360ff909116928691830182828015615e725780601f10615e4757610100808354040283529160200191615e72565b820191906000526020600020905b815481529060010190602001808311615e5557829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015615f005780601f10615ed557610100808354040283529160200191615f00565b820191906000526020600020905b815481529060010190602001808311615ee357829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015615f8e5780601f10615f6357610100808354040283529160200191615f8e565b820191906000526020600020905b815481529060010190602001808311615f7157829003601f168201915b50505050509150935093509350935090919293565b604080516020808201908152600780546002600019610100600184161502019091160493830184905260009390928291606090910190849080156160285780601f10615ffd57610100808354040283529160200191616028565b820191906000526020600020905b81548152906001019060200180831161600b57829003601f168201915b505060408051601f198184030181528282528051602090910120600080547f81d66b23000000000000000000000000000000000000000000000000000000008552600160a060020a038a8116600487015293519297509290921694506381d66b239350602480840193829003018186803b1580156160a557600080fd5b505afa1580156160b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156160e257600080fd5b810190808051602060020a8111156160f957600080fd5b8201602081018481111561610c57600080fd5b8151602060020a81118282018710171561612557600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561616d578181015183820152602001616155565b50505050905090810190601f16801561619a5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561620e57600080fd5b505afa158015616222573d6000803e3d6000fd5b505050506040513d602081101561623857600080fd5b5051600160a060020a031633146162835760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506162c792508491508390506149df565b151560011461630a5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b83600114806163195750836002145b806163245750836003145b15156163645760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173e56025913960400191505060405180910390fd5b6003546040517f0cc501460000000000000000000000000000000000000000000000000000000081526044810186905260606004820190815260648201889052600160a060020a0390921691630cc5014691899189918d918d918b919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612e4057600080fd5b6002546040517f014e6acc0000000000000000000000000000000000000000000000000000000081526020600482019081526024820184905260609283926000928392600160a060020a03169163014e6acc9189918991908190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b1580156164c557600080fd5b505afa1580156164d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561650257600080fd5b810190808051602060020a81111561651957600080fd5b8201602081018481111561652c57600080fd5b8151602060020a81118282018710171561654557600080fd5b50509291906020018051602060020a81111561656057600080fd5b8201602081018481111561657357600080fd5b8151602060020a81118282018710171561658c57600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b600554600160a060020a0316331461660f576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600a5460009060ff161561665b576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b61666760068989617316565b5061667460078787617316565b5061668160088585617316565b5050600a805460ff1916911515919091179055505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156166ed57600080fd5b505afa158015616701573d6000803e3d6000fd5b505050506040513d602081101561671757600080fd5b5051600160a060020a031633146167625760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460019060ff16151581146167b1576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b816167bb81615fa3565b15156001146167fe5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6002805460405160e060020a63e98ac22d028152600160a060020a03878116606483015260016084830181905260a06004840190815260068054600019818516156101000201169690960460a48501819052929094169463e98ac22d9490938e938e938e938e938e9382916024810191604482019160c401908c9080156168c65780601f1061689b576101008083540402835291602001916168c6565b820191906000526020600020905b8154815290600101906020018083116168a957829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561693957600080fd5b505af115801561694d573d6000803e3d6000fd5b5050600480546040517ff9953de50000000000000000000000000000000000000000000000000000000081526020928101928352602481018c9052600160a060020a03909116935063f9953de592508b918b918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b1580156169e157600080fd5b505af11580156169f5573d6000803e3d6000fd5b5050600354604080517fa97a440600000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a03909216935063a97a44069250899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015616ab857600080fd5b505af1158015616acc573d6000803e3d6000fd5b50505050616b108489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613f2d92505050565b1515600114616b69576040805160e560020a62461bcd02815260206004820152601d60248201527f4f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d9389938e938e93600893909290604481019060a401878780828437600083820152601f01601f191690910184810383528654600260001961010060018416150201909116048082526020909101915086908015616c655780601f10616c3a57610100808354040283529160200191616c65565b820191906000526020600020905b815481529060010190602001808311616c4857829003601f168201915b5050975050505050505050600060405180830381600087803b158015612e4057600080fd5b60048054604080517f8c8642df000000000000000000000000000000000000000000000000000000008152600260248201819052938101918252845160448201528451600094600160a060020a0390941693638c8642df93879391929091829160649091019060208601908083838c5b83811015616d12578181015183820152602001616cfa565b50505050905090810190601f168015616d3f5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015616d5d57600080fd5b505afa158015616d71573d6000803e3d6000fd5b505050506040513d6020811015616d8757600080fd5b505192915050565b60048054604080517f8c8642df00000000000000000000000000000000000000000000000000000000815260248101859052928301908152845160448401528451600093600160a060020a0390931692638c8642df9287928792829160649091019060208601908083838c83811015613fb1578181015183820152602001613f99565b6002546040517fb0213864000000000000000000000000000000000000000000000000000000008152600160a060020a03848116602483015260448201849052606060048301908152865160648401528651600094929092169263b02138649288928892889282916084019060208701908083838d5b83811015616ea0578181015183820152602001616e88565b50505050905090810190601f168015616ecd5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015616eee57600080fd5b505af1158015616f02573d6000803e3d6000fd5b505050506040513d6020811015616f1857600080fd5b5051949350505050565b600480546040517fffe40d1d0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451600094600160a060020a039094169363ffe40d1d9387939283926044909201918501908083838b5b83811015616f9d578181015183820152602001616f85565b50505050905090810190601f168015616fca5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015616d5d57600080fd5b80156170d757600254604080517f5607395b000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260048201928352865160448301528651931692635607395b9287928792829160640190602086019080838360005b8381101561706d578181015183820152602001617055565b50505050905090810190601f16801561709a5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156170ba57600080fd5b505af11580156170ce573d6000803e3d6000fd5b505050506171a4565b600254604080517f59cbd6fe000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152600482019283528651604483015286519316926359cbd6fe9287928792829160640190602086019080838360005b8381101561715757818101518382015260200161713f565b50505050905090810190601f1680156171845780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612a6e57600080fd5b505050565b600154600090600160a060020a031663abf5739f8484614c4e815b600480546040517f177c8d8a0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451606094600160a060020a039094169363177c8d8a93879392839260449092019185019080838360005b83811015617240578181015183820152602001617228565b50505050905090810190601f16801561726d5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561728a57600080fd5b505afa15801561729e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156172c757600080fd5b810190808051602060020a8111156172de57600080fd5b820160208101848111156172f157600080fd5b8151602060020a81118282018710171561730a57600080fd5b50909695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106173575782800160ff19823516178555617384565b82800160010185558215617384579182015b82811115617384578235825591602001919060010190617369565b50612f96926132039250905b80821115612f96576000815560010161739056fe6f7267206e6f7420696e20617070726f76656420737461747573000000000000496e636f7272656374206e6574776f726b20626f6f7420737461747573000000696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a723058200df3ecadd04c1fa75894e5ed0cd44272e40d3b012cf3598e5c534b374ecc93aa0029` // 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) { diff --git a/permission/bind/permission_interface.go b/permission/bind/permission_interface.go index ff694b18f..0d64d8a10 100644 --- a/permission/bind/permission_interface.go +++ b/permission/bind/permission_interface.go @@ -31,7 +31,7 @@ var ( 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\":\"_enodeId\",\"type\":\"string\"},{\"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\":\"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\":\"_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\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"addAdminNode\",\"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\":\"getNetworkBootStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_pOrgId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"_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\":\"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\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"startBlacklistedNodeRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"addNode\",\"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\":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\"},{\"inputs\":[{\"name\":\"_permImplUpgradeable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" // PermInterfaceBin is the compiled bytecode used for deploying new contracts. -const PermInterfaceBin = `608060405234801561001057600080fd5b506040516020806138138339810180604052602081101561003057600080fd5b810190808051906020019092919050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613781806100926000396000f3fe608060405234801561001057600080fd5b50600436106101ec576000357c0100000000000000000000000000000000000000000000000000000000900480635adbfa7a116101215780639bd38101116100bf578063a97a44061161008e578063a97a44061461123b578063bb3b6e8014611309578063d1aa0c201461138c578063f346a3a7146113e8576101ec565b80639bd3810114610feb578063a5843f081461109c578063a6343012146110d4578063a97914bf146111a2576101ec565b80637e461258116100fb5780637e46125814610c9e57806384b7a84a14610d8c5780638cb58ef314610e2f5780638f362a3e14610efd576101ec565b80635adbfa7a14610a9c5780635be9672c14610b6a5780636b568d7614610bed576101ec565b806343de646c1161018e5780634cff819e116101685780634cff819e146108015780634fe57e7a14610924578063511bbd9f1461096857806351f604c3146109ac576101ec565b806343de646c146106cf57806344478e79146107bd5780634cbfa82e146107df576101ec565b80631b610220116101ca5780631b610220146103ac5780632f7f0a12146104cf5780633e239b23146105bd5780633f25c28814610656576101ec565b806303ed6933146101f15780630cc501461461023b57806316724c4414610313575b600080fd5b6101f9611580565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103116004803603606081101561025157600080fd5b810190808035906020019064010000000081111561026e57600080fd5b82018360208201111561028057600080fd5b803590602001918460018302840111640100000000831117156102a257600080fd5b9091929391929390803590602001906401000000008111156102c357600080fd5b8201836020820111156102d557600080fd5b803590602001918460018302840111640100000000831117156102f757600080fd5b9091929391929390803590602001909291905050506115a9565b005b6103aa6004803603604081101561032957600080fd5b810190808035906020019064010000000081111561034657600080fd5b82018360208201111561035857600080fd5b8035906020019184600183028401116401000000008311171561037a57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116f4565b005b6104cd600480360360608110156103c257600080fd5b81019080803590602001906401000000008111156103df57600080fd5b8201836020820111156103f157600080fd5b8035906020019184600183028401116401000000008311171561041357600080fd5b90919293919293908035906020019064010000000081111561043457600080fd5b82018360208201111561044657600080fd5b8035906020019184600183028401116401000000008311171561046857600080fd5b90919293919293908035906020019064010000000081111561048957600080fd5b82018360208201111561049b57600080fd5b803590602001918460018302840111640100000000831117156104bd57600080fd5b9091929391929390505050611835565b005b6105bb600480360360608110156104e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561052257600080fd5b82018360208201111561053457600080fd5b8035906020019184600183028401116401000000008311171561055657600080fd5b90919293919293908035906020019064010000000081111561057757600080fd5b82018360208201111561058957600080fd5b803590602001918460018302840111640100000000831117156105ab57600080fd5b9091929391929390505050611979565b005b610654600480360360408110156105d357600080fd5b81019080803590602001906401000000008111156105f057600080fd5b82018360208201111561060257600080fd5b8035906020019184600183028401116401000000008311171561062457600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af0565b005b6106cd6004803603602081101561066c57600080fd5b810190808035906020019064010000000081111561068957600080fd5b82018360208201111561069b57600080fd5b803590602001918460018302840111640100000000831117156106bd57600080fd5b9091929391929390505050611c31565b005b6107bb600480360360608110156106e557600080fd5b810190808035906020019064010000000081111561070257600080fd5b82018360208201111561071457600080fd5b8035906020019184600183028401116401000000008311171561073657600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561077757600080fd5b82018360208201111561078957600080fd5b803590602001918460018302840111640100000000831117156107ab57600080fd5b9091929391929390505050611d09565b005b6107c5611e80565b604051808215151515815260200191505060405180910390f35b6107e7611f47565b604051808215151515815260200191505060405180910390f35b6109226004803603606081101561081757600080fd5b810190808035906020019064010000000081111561083457600080fd5b82018360208201111561084657600080fd5b8035906020019184600183028401116401000000008311171561086857600080fd5b90919293919293908035906020019064010000000081111561088957600080fd5b82018360208201111561089b57600080fd5b803590602001918460018302840111640100000000831117156108bd57600080fd5b9091929391929390803590602001906401000000008111156108de57600080fd5b8201836020820111156108f057600080fd5b8035906020019184600183028401116401000000008311171561091257600080fd5b909192939192939050505061200c565b005b6109666004803603602081101561093a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612184565b005b6109aa6004803603602081101561097e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061225b565b005b610a9a600480360360a08110156109c257600080fd5b81019080803590602001906401000000008111156109df57600080fd5b8201836020820111156109f157600080fd5b80359060200191846001830284011164010000000083111715610a1357600080fd5b909192939192939080359060200190640100000000811115610a3457600080fd5b820183602082011115610a4657600080fd5b80359060200191846001830284011164010000000083111715610a6857600080fd5b909192939192939080359060200190929190803515159060200190929190803515159060200190929190505050612363565b005b610b6860048036036040811015610ab257600080fd5b8101908080359060200190640100000000811115610acf57600080fd5b820183602082011115610ae157600080fd5b80359060200191846001830284011164010000000083111715610b0357600080fd5b909192939192939080359060200190640100000000811115610b2457600080fd5b820183602082011115610b3657600080fd5b80359060200191846001830284011164010000000083111715610b5857600080fd5b90919293919293905050506124c8565b005b610beb60048036036040811015610b8057600080fd5b8101908080359060200190640100000000811115610b9d57600080fd5b820183602082011115610baf57600080fd5b80359060200191846001830284011164010000000083111715610bd157600080fd5b90919293919293908035906020019092919050505061260a565b005b610c8460048036036040811015610c0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c4057600080fd5b820183602082011115610c5257600080fd5b80359060200191846001830284011164010000000083111715610c7457600080fd5b909192939192939050505061271f565b604051808215151515815260200191505060405180910390f35b610d8a60048036036060811015610cb457600080fd5b8101908080359060200190640100000000811115610cd157600080fd5b820183602082011115610ce357600080fd5b80359060200191846001830284011164010000000083111715610d0557600080fd5b909192939192939080359060200190640100000000811115610d2657600080fd5b820183602082011115610d3857600080fd5b80359060200191846001830284011164010000000083111715610d5a57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612853565b005b610e2d60048036036060811015610da257600080fd5b8101908080359060200190640100000000811115610dbf57600080fd5b820183602082011115610dd157600080fd5b80359060200191846001830284011164010000000083111715610df357600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506129ca565b005b610efb60048036036040811015610e4557600080fd5b8101908080359060200190640100000000811115610e6257600080fd5b820183602082011115610e7457600080fd5b80359060200191846001830284011164010000000083111715610e9657600080fd5b909192939192939080359060200190640100000000811115610eb757600080fd5b820183602082011115610ec957600080fd5b80359060200191846001830284011164010000000083111715610eeb57600080fd5b9091929391929390505050612b14565b005b610fe960048036036060811015610f1357600080fd5b8101908080359060200190640100000000811115610f3057600080fd5b820183602082011115610f4257600080fd5b80359060200191846001830284011164010000000083111715610f6457600080fd5b909192939192939080359060200190640100000000811115610f8557600080fd5b820183602082011115610f9757600080fd5b80359060200191846001830284011164010000000083111715610fb957600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c56565b005b6110826004803603604081101561100157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561103e57600080fd5b82018360208201111561105057600080fd5b8035906020019184600183028401116401000000008311171561107257600080fd5b9091929391929390505050612dcd565b604051808215151515815260200191505060405180910390f35b6110d2600480360360408110156110b257600080fd5b810190808035906020019092919080359060200190929190505050612f01565b005b6111a0600480360360408110156110ea57600080fd5b810190808035906020019064010000000081111561110757600080fd5b82018360208201111561111957600080fd5b8035906020019184600183028401116401000000008311171561113b57600080fd5b90919293919293908035906020019064010000000081111561115c57600080fd5b82018360208201111561116e57600080fd5b8035906020019184600183028401116401000000008311171561119057600080fd5b9091929391929390505050612fb5565b005b611239600480360360408110156111b857600080fd5b81019080803590602001906401000000008111156111d557600080fd5b8201836020820111156111e757600080fd5b8035906020019184600183028401116401000000008311171561120957600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130f7565b005b6113076004803603604081101561125157600080fd5b810190808035906020019064010000000081111561126e57600080fd5b82018360208201111561128057600080fd5b803590602001918460018302840111640100000000831117156112a257600080fd5b9091929391929390803590602001906401000000008111156112c357600080fd5b8201836020820111156112d557600080fd5b803590602001918460018302840111640100000000831117156112f757600080fd5b9091929391929390505050613238565b005b61138a6004803603604081101561131f57600080fd5b810190808035906020019064010000000081111561133c57600080fd5b82018360208201111561134e57600080fd5b8035906020019184600183028401116401000000008311171561137057600080fd5b90919293919293908035906020019092919050505061337a565b005b6113ce600480360360208110156113a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061348f565b604051808215151515815260200191505060405180910390f35b61145f600480360360208110156113fe57600080fd5b810190808035906020019064010000000081111561141b57600080fd5b82018360208201111561142d57600080fd5b8035906020019184600183028401116401000000008311171561144f57600080fd5b909192939192939050505061358d565b6040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156114db5780820151818401526020810190506114c0565b50505050905090810190601f1680156115085780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b83811015611541578082015181840152602081019050611526565b50505050905090810190601f16801561156e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbfad7118686868686336040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508381038252878782818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156116d557600080fd5b505af11580156116e9573d6000803e3d6000fd5b505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388843041848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561181857600080fd5b505af115801561182c573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b6102208787878787876040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018060200184810384528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508481038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b50505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638baa81918686868686336040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015611ad157600080fd5b505af1158015611ae5573d6000803e3d6000fd5b505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b20f45f848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c1457600080fd5b505af1158015611c28573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f25c28883836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663404bf3eb8686868686336040518763ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015611e6157600080fd5b505af1158015611e75573d6000803e3d6000fd5b505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344478e796040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611f0757600080fd5b505af1158015611f1b573d6000803e3d6000fd5b505050506040513d6020811015611f3157600080fd5b8101908080519060200190929190505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cbfa82e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611fcc57600080fd5b505afa158015611fe0573d6000803e3d6000fd5b505050506040513d6020811015611ff657600080fd5b8101908080519060200190929190505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a64d2860878787878787336040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528b8b82818152602001925080828437600081840152601f19601f8201169050808301925050508481038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508481038252878782818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561216457600080fd5b505af1158015612178573d6000803e3d6000fd5b50505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fe57e7a826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561224057600080fd5b505af1158015612254573d6000803e3d6000fd5b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b04c27688888888888888336040518963ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200187815260200186151515158152602001851515151581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183810383528b8b82818152602001925080828437600081840152601f19601f8201169050808301925050508381038252898982818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156124a757600080fd5b505af11580156124bb573d6000803e3d6000fd5b5050505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663655a8ef585858585336040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b1580156125ec57600080fd5b505af1158015612600573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b5546564848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561270257600080fd5b505af1158015612716573d6000803e3d6000fd5b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b568d768585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060206040518083038186803b15801561280f57600080fd5b505afa158015612823573d6000803e3d6000fd5b505050506040513d602081101561283957600080fd5b810190808051906020019092919050505090509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633bc07dea8686868686336040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508381038252878782818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304e81f1e85858585336040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252878782818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3dc8e0985858585336040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612c3857600080fd5b505af1158015612c4c573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f922f8028686868686336040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508381038252878782818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612dae57600080fd5b505af1158015612dc2573d6000803e3d6000fd5b505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639bd381018585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060206040518083038186803b158015612ebd57600080fd5b505afa158015612ed1573d6000803e3d6000fd5b505050506040513d6020811015612ee757600080fd5b810190808051906020019092919050505090509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a5843f0883836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b158015612f9957600080fd5b505af1158015612fad573d6000803e3d6000fd5b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca5adbe85858585336040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b1580156130d957600080fd5b505af11580156130ed573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c249912848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561321b57600080fd5b505af115801561322f573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a260a385858585336040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561335c57600080fd5b505af1158015613370573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633cf5f33b848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1aa0c20836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561354b57600080fd5b505afa15801561355f573d6000803e3d6000fd5b505050506040513d602081101561357557600080fd5b81019080805190602001909291905050509050919050565b6060806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f346a3a787876040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561364d57600080fd5b505afa158015613661573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250608081101561368b57600080fd5b8101908080516401000000008111156136a357600080fd5b828101905060208101848111156136b957600080fd5b81518560018202830111640100000000821117156136d657600080fd5b505092919060200180516401000000008111156136f257600080fd5b8281019050602081018481111561370857600080fd5b815185600182028301116401000000008211171561372557600080fd5b5050929190602001805190602001909291908051906020019092919050505093509350935093509295919450925056fea165627a7a7230582049eecad3069ea93138ffdb59f1b6803feaa6cde89ea4ef7956f533e671354e340029` +const PermInterfaceBin = `608060405234801561001057600080fd5b506040516020806127ff8339810180604052602081101561003057600080fd5b505160028054600160a060020a031916600160a060020a0390921691909117905561279f806100606000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a900480635adbfa7a116101085780639bd38101116100a6578063a97a440611610075578063a97a440614610f54578063bb3b6e8014611012578063d1aa0c2014611080578063f346a3a7146110a6576101d3565b80639bd3810114610d7e578063a5843f0814610dfc578063a634301214610e1f578063a97914bf14610edd576101d3565b80637e461258116100e25780637e46125814610ab557806384b7a84a14610b7c5780638cb58ef314610bf95780638f362a3e14610cb7576101d3565b80635adbfa7a1461090b5780635be9672c146109c95780636b568d7614610a37576101d3565b806343de646c116101755780634cff819e1161014f5780634cff819e146106e35780634fe57e7a146107f1578063511bbd9f1461081757806351f604c31461083d576101d3565b806343de646c146105f457806344478e79146106bf5780634cbfa82e146106db576101d3565b80631b610220116101b15780631b610220146103335780632f7f0a12146104415780633e239b231461050f5780633f25c28814610586576101d3565b806303ed6933146101d85780630cc50146146101fc57806316724c44146102bc575b600080fd5b6101e0611212565b60408051600160a060020a039092168252519081900360200190f35b6102ba6004803603606081101561021257600080fd5b810190602081018135602060020a81111561022c57600080fd5b82018360208201111561023e57600080fd5b803590602001918460018302840111602060020a8311171561025f57600080fd5b919390929091602081019035602060020a81111561027c57600080fd5b82018360208201111561028e57600080fd5b803590602001918460018302840111602060020a831117156102af57600080fd5b919350915035611221565b005b6102ba600480360360408110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b919350915035600160a060020a0316611314565b6102ba6004803603606081101561034957600080fd5b810190602081018135602060020a81111561036357600080fd5b82018360208201111561037557600080fd5b803590602001918460018302840111602060020a8311171561039657600080fd5b919390929091602081019035602060020a8111156103b357600080fd5b8201836020820111156103c557600080fd5b803590602001918460018302840111602060020a831117156103e657600080fd5b919390929091602081019035602060020a81111561040357600080fd5b82018360208201111561041557600080fd5b803590602001918460018302840111602060020a8311171561043657600080fd5b5090925090506113d9565b6102ba6004803603606081101561045757600080fd5b600160a060020a038235169190810190604081016020820135602060020a81111561048157600080fd5b82018360208201111561049357600080fd5b803590602001918460018302840111602060020a831117156104b457600080fd5b919390929091602081019035602060020a8111156104d157600080fd5b8201836020820111156104e357600080fd5b803590602001918460018302840111602060020a8311171561050457600080fd5b5090925090506114e7565b6102ba6004803603604081101561052557600080fd5b810190602081018135602060020a81111561053f57600080fd5b82018360208201111561055157600080fd5b803590602001918460018302840111602060020a8311171561057257600080fd5b919350915035600160a060020a03166115bf565b6102ba6004803603602081101561059c57600080fd5b810190602081018135602060020a8111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111602060020a831117156105e957600080fd5b509092509050611667565b6102ba6004803603606081101561060a57600080fd5b810190602081018135602060020a81111561062457600080fd5b82018360208201111561063657600080fd5b803590602001918460018302840111602060020a8311171561065757600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111602060020a831117156106b457600080fd5b509092509050611713565b6106c76117e8565b604080519115158252519081900360200190f35b6106c761186d565b6102ba600480360360608110156106f957600080fd5b810190602081018135602060020a81111561071357600080fd5b82018360208201111561072557600080fd5b803590602001918460018302840111602060020a8311171561074657600080fd5b919390929091602081019035602060020a81111561076357600080fd5b82018360208201111561077557600080fd5b803590602001918460018302840111602060020a8311171561079657600080fd5b919390929091602081019035602060020a8111156107b357600080fd5b8201836020820111156107c557600080fd5b803590602001918460018302840111602060020a831117156107e657600080fd5b5090925090506118d3565b6102ba6004803603602081101561080757600080fd5b5035600160a060020a03166119ca565b6102ba6004803603602081101561082d57600080fd5b5035600160a060020a0316611a49565b6102ba600480360360a081101561085357600080fd5b810190602081018135602060020a81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460018302840111602060020a831117156108a057600080fd5b919390929091602081019035602060020a8111156108bd57600080fd5b8201836020820111156108cf57600080fd5b803590602001918460018302840111602060020a831117156108f057600080fd5b91935091508035906020810135151590604001351515611af1565b6102ba6004803603604081101561092157600080fd5b810190602081018135602060020a81111561093b57600080fd5b82018360208201111561094d57600080fd5b803590602001918460018302840111602060020a8311171561096e57600080fd5b919390929091602081019035602060020a81111561098b57600080fd5b82018360208201111561099d57600080fd5b803590602001918460018302840111602060020a831117156109be57600080fd5b509092509050611bfc565b6102ba600480360360408110156109df57600080fd5b810190602081018135602060020a8111156109f957600080fd5b820183602082011115610a0b57600080fd5b803590602001918460018302840111602060020a83111715610a2c57600080fd5b919350915035611ce4565b6106c760048036036040811015610a4d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111602060020a83111715610aaa57600080fd5b509092509050611d87565b6102ba60048036036060811015610acb57600080fd5b810190602081018135602060020a811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111602060020a83111715610b1857600080fd5b919390929091602081019035602060020a811115610b3557600080fd5b820183602082011115610b4757600080fd5b803590602001918460018302840111602060020a83111715610b6857600080fd5b919350915035600160a060020a0316611e55565b6102ba60048036036060811015610b9257600080fd5b810190602081018135602060020a811115610bac57600080fd5b820183602082011115610bbe57600080fd5b803590602001918460018302840111602060020a83111715610bdf57600080fd5b9193509150600160a060020a038135169060200135611f2a565b6102ba60048036036040811015610c0f57600080fd5b810190602081018135602060020a811115610c2957600080fd5b820183602082011115610c3b57600080fd5b803590602001918460018302840111602060020a83111715610c5c57600080fd5b919390929091602081019035602060020a811115610c7957600080fd5b820183602082011115610c8b57600080fd5b803590602001918460018302840111602060020a83111715610cac57600080fd5b509092509050611fda565b6102ba60048036036060811015610ccd57600080fd5b810190602081018135602060020a811115610ce757600080fd5b820183602082011115610cf957600080fd5b803590602001918460018302840111602060020a83111715610d1a57600080fd5b919390929091602081019035602060020a811115610d3757600080fd5b820183602082011115610d4957600080fd5b803590602001918460018302840111602060020a83111715610d6a57600080fd5b919350915035600160a060020a03166120a4565b6106c760048036036040811015610d9457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610dbe57600080fd5b820183602082011115610dd057600080fd5b803590602001918460018302840111602060020a83111715610df157600080fd5b509092509050612179565b6102ba60048036036040811015610e1257600080fd5b5080359060200135612213565b6102ba60048036036040811015610e3557600080fd5b810190602081018135602060020a811115610e4f57600080fd5b820183602082011115610e6157600080fd5b803590602001918460018302840111602060020a83111715610e8257600080fd5b919390929091602081019035602060020a811115610e9f57600080fd5b820183602082011115610eb157600080fd5b803590602001918460018302840111602060020a83111715610ed257600080fd5b50909250905061227b565b6102ba60048036036040811015610ef357600080fd5b810190602081018135602060020a811115610f0d57600080fd5b820183602082011115610f1f57600080fd5b803590602001918460018302840111602060020a83111715610f4057600080fd5b919350915035600160a060020a0316612345565b6102ba60048036036040811015610f6a57600080fd5b810190602081018135602060020a811115610f8457600080fd5b820183602082011115610f9657600080fd5b803590602001918460018302840111602060020a83111715610fb757600080fd5b919390929091602081019035602060020a811115610fd457600080fd5b820183602082011115610fe657600080fd5b803590602001918460018302840111602060020a8311171561100757600080fd5b5090925090506123ed565b6102ba6004803603604081101561102857600080fd5b810190602081018135602060020a81111561104257600080fd5b82018360208201111561105457600080fd5b803590602001918460018302840111602060020a8311171561107557600080fd5b9193509150356124b7565b6106c76004803603602081101561109657600080fd5b5035600160a060020a031661255a565b611114600480360360208110156110bc57600080fd5b810190602081018135602060020a8111156110d657600080fd5b8201836020820111156110e857600080fd5b803590602001918460018302840111602060020a8311171561110957600080fd5b5090925090506125f3565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561117357818101518382015260200161115b565b50505050905090810190601f1680156111a05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b600054600160a060020a031690565b6000546040517fdbfad71100000000000000000000000000000000000000000000000000000000815260448101839052336064820181905260806004830190815260848301889052600160a060020a039093169263dbfad711928992899289928992899290918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b505af1158015611309573d6000803e3d6000fd5b505050505050505050565b6000546040517f88843041000000000000000000000000000000000000000000000000000000008152600160a060020a03838116602483015233604483018190526060600484019081526064840187905291909316926388843041928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b50505050505050565b6000546040517f1b61022000000000000000000000000000000000000000000000000000000000815260606004820190815260648201889052600160a060020a0390921691631b610220918991899189918991899189918190602481019060448101906084018a8a80828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156114c757600080fd5b505af11580156114db573d6000803e3d6000fd5b50505050505050505050565b6000546040517f8baa8191000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081523360648401819052608060248501908152608485018990529290941693638baa8191938a938a938a938a938a9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f4b20f45f000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692634b20f45f928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f3f25c28800000000000000000000000000000000000000000000000000000000815260206004820190815260248201849052600160a060020a0390921691633f25c28891859185918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050505050565b6000546040517f404bf3eb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152336064830181905260806004840190815260848401899052919093169263404bf3eb9289928992899289928992918190604481019060a401898980828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008060009054906101000a9004600160a060020a0316600160a060020a03166344478e796040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561183c57600080fd5b505af1158015611850573d6000803e3d6000fd5b505050506040513d602081101561186657600080fd5b5051905090565b60008060009054906101000a9004600160a060020a0316600160a060020a0316634cbfa82e6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156118bf57600080fd5b505afa158015611850573d6000803e3d6000fd5b6000546040517fa64d2860000000000000000000000000000000000000000000000000000000008152336064820181905260806004830190815260848301899052600160a060020a039093169263a64d2860928a928a928a928a928a928a9281906024810190604481019060a4018b8b80828437600083820152601f01601f191690910185810384528981526020019050898980828437600083820152601f01601f191690910185810383528781526020019050878780828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156114c757600080fd5b60008054604080517f4fe57e7a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015291519190921692634fe57e7a926024808201939182900301818387803b158015611a2e57600080fd5b505af1158015611a42573d6000803e3d6000fd5b5050505050565b600254600160a060020a03163314611ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546040517f1b04c27600000000000000000000000000000000000000000000000000000000815260448101859052831515606482015282151560848201523360a4820181905260c06004830190815260c483018a9052600160a060020a0390931692631b04c276928b928b928b928b928b928b928b9291908190602481019060e4018b8b80828437600083820152601f01601f191690910184810383528981526020019050898980828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015611bdb57600080fd5b505af1158015611bef573d6000803e3d6000fd5b5050505050505050505050565b6000546040517f655a8ef5000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263655a8ef5928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b5050505050505050565b6000546040517fb554656400000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a039093169263b5546564928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692636b568d76928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b505afa158015611e35573d6000803e3d6000fd5b505050506040513d6020811015611e4b57600080fd5b5051949350505050565b6000546040517f3bc07dea000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660448301523360648301819052608060048401908152608484018990529190931692633bc07dea9289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f04e81f1e000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660248301526044820184905233606483018190526080600484019081526084840188905291909316926304e81f1e92889288928892889290819060a401878780828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517fc3dc8e09000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263c3dc8e09928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517ff922f802000000000000000000000000000000000000000000000000000000008152600160a060020a038381166044830152336064830181905260806004840190815260848401899052919093169263f922f8029289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008054604080517f9bd38101000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692639bd38101928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b60008054604080517fa5843f0800000000000000000000000000000000000000000000000000000000815260048101869052602481018590529051600160a060020a039092169263a5843f089260448084019382900301818387803b1580156116f757600080fd5b6000546040517f5ca5adbe000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a0390931692635ca5adbe928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f1c249912000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692631c249912928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f59a260a3000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a03909316926359a260a3928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f3cf5f33b00000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a0390931692633cf5f33b928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517fd1aa0c20000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163d1aa0c20916024808301926020929190829003018186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d60208110156125eb57600080fd5b505192915050565b600080546040517ff346a3a700000000000000000000000000000000000000000000000000000000815260206004820190815260248201859052606093849390928392600160a060020a039092169163f346a3a791899189918190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561268b57600080fd5b505afa15801561269f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156126c857600080fd5b810190808051602060020a8111156126df57600080fd5b820160208101848111156126f257600080fd5b8151602060020a81118282018710171561270b57600080fd5b50509291906020018051602060020a81111561272657600080fd5b8201602081018481111561273957600080fd5b8151602060020a81118282018710171561275257600080fd5b50506020820151604090920151949b909a509098509296509194505050505056fea165627a7a723058200792b3ef88eb65d0170fc5db45b8a8d8415ab3e975987b02165c64e18cc994af0029` // 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) { diff --git a/permission/bind/permission_upgr.go b/permission/bind/permission_upgr.go index 4762c4504..d9cd82a72 100644 --- a/permission/bind/permission_upgr.go +++ b/permission/bind/permission_upgr.go @@ -31,7 +31,7 @@ var ( 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\"}]" // PermUpgrBin is the compiled bytecode used for deploying new contracts. -const PermUpgrBin = `608060405234801561001057600080fd5b50604051602080610b2d8339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260146101000a81548160ff02191690831515021790555050610a81806100ac6000396000f3fe608060405234801561001057600080fd5b5060043610610074576000357c0100000000000000000000000000000000000000000000000000000000900480630e32cf901461007957806322bcb39a146100c3578063a75b87d214610107578063e572515c14610151578063f09a40161461019b575b600080fd5b6100816101ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610105600480360360208110156100d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610229565b005b61010f61053c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610159610565565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101fd600480360360408110156101b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058f565b005b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156102ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b60608060606000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc9ba6fa6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160006040518083038186803b15801561037857600080fd5b505afa15801561038c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060808110156103b657600080fd5b8101908080516401000000008111156103ce57600080fd5b828101905060208101848111156103e457600080fd5b815185600182028301116401000000008211171561040157600080fd5b5050929190602001805164010000000081111561041d57600080fd5b8281019050602081018481111561043357600080fd5b815185600182028301116401000000008211171561045057600080fd5b5050929190602001805164010000000081111561046c57600080fd5b8281019050602081018481111561048257600080fd5b815185600182028301116401000000008211171561049f57600080fd5b50509291906020018051906020019092919050505093509350935093506104c985858585856107a4565b84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610535600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661097d565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b600260149054906101000a900460ff161515156106d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616e206265206578656375746564206f6e6c79206f6e63650000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610785600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661097d565b6001600260146101000a81548160ff0219169083151502179055505050565b8473ffffffffffffffffffffffffffffffffffffffff1663f5ad584a858585856040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b83811015610841578082015181840152602081019050610826565b50505050905090810190601f16801561086e5780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b838110156108a757808201518184015260208101905061088c565b50505050905090810190601f1680156108d45780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b8381101561090d5780820151818401526020810190506108f2565b50505050905090810190601f16801561093a5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561095e57600080fd5b505af1158015610972573d6000803e3d6000fd5b505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663511bbd9f826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610a3a57600080fd5b505af1158015610a4e573d6000803e3d6000fd5b505050505056fea165627a7a72305820378cf538b83ea9abe4413391f6284a8f7e800144d9df63dcbba67da0f58949500029` +const PermUpgrBin = `608060405234801561001057600080fd5b5060405160208061079f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556002805460a060020a60ff021916905561072d806100726000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a60003504630e32cf90811461005f57806322bcb39a14610083578063a75b87d2146100ab578063e572515c146100b3578063f09a4016146100bb575b600080fd5b6100676100e9565b60408051600160a060020a039092168252519081900360200190f35b6100a96004803603602081101561009957600080fd5b5035600160a060020a03166100f8565b005b610067610341565b610067610350565b6100a9600480360360408110156100d157600080fd5b50600160a060020a038135811691602001351661035f565b600154600160a060020a031690565b600054600160a060020a0316331461017157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60608060606000600160009054906101000a9004600160a060020a0316600160a060020a031663cc9ba6fa6040518163ffffffff1660e060020a02815260040160006040518083038186803b1580156101c957600080fd5b505afa1580156101dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561020657600080fd5b81019080805164010000000081111561021e57600080fd5b8201602081018481111561023157600080fd5b815164010000000081118282018710171561024b57600080fd5b5050929190602001805164010000000081111561026757600080fd5b8201602081018481111561027a57600080fd5b815164010000000081118282018710171561029457600080fd5b505092919060200180516401000000008111156102b057600080fd5b820160208101848111156102c357600080fd5b81516401000000008111828201871017156102dd57600080fd5b50506020909101519498509296509194509192506103029150869050858585856104e2565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03878116919091179182905561033a9116610686565b5050505050565b600054600160a060020a031690565b600254600160a060020a031690565b600054600160a060020a031633146103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff161561046257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f63616e206265206578656375746564206f6e6c79206f6e636500000000000000604482015290519081900360640190fd5b60018054600160a060020a0380841673ffffffffffffffffffffffffffffffffffffffff199283161792839055600280548683169316929092179091556104a99116610686565b50506002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b84600160a060020a031663f5ad584a858585856040518563ffffffff1660e060020a0281526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b8381101561055657818101518382015260200161053e565b50505050905090810190601f1680156105835780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156105b657818101518382015260200161059e565b50505050905090810190601f1680156105e35780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156106165781810151838201526020016105fe565b50505050905090810190601f1680156106435780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561066757600080fd5b505af115801561067b573d6000803e3d6000fd5b505050505050505050565b600254604080517f511bbd9f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163511bbd9f91602480830192600092919082900301818387803b1580156106ed57600080fd5b505af115801561033a573d6000803e3d6000fdfea165627a7a723058204c1d81c735b447834c79ffdd293aa096893937355f775356ad02681fbe60b4690029` // 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) { diff --git a/permission/bind/roles.go b/permission/bind/roles.go index bb08bae9f..eb9e1ac15 100644 --- a/permission/bind/roles.go +++ b/permission/bind/roles.go @@ -31,7 +31,7 @@ var ( 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\":\"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\"}]" // RoleManagerBin is the compiled bytecode used for deploying new contracts. -const RoleManagerBin = `608060405234801561001057600080fd5b506040516020806129598339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506128c8806100916000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063a634301211610078578063a634301214610552578063abf5739f14610620578063be322e5414610821578063deb16ba71461095c576100a5565b80631870aba3146100aa5780637b7135791461028557806387f55d31146103f9578063a451d4a814610417575b600080fd5b610176600480360360408110156100c057600080fd5b81019080803590602001906401000000008111156100dd57600080fd5b8201836020820111156100ef57600080fd5b8035906020019184600183028401116401000000008311171561011157600080fd5b90919293919293908035906020019064010000000081111561013257600080fd5b82018360208201111561014457600080fd5b8035906020019184600183028401116401000000008311171561016657600080fd5b9091929391929390505050610a97565b604051808060200180602001878152602001861515151581526020018515151515815260200184151515158152602001838103835289818151815260200191508051906020019080838360005b838110156101de5780820151818401526020810190506101c3565b50505050905090810190601f16801561020b5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b83811015610244578082015181840152602081019050610229565b50505050905090810190601f1680156102715780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103f7600480360360a081101561029b57600080fd5b81019080803590602001906401000000008111156102b857600080fd5b8201836020820111156102ca57600080fd5b803590602001918460018302840111640100000000831117156102ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561034f57600080fd5b82018360208201111561036157600080fd5b8035906020019184600183028401116401000000008311171561038357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803515159060200190929190803515159060200190929190505050610e9b565b005b6104016114db565b6040518082815260200191505060405180910390f35b6104436004803603602081101561042d57600080fd5b81019080803590602001909291905050506114e8565b604051808060200180602001878152602001861515151581526020018515151515815260200184151515158152602001838103835289818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b838110156105115780820151818401526020810190506104f6565b50505050905090810190601f16801561053e5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61061e6004803603604081101561056857600080fd5b810190808035906020019064010000000081111561058557600080fd5b82018360208201111561059757600080fd5b803590602001918460018302840111640100000000831117156105b957600080fd5b9091929391929390803590602001906401000000008111156105da57600080fd5b8201836020820111156105ec57600080fd5b8035906020019184600183028401116401000000008311171561060e57600080fd5b9091929391929390505050611729565b005b6108076004803603606081101561063657600080fd5b810190808035906020019064010000000081111561065357600080fd5b82018360208201111561066557600080fd5b8035906020019184600183028401116401000000008311171561068757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156106ea57600080fd5b8201836020820111156106fc57600080fd5b8035906020019184600183028401116401000000008311171561071e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561078157600080fd5b82018360208201111561079357600080fd5b803590602001918460018302840111640100000000831117156107b557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b08565b604051808215151515815260200191505060405180910390f35b6109426004803603606081101561083757600080fd5b810190808035906020019064010000000081111561085457600080fd5b82018360208201111561086657600080fd5b8035906020019184600183028401116401000000008311171561088857600080fd5b9091929391929390803590602001906401000000008111156108a957600080fd5b8201836020820111156108bb57600080fd5b803590602001918460018302840111640100000000831117156108dd57600080fd5b9091929391929390803590602001906401000000008111156108fe57600080fd5b82018360208201111561091057600080fd5b8035906020019184600183028401116401000000008311171561093257600080fd5b9091929391929390505050611dc6565b604051808215151515815260200191505060405180910390f35b610a7d6004803603606081101561097257600080fd5b810190808035906020019064010000000081111561098f57600080fd5b8201836020820111156109a157600080fd5b803590602001918460018302840111640100000000831117156109c357600080fd5b9091929391929390803590602001906401000000008111156109e457600080fd5b8201836020820111156109f657600080fd5b80359060200191846001830284011164010000000083111715610a1857600080fd5b909192939192939080359060200190640100000000811115610a3957600080fd5b820183602082011115610a4b57600080fd5b80359060200191846001830284011164010000000083111715610a6d57600080fd5b9091929391929390505050612252565b604051808215151515815260200191505060405180910390f35b606080600080600080610b438a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506020604051908101604052806000815250611b08565b1515610bc757898960008060008085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509450909192939450602060405190810160405280600081525093929190839350955095509550955095509550610e8e565b6000610c5b8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b9050600181815481101515610c6c57fe5b9060005260206000209060040201600001600182815481101515610c8c57fe5b9060005260206000209060040201600101600183815481101515610cac57fe5b906000526020600020906004020160020154600184815481101515610ccd57fe5b906000526020600020906004020160030160009054906101000a900460ff16600185815481101515610cfb57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610d2957fe5b906000526020600020906004020160030160029054906101000a900460ff16858054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ddd5780601f10610db257610100808354040283529160200191610ddd565b820191906000526020600020905b815481529060010190602001808311610dc057829003601f168201915b50505050509550848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e795780601f10610e4e57610100808354040283529160200191610e79565b820191906000526020600020905b815481529060010190602001808311610e5c57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015610f1e57600080fd5b505afa158015610f32573d6000803e3d6000fd5b505050506040513d6020811015610f4857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ffb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008787604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561104a57808201518184015260208101905061102f565b50505050905090810190601f1680156110775780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156110b0578082015181840152602081019050611095565b50505050905090810190601f1680156110dd5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205414151561117e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f726f6c652065786973747320666f7220746865206f726700000000000000000081525060200191505060405180910390fd5b600360008154809291906001019190505550600354600260008787604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111e05780820151818401526020810190506111c5565b50505050905090810190601f16801561120d5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561124657808201518184015260208101905061122b565b50505050905090810190601f1680156112735780820380516001836020036101000a031916815260200191505b5094505050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160c06040519081016040528087815260200186815260200185815260200184151581526020018315158152602001600115158152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000190805190602001906113209291906127f7565b50602082015181600101908051906020019061133d9291906127f7565b506040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff0219169083151502179055505050507fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c85858585856040518080602001806020018681526020018515151515815260200184151515158152602001838103835288818151815260200191508051906020019080838360005b8381101561142f578082015181840152602081019050611414565b50505050905090810190601f16801561145c5780820380516001836020036101000a031916815260200191505b50838103825287818151815260200191508051906020019080838360005b8381101561149557808201518184015260208101905061147a565b50505050905090810190601f1680156114c25780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6000600180549050905090565b60608060008060008060018781548110151561150057fe5b906000526020600020906004020160000160018881548110151561152057fe5b906000526020600020906004020160010160018981548110151561154057fe5b90600052602060002090600402016002015460018a81548110151561156157fe5b906000526020600020906004020160030160009054906101000a900460ff1660018b81548110151561158f57fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c8154811015156115bd57fe5b906000526020600020906004020160030160029054906101000a900460ff16858054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116715780601f1061164657610100808354040283529160200191611671565b820191906000526020600020905b81548152906001019060200180831161165457829003601f168201915b50505050509550848054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561170d5780601f106116e25761010080835404028352916020019161170d565b820191906000526020600020905b8154815290600101906020018083116116f057829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156117ac57600080fd5b505afa1580156117c0573d6000803e3d6000fd5b505050506040513d60208110156117d657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b600060026000868686866040516020018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020541415151561199b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f726f6c6520646f6573206e6f742065786973740000000000000000000000000081525060200191505060405180910390fd5b6000611a2f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b90506000600182815481101515611a4257fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15050505050565b6000806000600260008787604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611b5a578082015181840152602081019050611b3f565b50505050905090810190601f168015611b875780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611bc0578082015181840152602081019050611ba5565b50505050905090810190601f168015611bed5780820380516001836020036101000a031916815260200191505b5094505050505060405160208183030381529060405280519060200120815260200190815260200160002054141515611c6257611c2a85856126de565b9050600181815481101515611c3b57fe5b906000526020600020906004020160030160029054906101000a900460ff16915050611dbf565b6000600260008786604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611cb1578082015181840152602081019050611c96565b50505050905090810190601f168015611cde5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611d17578082015181840152602081019050611cfc565b50505050905090810190601f168015611d445780820380516001836020036101000a031916815260200191505b5094505050505060405160208183030381529060405280519060200120815260200190815260200160002054141515611db957611d8185846126de565b9050600181815481101515611d9257fe5b906000526020600020906004020160030160029054906101000a900460ff16915050611dbf565b60009150505b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611e4b57600080fd5b505afa158015611e5f573d6000803e3d6000fd5b505050506040513d6020811015611e7557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b611fff87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611b08565b151561200e5760009050612248565b600080600260008a8a8a8a6040516020018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f82011690508083019250505096505050505050506040516020818303038152906040528051906020012081526020019081526020016000205414151561214b5761214488888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b90506121e0565b6121dd88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b90505b6001818154811015156121ef57fe5b906000526020600020906004020160030160029054906101000a900460ff168015612244575060018181548110151561222457fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156122d757600080fd5b505afa1580156122eb573d6000803e3d6000fd5b505050506040513d602081101561230157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b61248b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611b08565b151561249a57600090506126d4565b600080600260008a8a8a8a6040516020018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020541415156125d7576125d088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b905061266c565b61266988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b90505b60018181548110151561267b57fe5b906000526020600020906004020160030160029054906101000a900460ff1680156126d057506001818154811015156126b057fe5b906000526020600020906004020160030160009054906101000a900460ff165b9150505b9695505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561272f578082015181840152602081019050612714565b50505050905090810190601f16801561275c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561279557808201518184015260208101905061277a565b50505050905090810190601f1680156127c25780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061283857805160ff1916838001178555612866565b82800160010185558215612866579182015b8281111561286557825182559160200191906001019061284a565b5b5090506128739190612877565b5090565b61289991905b8082111561289557600081600090555060010161287d565b5090565b9056fea165627a7a7230582006ce3e54be3a54da4e284827f5291f19d7bc4a8fa63cfe3ce43f1e50c45ba2f00029` +const RoleManagerBin = `608060405234801561001057600080fd5b5060405160208061221f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556121bd806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a90048063a63430121161005f578063a6343012146103c6578063abf5739f14610488578063be322e5414610650578063deb16ba7146107645761008c565b80631870aba3146100915780637b7135791461025157806387f55d311461038f578063a451d4a8146103a9575b600080fd5b610153600480360360408110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b509092509050610878565b604080519081018590528315156060820152821515608082015281151560a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156101b0578181015183820152602001610198565b50505050905090810190601f1680156101dd5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b838110156102105781810151838201526020016101f8565b50505050905090810190601f16801561023d5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61038d600480360360a081101561026757600080fd5b81019060208101813564010000000081111561028257600080fd5b82018360208201111561029457600080fd5b803590602001918460018302840111640100000000831117156102b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561030957600080fd5b82018360208201111561031b57600080fd5b8035906020019184600183028401116401000000008311171561033d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135151590604001351515610bfe565b005b610397611149565b60408051918252519081900360200190f35b610153600480360360208110156103bf57600080fd5b5035611150565b61038d600480360360408110156103dc57600080fd5b8101906020810181356401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b91939092909160208101903564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b50909250905061136e565b61063c6004803603606081101561049e57600080fd5b8101906020810181356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460018302840111640100000000831117156104ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561054057600080fd5b82018360208201111561055257600080fd5b8035906020019184600183028401116401000000008311171561057457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105c757600080fd5b8201836020820111156105d957600080fd5b803590602001918460018302840111640100000000831117156105fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611666945050505050565b604080519115158252519081900360200190f35b61063c6004803603606081101561066657600080fd5b81019060208101813564010000000081111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111640100000000831117156106b557600080fd5b9193909290916020810190356401000000008111156106d357600080fd5b8201836020820111156106e557600080fd5b8035906020019184600183028401116401000000008311171561070757600080fd5b91939092909160208101903564010000000081111561072557600080fd5b82018360208201111561073757600080fd5b8035906020019184600183028401116401000000008311171561075957600080fd5b5090925090506118da565b61063c6004803603606081101561077a57600080fd5b81019060208101813564010000000081111561079557600080fd5b8201836020820111156107a757600080fd5b803590602001918460018302840111640100000000831117156107c957600080fd5b9193909290916020810190356401000000008111156107e757600080fd5b8201836020820111156107f957600080fd5b8035906020019184600183028401116401000000008311171561081b57600080fd5b91939092909160208101903564010000000081111561083957600080fd5b82018360208201111561084b57600080fd5b8035906020019184600183028401116401000000008311171561086d57600080fd5b509092509050611c57565b6060806000806000806109028a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092018290525060408051602081019091529081529250611666915050565b151561096c57898960008060008085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152939f50929d50959b509399509197509550610bf1945050505050565b60006109e18b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250611fc992505050565b90506001818154811015156109f257fe5b9060005260206000209060040201600001600182815481101515610a1257fe5b9060005260206000209060040201600101600183815481101515610a3257fe5b906000526020600020906004020160020154600184815481101515610a5357fe5b60009182526020909120600360049092020101546001805460ff9092169186908110610a7b57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610aa957fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff169290918891830182828015610b4e5780601f10610b2357610100808354040283529160200191610b4e565b820191906000526020600020905b815481529060010190602001808311610b3157829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015610bdc5780601f10610bb157610100808354040283529160200191610bdc565b820191906000526020600020905b815481529060010190602001808311610bbf57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d6020811015610c7857600080fd5b5051600160a060020a03163314610cc7576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610d11578181015183820152602001610cf9565b50505050905090810190601f168015610d3e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d71578181015183820152602001610d59565b50505050905090810190601f168015610d9e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515610e23576040805160e560020a62461bcd02815260206004820152601760248201527f726f6c652065786973747320666f7220746865206f7267000000000000000000604482015290519081900360640190fd5b60038054600101908190556040805160208082018381528951606084015289516002946000948c948c94938493830192608001918701908083838b5b83811015610e77578181015183820152602001610e5f565b50505050905090810190601f168015610ea45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610ed7578181015183820152602001610ebf565b50505050905090810190601f168015610f045780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208852878201989098529587016000908120989098555050845160c0810186528b81528085018b905294850189905250505084151560608301528315156080830152600160a083018190528054808201808355919094528251805191946004027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192610fae928492909101906120d9565b506020828101518051610fc792600185019201906120d9565b5060408281015160028301556060808401516003909301805460808087015160a09788015160ff199093169615159690961761ff001916610100961515969096029590951762ff0000191662010000911515919091021790558151918201889052861515908201528415159181019190915281815287519181019190915286517fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c92508791879187918791879190819060208083019160c08401918a019080838360005b838110156110a357818101518382015260200161108b565b50505050905090810190601f1680156110d05780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156111035781810151838201526020016110eb565b50505050905090810190601f1680156111305780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6001545b90565b60608060008060008060018781548110151561116857fe5b906000526020600020906004020160000160018881548110151561118857fe5b90600052602060002090600402016001016001898154811015156111a857fe5b90600052602060002090600402016002015460018a8154811015156111c957fe5b60009182526020909120600360049092020101546001805460ff909216918c9081106111f157fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c81548110151561121f57fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff1692909188918301828280156112c45780601f10611299576101008083540402835291602001916112c4565b820191906000526020600020905b8154815290600101906020018083116112a757829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156113525780601f1061132757610100808354040283529160200191611352565b820191906000526020600020905b81548152906001019060200180831161133557829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d60208110156113e857600080fd5b5051600160a060020a03163314611437576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b60026000858585856040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060405160208183030381529060405280519060200120815260200190815260200160002054600014151515611523576040805160e560020a62461bcd02815260206004820152601360248201527f726f6c6520646f6573206e6f7420657869737400000000000000000000000000604482015290519081900360640190fd5b600061159885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611fc992505050565b905060006001828154811015156115ab57fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156116b357818101518382015260200161169b565b50505050905090810190601f1680156116e05780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156117135781810151838201526020016116fb565b50505050905090810190601f1680156117405780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156117b75761177f8585611fc9565b905060018181548110151561179057fe5b906000526020600020906004020160030160029054906101000a900460ff169150506118d3565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156118015781810151838201526020016117e9565b50505050905090810190601f16801561182e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611861578181015183820152602001611849565b50505050905090810190601f16801561188e5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156118cd5761177f8584611fc9565b60009150505b9392505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561192c57600080fd5b505afa158015611940573d6000803e3d6000fd5b505050506040513d602081101561195657600080fd5b5051600160a060020a031633146119a5576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611a4c87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611a5a57506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611b7157611b6a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611be7565b611be488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611bf557fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611c2957fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ca957600080fd5b505afa158015611cbd573d6000803e3d6000fd5b505050506040513d6020811015611cd357600080fd5b5051600160a060020a03163314611d22576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611dc987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611dd757506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611eee57611ee788888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611f64565b611f6188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611f7257fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611fa657fe5b600091825260209091206004909102016003015460ff1698975050505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015612017578181015183820152602001611fff565b50505050905090810190601f1680156120445780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561207757818101518382015260200161205f565b50505050905090810190601f1680156120a45780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061211a57805160ff1916838001178555612147565b82800160010185558215612147579182015b8281111561214757825182559160200191906001019061212c565b50612153929150612157565b5090565b61114d91905b80821115612153576000815560010161215d56fe696e76616c69642063616c6c6572000000000000000000000000000000000000a165627a7a7230582092f62599fe8c2f4b530e18c69dc5dfe23290e7e9ecbcfcaba0161f05c31ab9980029` // 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) { diff --git a/permission/bind/voter.go b/permission/bind/voter.go index d328188c2..71cff2c7c 100644 --- a/permission/bind/voter.go +++ b/permission/bind/voter.go @@ -31,7 +31,7 @@ var ( 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\"}]" // VoterManagerBin is the compiled bytecode used for deploying new contracts. -const VoterManagerBin = `6080604052600060035534801561001557600080fd5b506040516020806129498339810180604052602081101561003557600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506128b3806100966000396000f3fe608060405234801561001057600080fd5b5060043610610074576000357c010000000000000000000000000000000000000000000000000000000090048063014e6acc146100795780635607395b1461021157806359cbd6fe146102aa578063b021386414610343578063e98ac22d146103fe575b600080fd5b6100f06004803603602081101561008f57600080fd5b81019080803590602001906401000000008111156100ac57600080fd5b8201836020820111156100be57600080fd5b803590602001918460018302840111640100000000831117156100e057600080fd5b909192939192939050505061054b565b6040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561016c578082015181840152602081019050610151565b50505050905090810190601f1680156101995780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b838110156101d25780820151818401526020810190506101b7565b50505050905090810190601f1680156101ff5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b6102a86004803603604081101561022757600080fd5b810190808035906020019064010000000081111561024457600080fd5b82018360208201111561025657600080fd5b8035906020019184600183028401116401000000008311171561027857600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108fa565b005b610341600480360360408110156102c057600080fd5b81019080803590602001906401000000008111156102dd57600080fd5b8201836020820111156102ef57600080fd5b8035906020019184600183028401116401000000008311171561031157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611336565b005b6103e46004803603606081101561035957600080fd5b810190808035906020019064010000000081111561037657600080fd5b82018360208201111561038857600080fd5b803590602001918460018302840111640100000000831117156103aa57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611728565b604051808215151515815260200191505060405180910390f35b610549600480360360a081101561041457600080fd5b810190808035906020019064010000000081111561043157600080fd5b82018360208201111561044357600080fd5b8035906020019184600183028401116401000000008311171561046557600080fd5b90919293919293908035906020019064010000000081111561048657600080fd5b82018360208201111561049857600080fd5b803590602001918460018302840111640100000000831117156104ba57600080fd5b9091929391929390803590602001906401000000008111156104db57600080fd5b8201836020820111156104ed57600080fd5b8035906020019184600183028401116401000000008311171561050f57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e0a565b005b6060806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156105d457600080fd5b505afa1580156105e8573d6000803e3d6000fd5b505050506040513d60208110156105fe57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b600061070087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b905060018181548110151561071157fe5b90600052602060002090600b020160040160000160018281548110151561073457fe5b90600052602060002090600b020160040160010160018381548110151561075757fe5b90600052602060002090600b020160040160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018481548110151561079b57fe5b90600052602060002090600b020160040160030154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108455780601f1061081a57610100808354040283529160200191610845565b820191906000526020600020905b81548152906001019060200180831161082857829003601f168201915b50505050509350828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108e15780601f106108b6576101008083540402835291602001916108e1565b820191906000526020600020905b8154815290600101906020018083116108c457829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561097d57600080fd5b505afa158015610991573d6000803e3d6000fd5b505050506040513d60208110156109a757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b600060026000858560405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020541415610e815760036000815480929190600101919050555060035460026000858560405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600060018054809190600101610b5c919061258c565b90508383600183815481101515610b6f57fe5b90600052602060002090600b02016000019190610b8d9291906125be565b5060018082815481101515610b9e57fe5b90600052602060002090600b02016001018190555060018082815481101515610bc357fe5b90600052602060002090600b0201600201819055506000600182815481101515610be957fe5b90600052602060002090600b0201600301819055506020604051908101604052806000815250600182815481101515610c1e57fe5b90600052602060002090600b02016004016000019080519060200190610c4592919061263e565b506020604051908101604052806000815250600182815481101515610c6657fe5b90600052602060002090600b02016004016001019080519060200190610c8d92919061263e565b506000600182815481101515610c9f57fe5b90600052602060002090600b020160040160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600182815481101515610d0257fe5b90600052602060002090600b020160040160030181905550600181815481101515610d2957fe5b90600052602060002090600b020160010154600182815481101515610d4a57fe5b90600052602060002090600b020160090160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181815481101515610dab57fe5b90600052602060002090600b020160080160408051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff0219169083151502179055505050505061129a565b6000610ed084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b90506000600182815481101515610ee357fe5b90600052602060002090600b020160090160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156110fe57600181815481101515610f4757fe5b90600052602060002090600b020160010160008154809291906001019190505550600181815481101515610f7757fe5b90600052602060002090600b020160010154600182815481101515610f9857fe5b90600052602060002090600b020160090160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181815481101515610ff957fe5b90600052602060002090600b020160080160408051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff0219169083151502179055505050506001818154811015156110d857fe5b90600052602060002090600b020160020160008154809291906001019190505550611298565b600061114e85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050846123fe565b90506001151560018381548110151561116357fe5b90600052602060002090600b02016008018281548110151561118157fe5b9060005260206000200160000160149054906101000a900460ff16151514151515611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f616c7265616479206120766f746572000000000000000000000000000000000081525060200191505060405180910390fd5b6001808381548110151561122457fe5b90600052602060002090600b02016008018281548110151561124257fe5b9060005260206000200160000160146101000a81548160ff02191690831515021790555060018281548110151561127557fe5b90600052602060002090600b020160020160008154809291906001019190505550505b505b7f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d3457483838360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156113b957600080fd5b505afa1580156113cd573d6000803e3d6000fd5b505050506040513d60208110156113e357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081600115156114ea8383612475565b1515141515611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d757374206265206120766f746572000000000000000000000000000000000081525060200191505060405180910390fd5b60006115b086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b9050600061160287878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050866123fe565b905060018281548110151561161357fe5b90600052602060002090600b02016002016000815480929190600190039190505550600060018381548110151561164657fe5b90600052602060002090600b02016008018281548110151561166457fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b687878760405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a150505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156117ad57600080fd5b505afa1580156117c1573d6000803e3d6000fd5b505050506040513d60208110156117d757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083600115156118de8383612475565b1515141515611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d757374206265206120766f746572000000000000000000000000000000000081525060200191505060405180910390fd5b600115156119a788888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086612554565b1515141515611a1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b6000611a6d88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b905060011515600182815481101515611a8257fe5b90600052602060002090600b0201600a01600083815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611b67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e6e6f7420646f75626c6520766f7465000000000000000000000000000081525060200191505060405180910390fd5b600181815481101515611b7657fe5b90600052602060002090600b02016003016000815480929190600101919050555060018082815481101515611ba757fe5b90600052602060002090600b0201600a01600083815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a16002600182815481101515611c9157fe5b90600052602060002090600b020160020154811515611cac57fe5b04600182815481101515611cbc57fe5b90600052602060002090600b0201600301541115611dfa576020604051908101604052806000815250600182815481101515611cf457fe5b90600052602060002090600b02016004016000019080519060200190611d1b92919061263e565b506020604051908101604052806000815250600182815481101515611d3c57fe5b90600052602060002090600b02016004016001019080519060200190611d6392919061263e565b506000600182815481101515611d7557fe5b90600052602060002090600b020160040160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600182815481101515611dd857fe5b90600052602060002090600b0201600401600301819055506001935050611e00565b60009350505b5050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611e8d57600080fd5b505afa158015611ea1573d6000803e3d6000fd5b505050506040513d6020811015611eb757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b611fb988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506000612554565b1515612010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806128546034913960400191505060405180910390fd5b600061205f89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b9050868660018381548110151561207257fe5b90600052602060002090600b020160040160000191906120939291906125be565b5084846001838154811015156120a557fe5b90600052602060002090600b020160040160010191906120c69291906125be565b50826001828154811015156120d757fe5b90600052602060002090600b020160040160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160018281548110151561213957fe5b90600052602060002090600b02016004016003018190555060008090505b60018281548110151561216657fe5b90600052602060002090600b0201600801805490508110156122be5760018281548110151561219157fe5b90600052602060002090600b0201600801818154811015156121af57fe5b9060005260206000200160000160149054906101000a900460ff16156122b15760006001838154811015156121e057fe5b90600052602060002090600b0201600a016000848152602001908152602001600020600060018581548110151561221357fe5b90600052602060002090600b02016008018481548110151561223157fe5b9060005260206000200160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080600101915050612157565b5060006001828154811015156122d057fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561239f578082015181840152602081019050612384565b50505050905090810190601f1680156123cc5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b60008061240a84612353565b90506001808281548110151561241c57fe5b90600052602060002090600b020160090160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540391505092915050565b60008061248184612353565b9050600060018281548110151561249457fe5b90600052602060002090600b020160090160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156124f357600091505061254e565b60006124ff85856123fe565b905060018281548110151561251057fe5b90600052602060002090600b02016008018181548110151561252e57fe5b9060005260206000200160000160149054906101000a900460ff16925050505b92915050565b600081600161256285612353565b81548110151561256e57fe5b90600052602060002090600b02016004016003015414905092915050565b8154818355818111156125b957600b0281600b0283600052602060002091820191016125b891906126be565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125ff57803560ff191683800117855561262d565b8280016001018555821561262d579182015b8281111561262c578235825591602001919060010190612611565b5b50905061263a919061276b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061267f57805160ff19168380011785556126ad565b828001600101855582156126ad579182015b828111156126ac578251825591602001919060010190612691565b5b5090506126ba919061276b565b5090565b61276891905b8082111561276457600080820160006126dd9190612790565b600182016000905560028201600090556003820160009055600482016000808201600061270a9190612790565b60018201600061271a9190612790565b6002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055505060088201600061275b91906127d8565b50600b016126c4565b5090565b90565b61278d91905b80821115612789576000816000905550600101612771565b5090565b90565b50805460018160011615610100020316600290046000825580601f106127b657506127d5565b601f0160209004906000526020600020908101906127d4919061276b565b5b50565b50805460008255906000526020600020908101906127f691906127f9565b50565b61285091905b8082111561284c57600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff0219169055506001016127ff565b5090565b9056fe6974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a723058209bcb200dffe1c7dbbf4661d7181f768f85d4dda30f18c49d34e48846e15a15430029` +const VoterManagerBin = `6080604052600060035534801561001557600080fd5b506040516020806120968339810180604052602081101561003557600080fd5b505160008054600160a060020a03909216600160a060020a031990921691909117905561202f806100676000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a6000350463014e6acc811461005f5780635607395b146101cd57806359cbd6fe14610248578063b0213864146102c1578063e98ac22d14610354575b600080fd5b6100cf6004803603602081101561007557600080fd5b81019060208101813564010000000081111561009057600080fd5b8201836020820111156100a257600080fd5b803590602001918460018302840111640100000000831117156100c457600080fd5b509092509050610477565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561018e578181015183820152602001610176565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b610246600480360360408110156101e357600080fd5b8101906020810181356401000000008111156101fe57600080fd5b82018360208201111561021057600080fd5b8035906020019184600183028401116401000000008311171561023257600080fd5b919350915035600160a060020a031661074e565b005b6102466004803603604081101561025e57600080fd5b81019060208101813564010000000081111561027957600080fd5b82018360208201111561028b57600080fd5b803590602001918460018302840111640100000000831117156102ad57600080fd5b919350915035600160a060020a0316610f63565b610340600480360360608110156102d757600080fd5b8101906020810181356401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b9193509150600160a060020a03813516906020013561124d565b604080519115158252519081900360200190f35b610246600480360360a081101561036a57600080fd5b81019060208101813564010000000081111561038557600080fd5b82018360208201111561039757600080fd5b803590602001918460018302840111640100000000831117156103b957600080fd5b9193909290916020810190356401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184600183028401116401000000008311171561040b57600080fd5b91939092909160208101903564010000000081111561042957600080fd5b82018360208201111561043b57600080fd5b8035906020019184600183028401116401000000008311171561045d57600080fd5b9193509150600160a060020a038135169060200135611772565b6060806000806000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051600160a060020a03163314610546576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b600061058787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b905060018181548110151561059857fe5b90600052602060002090600b02016004016000016001828154811015156105bb57fe5b90600052602060002090600b02016004016001016001838154811015156105de57fe5b600091825260209091206006600b90920201015460018054600160a060020a03909216918590811061060c57fe5b60009182526020918290206007600b909202010154845460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928691908301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156107355780601f1061070a57610100808354040283529160200191610735565b820191906000526020600020905b81548152906001019060200180831161071857829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561079e57600080fd5b505afa1580156107b2573d6000803e3d6000fd5b505050506040513d60208110156107c857600080fd5b5051600160a060020a03163314610817576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b60026000848460405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415610bac576003805460010190819055604080516020808201908152918101859052600291600091879187918190606001848480828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020819055506000600180548091906001016109119190611d54565b9050838360018381548110151561092457fe5b6000918252602090912061093e93600b9092020191611d85565b506001808281548110151561094f57fe5b90600052602060002090600b0201600101819055506001808281548110151561097457fe5b90600052602060002090600b020160020181905550600060018281548110151561099a57fe5b90600052602060002090600b02016003018190555060206040519081016040528060008152506001828154811015156109cf57fe5b90600052602060002090600b020160040160000190805190602001906109f6929190611e03565b506040805160208101909152600081526001805483908110610a1457fe5b90600052602060002090600b02016004016001019080519060200190610a3b929190611e03565b506000600182815481101515610a4d57fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393909316929092179091556001805483908110610a9a57fe5b600091825260209091206007600b9092020101556001805482908110610abc57fe5b90600052602060002090600b020160010154600182815481101515610add57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610b1457fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b9690960290930160080180549384018155865292909420935193018054925173ffffffffffffffffffffffffffffffffffffffff19909316939091169290921774ff0000000000000000000000000000000000000000191660a060020a9115159190910217905550610eed565b6000610bed84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600181815481101515610bfe57fe5b60009182526020808320600160a060020a03861684526009600b9093020191909101905260409020541515610d7b576001805482908110610c3b57fe5b600091825260209091206001600b909202018101805482019055805482908110610c6157fe5b90600052602060002090600b020160010154600182815481101515610c8257fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610cb957fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b969096029093016008018054808501825590875293909520905192018054935173ffffffffffffffffffffffffffffffffffffffff19909416929094169190911774ff0000000000000000000000000000000000000000191660a060020a9215159290920291909117909155805482908110610d5c57fe5b600091825260209091206002600b909202010180546001019055610eeb565b6000610dbe85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611c1c915050565b9050600182815481101515610dcf57fe5b90600052602060002090600b020160080181815481101515610ded57fe5b60009182526020909120015460a060020a900460ff16151560011415610e5d576040805160e560020a62461bcd02815260206004820152600f60248201527f616c7265616479206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b60018083815481101515610e6d57fe5b90600052602060002090600b020160080182815481101515610e8b57fe5b6000918252602090912001805491151560a060020a0274ff0000000000000000000000000000000000000000199092169190911790556001805483908110610ecf57fe5b600091825260209091206002600b909202010180546001019055505b505b60408051600160a060020a03831660208201528181529081018390527f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574908490849084908060608101858580828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d6020811015610fdd57600080fd5b5051600160a060020a0316331461102c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250611070915083905082611c6e565b15156001146110c9576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b600061110a86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600061114f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611c1c915050565b905060018281548110151561116057fe5b6000918252602082206002600b90920201018054600019019055600180548490811061118857fe5b90600052602060002090600b0201600801828154811015156111a657fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b6878787604051808060200183600160a060020a0316600160a060020a031681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d60208110156112c957600080fd5b5051600160a060020a03163314611318576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061135c915083905082611c6e565b15156001146113b5576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b6113f687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250611d1e915050565b151560011461144f576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061149088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b90506001818154811015156114a157fe5b60009182526020808320848452600a600b909302019190910181526040808320600160a060020a038a16845290915290205460ff16151560011415611530576040805160e560020a62461bcd02815260206004820152601260248201527f63616e6e6f7420646f75626c6520766f74650000000000000000000000000000604482015290519081900360640190fd5b600180548290811061153e57fe5b600091825260209091206003600b909202010180546001908101909155805481908390811061156957fe5b60009182526020808320858452600b92909202909101600a0181526040808320600160a060020a038b168452825291829020805460ff19169315159390931790925580518281529182018990527f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a1600260018281548110151561161957fe5b90600052602060002090600b02016002015481151561163457fe5b0460018281548110151561164457fe5b90600052602060002090600b020160030154111561176257604080516020810190915260008152600180548390811061167957fe5b90600052602060002090600b020160040160000190805190602001906116a0929190611e03565b5060408051602081019091526000815260018054839081106116be57fe5b90600052602060002090600b020160040160010190805190602001906116e5929190611e03565b5060006001828154811015156116f757fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039390931692909217909155600180548390811061174457fe5b600091825260209091206007600b9092020101555060019250611768565b60009350505b5050949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117c257600080fd5b505afa1580156117d6573d6000803e3d6000fd5b505050506040513d60208110156117ec57600080fd5b5051600160a060020a0316331461183b576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b61187a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d1e915050565b15156118ba5760405160e560020a62461bcd028152600401808060200182810382526034815260200180611fd06034913960400191505060405180910390fd5b60006118fb89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050868660018381548110151561190e57fe5b90600052602060002090600b0201600401600001919061192f929190611d85565b50848460018381548110151561194157fe5b90600052602060002090600b02016004016001019190611962929190611d85565b508260018281548110151561197357fe5b90600052602060002090600b020160040160020160006101000a815481600160a060020a030219169083600160a060020a03160217905550816001828154811015156119bb57fe5b6000918252602082206007600b9092020101919091555b60018054839081106119e057fe5b90600052602060002090600b020160080180549050811015611ae2576001805483908110611a0a57fe5b90600052602060002090600b020160080181815481101515611a2857fe5b60009182526020909120015460a060020a900460ff1615611ada576000600183815481101515611a5457fe5b90600052602060002090600b0201600a0160008481526020019081526020016000206000600185815481101515611a8757fe5b90600052602060002090600b020160080184815481101515611aa557fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790555b6001016119d2565b506000600182815481101515611af457fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611bbd578181015183820152602001611ba5565b50505050905090810190601f168015611bea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b600080611c2884611b74565b905060018082815481101515611c3a57fe5b60009182526020808320600160a060020a03881684526009600b909302019190910190526040902054039150505b92915050565b600080611c7a84611b74565b9050600181815481101515611c8b57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020541515611cc4576000915050611c68565b6000611cd08585611c1c565b9050600182815481101515611ce157fe5b90600052602060002090600b020160080181815481101515611cff57fe5b60009182526020909120015460a060020a900460ff1695945050505050565b6000816001611d2c85611b74565b81548110611d3657fe5b90600052602060002090600b02016004016003015414905092915050565b815481835581811115611d8057600b0281600b028360005260206000209182019101611d809190611e71565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dc65782800160ff19823516178555611df3565b82800160010185558215611df3579182015b82811115611df3578235825591602001919060010190611dd8565b50611dff929150611f03565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e4457805160ff1916838001178555611df3565b82800160010185558215611df3579182015b82811115611df3578251825591602001919060010190611e56565b611f0091905b80821115611dff576000611e8b8282611f1d565b60006001830181905560028301819055600383018190556004830190611eb18282611f1d565b611ebf600183016000611f1d565b5060028101805473ffffffffffffffffffffffffffffffffffffffff1916905560006003909101819055611ef7906008840190611f64565b50600b01611e77565b90565b611f0091905b80821115611dff5760008155600101611f09565b50805460018160011615610100020316600290046000825580601f10611f435750611f61565b601f016020900490600052602060002090810190611f619190611f03565b50565b5080546000825590600052602060002090810190611f619190611f0091905b80821115611dff57805474ffffffffffffffffffffffffffffffffffffffffff19168155600101611f8356fe696e76616c69642063616c6c65720000000000000000000000000000000000006974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a723058208ad471d1b4c0bebbc8d17f94646a45e91d09e066c6345dca8963fb3874d61fb00029` // 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) { diff --git a/permission/contract/NodeManager.sol b/permission/contract/NodeManager.sol index 4bfb71bde..62d3d12ac 100644 --- a/permission/contract/NodeManager.sol +++ b/permission/contract/NodeManager.sol @@ -95,6 +95,9 @@ contract NodeManager { */ function getNodeDetails(string calldata enodeId) external view returns (string memory _orgId, string memory _enodeId, uint256 _nodeStatus) { + if (nodeIdToIndex[keccak256(abi.encode(_enodeId))] == 0) { + return ("", enodeId, 0); + } uint256 nodeIndex = _getNodeIndex(enodeId); return (nodeList[nodeIndex].orgId, nodeList[nodeIndex].enodeId, nodeList[nodeIndex].status); diff --git a/permission/contract/OrgManager.sol b/permission/contract/OrgManager.sol index ca1826f18..07d05a91b 100644 --- a/permission/contract/OrgManager.sol +++ b/permission/contract/OrgManager.sol @@ -195,6 +195,23 @@ contract OrgManager { orgList[_orgIndex].ultParent, orgList[_orgIndex].level, orgList[_orgIndex].status); } + /** @notice returns org info for a given org id + * @param _orgId org id + * @return org id + * @return parent org id + * @return ultimate parent id + * @return level in the org tree + * @return status + */ + function getOrgDetails(string calldata _orgId) external view returns (string memory, + string memory, string memory, uint256, uint256) { + if (!checkOrgExists(_orgId)){ + return (_orgId, "", "", 0,0); + } + uint256 _orgIndex = _getOrgIndex(_orgId); + return (orgList[_orgIndex].orgId, orgList[_orgIndex].parentId, + orgList[_orgIndex].ultParent, orgList[_orgIndex].level, orgList[_orgIndex].status); + } /** @notice returns the master org id for the given org or sub org * @param _orgId org id * @return master org id @@ -219,6 +236,9 @@ contract OrgManager { */ function checkOrgStatus(string memory _orgId, uint256 _orgStatus) public view returns (bool){ + if (OrgIndex[keccak256(abi.encodePacked(_orgId))] == 0) { + return false; + } uint256 id = _getOrgIndex(_orgId); return ((OrgIndex[keccak256(abi.encodePacked(_orgId))] != 0) && orgList[id].status == _orgStatus); @@ -334,7 +354,7 @@ contract OrgManager { /** @notice returns the org index from the org list for the given org * @return org index */ - function _getOrgIndex(string memory _orgId) public view returns (uint){ + function _getOrgIndex(string memory _orgId) private view returns (uint){ return OrgIndex[keccak256(abi.encodePacked(_orgId))] - 1; } diff --git a/permission/contract/gen/AccountManager.bin b/permission/contract/gen/AccountManager.bin index 69c342409..f02dc9fa7 100644 --- a/permission/contract/gen/AccountManager.bin +++ b/permission/contract/gen/AccountManager.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50604051602080620048c18339810180604052602081101561003157600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061482e80620000936000396000f3fe608060405234801561001057600080fd5b50600436106100ec576000357c01000000000000000000000000000000000000000000000000000000009004806384b7a84a116100a9578063c214e5e511610083578063c214e5e514610877578063cef7f6af14610928578063e3483a9d146109f6578063e8b42bf414610aee576100ec565b806384b7a84a146105a9578063950145cf1461064c578063b20185681461071f576100ec565b8063143a5604146100f15780631d09dc93146101eb5780632aceb534146102af578063309e36ef1461041d5780636b568d761461043b57806381d66b23146104ec575b600080fd5b6101e96004803603608081101561010757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561014457600080fd5b82018360208201111561015657600080fd5b8035906020019184600183028401116401000000008311171561017857600080fd5b90919293919293908035906020019064010000000081111561019957600080fd5b8201836020820111156101ab57600080fd5b803590602001918460018302840111640100000000831117156101cd57600080fd5b9091929391929390803515159060200190929190505050610c78565b005b6102626004803603602081101561020157600080fd5b810190808035906020019064010000000081111561021e57600080fd5b82018360208201111561023057600080fd5b8035906020019184600183028401116401000000008311171561025257600080fd5b9091929391929390505050611157565b60405180831515151581526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6102f1600480360360208110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611823565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b8381101561037757808201518184015260208101905061035c565b50505050905090810190601f1680156103a45780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b838110156103dd5780820151818401526020810190506103c2565b50505050905090810190601f16801561040a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b610425611afe565b6040518082815260200191505060405180910390f35b6104d26004803603604081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561048e57600080fd5b8201836020820111156104a057600080fd5b803590602001918460018302840111640100000000831117156104c257600080fd5b9091929391929390505050611b0b565b604051808215151515815260200191505060405180910390f35b61052e6004803603602081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c91565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561056e578082015181840152602081019050610553565b50505050905090810190601f16801561059b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61064a600480360360608110156105bf57600080fd5b81019080803590602001906401000000008111156105dc57600080fd5b8201836020820111156105ee57600080fd5b8035906020019184600183028401116401000000008311171561061057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e4f565b005b6107056004803603602081101561066257600080fd5b810190808035906020019064010000000081111561067f57600080fd5b82018360208201111561069157600080fd5b803590602001918460018302840111640100000000831117156106b357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612781565b604051808215151515815260200191505060405180910390f35b61074b6004803603602081101561073557600080fd5b8101908080359060200190929190505050612957565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156107d15780820151818401526020810190506107b6565b50505050905090810190601f1680156107fe5780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b8381101561083757808201518184015260208101905061081c565b50505050905090810190601f1680156108645780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b61090e6004803603604081101561088d57600080fd5b81019080803590602001906401000000008111156108aa57600080fd5b8201836020820111156108bc57600080fd5b803590602001918460018302840111640100000000831117156108de57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b7a565b604051808215151515815260200191505060405180910390f35b6109f46004803603604081101561093e57600080fd5b810190808035906020019064010000000081111561095b57600080fd5b82018360208201111561096d57600080fd5b8035906020019184600183028401116401000000008311171561098f57600080fd5b9091929391929390803590602001906401000000008111156109b057600080fd5b8201836020820111156109c257600080fd5b803590602001918460018302840111640100000000831117156109e457600080fd5b90919293919293905050506132e3565b005b610aec60048036036080811015610a0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a4957600080fd5b820183602082011115610a5b57600080fd5b80359060200191846001830284011164010000000083111715610a7d57600080fd5b909192939192939080359060200190640100000000811115610a9e57600080fd5b820183602082011115610ab057600080fd5b80359060200191846001830284011164010000000083111715610ad257600080fd5b90919293919293908035906020019092919050505061346d565b005b610c5e60048036036060811015610b0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610b4157600080fd5b820183602082011115610b5357600080fd5b80359060200191846001830284011164010000000083111715610b7557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bd857600080fd5b820183602082011115610bea57600080fd5b80359060200191846001830284011164010000000083111715610c0c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506138c5565b604051808215151515815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015610cfb57600080fd5b505afa158015610d0f573d6000803e3d6000fd5b505050506040513d6020811015610d2557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b60046040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610e665780601f10610e3b57610100808354040283529160200191610e66565b820191906000526020600020905b815481529060010190602001808311610e4957829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015611062575060056040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610f6c5780601f10610f4157610100808354040283529160200191610f6c565b820191906000526020600020905b815481529060010190602001808311610f4f57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611017578082015181840152602081019050610ffc565b50505050905090810190601f1680156110445780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b15156110b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061475e6040913960400191505060405180910390fd5b61114f8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600285613ebc565b505050505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156111dd57600080fd5b505afa1580156111f1573d6000803e3d6000fd5b505050506040513d602081101561120757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b61130784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612781565b1561181157600061139c60066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166143d6565b905060066001828154811015156113af57fe5b90600052602060002090600502016003018190555060006001828154811015156113d557fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77660018281548110151561142d57fe5b906000526020600020906005020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561146e57fe5b906000526020600020906005020160010160018481548110151561148e57fe5b90600052602060002090600502016002016001858154811015156114ae57fe5b906000526020600020906005020160040160009054906101000a900460ff166001868154811015156114dc57fe5b906000526020600020906005020160030154604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001851515151581526020018481526020018381038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115bd5780601f10611592576101008083540402835291602001916115bd565b820191906000526020600020905b8154815290600101906020018083116115a057829003601f168201915b50508381038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116405780601f1061161557610100808354040283529160200191611640565b820191906000526020600020905b81548152906001019060200180831161162357829003601f168201915b505097505050505050505060405180910390a1600460405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116e15780601f106116b6576101008083540402835291602001916116e1565b820191906000526020600020905b8154815290600101906020018083116116c457829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561170c57fe5b906000526020600020906005020160020160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156117a95780601f1061177e576101008083540402835291602001916117a9565b820191906000526020600020905b81548152906001019060200180831161178c57829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156117d557fe5b906000526020600020906005020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925092505061181c565b600080809050915091505b9250929050565b60006060806000806000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156118d457856000806040805190810160405280600481526020017f4e4f4e450000000000000000000000000000000000000000000000000000000081525091906020604051908101604052806000815250919081915094509450945094509450611af5565b60006118df876143d6565b90506001818154811015156118f057fe5b906000526020600020906005020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018281548110151561193157fe5b906000526020600020906005020160010160018381548110151561195157fe5b906000526020600020906005020160020160018481548110151561197157fe5b90600052602060002090600502016003015460018581548110151561199257fe5b906000526020600020906005020160040160009054906101000a900460ff16838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a465780601f10611a1b57610100808354040283529160200191611a46565b820191906000526020600020905b815481529060010190602001808311611a2957829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ae25780601f10611ab757610100808354040283529160200191611ae2565b820191906000526020600020905b815481529060010190602001808311611ac557829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6000600180549050905090565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611b5d5760019050611c8a565b6000611b68856143d6565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120600182815481101515611bcc57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611c695780601f10611c3e57610100808354040283529160200191611c69565b820191906000526020600020905b815481529060010190602001808311611c4c57829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b60606000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611d18576040805190810160405280600481526020017f4e4f4e45000000000000000000000000000000000000000000000000000000008152509050611e4a565b6000611d23836143d6565b90506000600182815481101515611d3657fe5b906000526020600020906005020160030154141515611e1057600181815481101515611d5e57fe5b90600052602060002090600502016002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e035780601f10611dd857610100808354040283529160200191611e03565b820191906000526020600020905b815481529060010190602001808311611de657829003601f168201915b5050505050915050611e4a565b6040805190810160405280600481526020017f4e4f4e45000000000000000000000000000000000000000000000000000000008152509150505b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611ed257600080fd5b505afa158015611ee6573d6000803e3d6000fd5b505050506040513d6020811015611efc57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611faf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050826000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515156120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6163636f756e7420646f6573206e6f742065786973747300000000000000000081525060200191505060405180910390fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156120f15780820151818401526020810190506120d6565b50505050905090810190601f16801561211e5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612144836143d6565b81548110151561215057fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121ed5780601f106121c2576101008083540402835291602001916121ed565b820191906000526020600020905b8154815290600101906020018083116121d057829003601f168201915b5050925050506040516020818303038152906040528051906020012014151561227e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6163636f756e7420696e20646966666572656e74206f7267000000000000000081525060200191505060405180910390fd5b60008311801561228e5750600683105b1515612302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f696e76616c696420737461747573206368616e6765207265717565737400000081525060200191505060405180910390fd5b600115156123658588888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060206040519081016040528060008152506138c5565b1515141515156123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806147d26031913960400191505060405180910390fd5b6000600184141561245757600260016123d8876143d6565b8154811015156123e457fe5b90600052602060002090600502016003015414151561244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806146fd6039913960400191505060405180910390fd5b600490506126ac565b60028414156124ec576004600161246d876143d6565b81548110151561247957fe5b9060005260206000209060050201600301541415156124e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806146c1603c913960400191505060405180910390fd5b600290506126ab565b60038414156125825760056001612502876143d6565b81548110151561250e57fe5b90600052602060002090600502016003015414151515612579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806146896038913960400191505060405180910390fd5b600590506126aa565b60048414156126175760056001612598876143d6565b8154811015156125a457fe5b90600052602060002090600502016003015414151561260e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061479e6034913960400191505060405180910390fd5b600790506126a9565b60058414156126a8576007600161262d876143d6565b81548110151561263957fe5b9060005260206000209060050201600301541415156126a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806146516038913960400191505060405180910390fd5b600290505b5b5b5b5b8060016126b8876143d6565b8154811015156126c457fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b2585888884604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a150505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156127e25780820151818401526020810190506127c7565b50505050905090810190601f16801561280f5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561294d57600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156128c05780820151818401526020810190506128a5565b50505050905090810190601f1680156128ed5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600261294482614422565b14915050612952565b600090505b919050565b600060608060008060018681548110151561296e57fe5b906000526020600020906005020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001878154811015156129af57fe5b90600052602060002090600502016001016001888154811015156129cf57fe5b90600052602060002090600502016002016001898154811015156129ef57fe5b90600052602060002090600502016003015460018a815481101515612a1057fe5b906000526020600020906005020160040160009054906101000a900460ff16838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612ac45780601f10612a9957610100808354040283529160200191612ac4565b820191906000526020600020905b815481529060010190602001808311612aa757829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b605780601f10612b3557610100808354040283529160200191612b60565b820191906000526020600020905b815481529060010190602001808311612b4357829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015612bff57600080fd5b505afa158015612c13573d6000803e3d6000fd5b505050506040513d6020811015612c2957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6060612ce783611c91565b90506000612cf484614422565b90506000612d01856143d6565b905060056040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612d915780601f10612d6657610100808354040283529160200191612d91565b820191906000526020600020905b815481529060010190602001808311612d7457829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612df1578082015181840152602081019050612dd6565b50505050905090810190601f168015612e1e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120148015612e465750600182145b15612ef0578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6002600182815481101515612f0157fe5b90600052602060002090600502016003018190555060018082815481101515612f2657fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77685600183815481101515612f7f57fe5b9060005260206000209060050201600101600184815481101515612f9f57fe5b9060005260206000209060050201600201600185815481101515612fbf57fe5b906000526020600020906005020160040160009054906101000a900460ff16600186815481101515612fed57fe5b906000526020600020906005020160030154604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001851515151581526020018481526020018381038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156130ce5780601f106130a3576101008083540402835291602001916130ce565b820191906000526020600020905b8154815290600101906020018083116130b157829003601f168201915b50508381038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156131515780601f1061312657610100808354040283529160200191613151565b820191906000526020600020905b81548152906001019060200180831161313457829003601f168201915b505097505050505050505060405180910390a1600460405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156131f25780601f106131c7576101008083540402835291602001916131f2565b820191906000526020600020905b8154815290600101906020018083116131d557829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561321d57fe5b906000526020600020906005020160020160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156132ba5780601f1061328f576101008083540402835291602001916132ba565b820191906000526020600020905b81548152906001019060200180831161329d57829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561336657600080fd5b505afa15801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b8383600491906134549291906144ab565b508181600591906134669291906144ab565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156134f057600080fd5b505afa158015613504573d6000803e3d6000fd5b505050506040513d602081101561351a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156135cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6005604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561365b5780601f106136305761010080835404028352916020019161365b565b820191906000526020600020905b81548152906001019060200180831161363e57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014806137d057506004604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561375f5780601f106137345761010080835404028352916020019161375f565b820191906000526020600020905b81548152906001019060200180831161374257829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515613827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806147366028913960400191505060405180910390fd5b6138bd8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050846001613ebc565b505050505050565b6000600460405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156139555780601f1061392a57610100808354040283529160200191613955565b820191906000526020600020905b81548152906001019060200180831161393857829003601f168201915b5050925050506040516020818303038152906040528051906020012061397a85611c91565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156139bd5780820151818401526020810190506139a2565b50505050905090810190601f1680156139ea5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201415613cd1576000613a16856143d6565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613a5c578082015181840152602081019050613a41565b50505050905090810190601f168015613a895780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515613ab357fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613b505780601f10613b2557610100808354040283529160200191613b50565b820191906000526020600020905b815481529060010190602001808311613b3357829003601f168201915b505092505050604051602081830303815290604052805190602001201480613cc95750826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613bb7578082015181840152602081019050613b9c565b50505050905090810190601f168015613be45780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515613c0e57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613cab5780601f10613c8057610100808354040283529160200191613cab565b820191906000526020600020905b815481529060010190602001808311613c8e57829003601f168201915b50509250505060405160208183030381529060405280519060200120145b915050613eb5565b8373ffffffffffffffffffffffffffffffffffffffff1660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613d30578082015181840152602081019050613d15565b50505050905090810190601f168015613d5d5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613eb257508373ffffffffffffffffffffffffffffffffffffffff1660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613e23578082015181840152602081019050613e08565b50505050905090810190601f168015613e505780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b90505b9392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015613f3f57600080fd5b505afa158015613f53573d6000803e3d6000fd5b505050506040513d6020811015613f6957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561401c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6000614027866143d6565b90506000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515614109578360018281548110151561408257fe5b906000526020600020906005020160020190805190602001906140a692919061452b565b50826001828154811015156140b757fe5b906000526020600020906005020160030181905550816001828154811015156140dc57fe5b906000526020600020906005020160040160006101000a81548160ff02191690831515021790555061427d565b600360008154809291906001019190505550600354600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160a0604051908101604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018415158152509080600181540180825580915050906001820390600052602060002090600502016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190805190602001906142319291906145ab565b50604082015181600201908051906020019061424e9291906145ab565b506060820151816003015560808201518160040160006101000a81548160ff0219169083151502179055505050505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768686868587604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561432957808201518184015260208101905061430e565b50505050905090810190601f1680156143565780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b8381101561438f578082015181840152602081019050614374565b50505050905090810190601f1680156143bc5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b60006001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054039050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561447457600090506144a6565b600061447f836143d6565b905060018181548110151561449057fe5b9060005260206000209060050201600301549150505b919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106144ec57803560ff191683800117855561451a565b8280016001018555821561451a579182015b828111156145195782358255916020019190600101906144fe565b5b509050614527919061462b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061456c57805160ff191683800117855561459a565b8280016001018555821561459a579182015b8281111561459957825182559160200191906001019061457e565b5b5090506145a7919061462b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106145ec57805160ff191683800117855561461a565b8280016001018555821561461a579182015b828111156146195782518255916020019190600101906145fe565b5b509050614627919061462b565b5090565b61464d91905b80821115614649576000816000905550600101614631565b5090565b9056fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a72305820a534fbde5dac7e84dd47dee87465cfb80f5dc4b2409ed9c4e52bced609423e980029 \ No newline at end of file +608060405234801561001057600080fd5b50604051602080613a988339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a0319909216919091179055613a36806100626000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e060020a9004806384b7a84a11610090578063c214e5e51161006a578063c214e5e5146105fb578063cef7f6af14610674578063e3483a9d14610736578063e8b42bf414610808576100d3565b806384b7a84a146104b9578063950145cf14610538578063b2018568146105de576100d3565b8063143a5604146100d85780631d09dc93146101ae5780632aceb53414610241578063309e36ef146103705780636b568d761461038a57806381d66b231461041e575b600080fd5b6101ac600480360360808110156100ee57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561011957600080fd5b82018360208201111561012b57600080fd5b8035906020019184600183028401116401000000008311171561014d57600080fd5b91939092909160208101903564010000000081111561016b57600080fd5b82018360208201111561017d57600080fd5b8035906020019184600183028401116401000000008311171561019f57600080fd5b9193509150351515610945565b005b61021e600480360360208110156101c457600080fd5b8101906020810181356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184600183028401116401000000008311171561021357600080fd5b509092509050610d40565b604080519215158352600160a060020a0390911660208301528051918290030190f35b6102676004803603602081101561025757600080fd5b5035600160a060020a03166112dd565b6040518086600160a060020a0316600160a060020a03168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156102d05781810151838201526020016102b8565b50505050905090810190601f1680156102fd5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610330578181015183820152602001610318565b50505050905090810190601f16801561035d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b61037861154b565b60408051918252519081900360200190f35b61040a600480360360408110156103a057600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156103cb57600080fd5b8201836020820111156103dd57600080fd5b803590602001918460018302840111640100000000831117156103ff57600080fd5b509092509050611552565b604080519115158252519081900360200190f35b6104446004803603602081101561043457600080fd5b5035600160a060020a03166116ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047e578181015183820152602001610466565b50505050905090810190601f1680156104ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ac600480360360608110156104cf57600080fd5b8101906020810181356401000000008111156104ea57600080fd5b8201836020820111156104fc57600080fd5b8035906020019184600183028401116401000000008311171561051e57600080fd5b9193509150600160a060020a03813516906020013561182f565b61040a6004803603602081101561054e57600080fd5b81019060208101813564010000000081111561056957600080fd5b82018360208201111561057b57600080fd5b8035906020019184600183028401116401000000008311171561059d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f5f945050505050565b610267600480360360208110156105f457600080fd5b50356120da565b61040a6004803603604081101561061157600080fd5b81019060208101813564010000000081111561062c57600080fd5b82018360208201111561063e57600080fd5b8035906020019184600183028401116401000000008311171561066057600080fd5b919350915035600160a060020a03166122c4565b6101ac6004803603604081101561068a57600080fd5b8101906020810181356401000000008111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460018302840111640100000000831117156106d957600080fd5b9193909290916020810190356401000000008111156106f757600080fd5b82018360208201111561070957600080fd5b8035906020019184600183028401116401000000008311171561072b57600080fd5b509092509050612913565b6101ac6004803603608081101561074c57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561077757600080fd5b82018360208201111561078957600080fd5b803590602001918460018302840111640100000000831117156107ab57600080fd5b9193909290916020810190356401000000008111156107c957600080fd5b8201836020820111156107db57600080fd5b803590602001918460018302840111640100000000831117156107fd57600080fd5b9193509150356129fc565b61040a6004803603606081101561081e57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561084957600080fd5b82018360208201111561085b57600080fd5b8035906020019184600183028401116401000000008311171561087d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156108d057600080fd5b8201836020820111156108e257600080fd5b8035906020019184600183028401116401000000008311171561090457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d6b945050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561099557600080fd5b505afa1580156109a9573d6000803e3d6000fd5b505050506040513d60208110156109bf57600080fd5b5051600160a060020a03163314610a0e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015610c7f57506040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015610b8c5780601f10610b6157610100808354040283529160200191610b8c565b820191906000526020600020905b815481529060010190602001808311610b6f57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610c34578181015183820152602001610c1c565b50505050905090810190601f168015610c615780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b1515610cbf5760405160e560020a62461bcd0281526004018080602001828103825260408152602001806139666040913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250600292508791506132d29050565b505050505050565b60008054604080517f0e32cf9000000000000000000000000000000000000000000000000000000000815290518392600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610d9e57600080fd5b505afa158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b5051600160a060020a03163314610e17576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b610e5684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5f92505050565b156112cf576000610ede60066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a9004600160a060020a03166136b6565b90506006600182815481101515610ef157fe5b9060005260206000209060050201600301819055506000600182815481101515610f1757fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776600182815481101515610f6f57fe5b600091825260209091206005909102015460018054600160a060020a039092169184908110610f9a57fe5b9060005260206000209060050201600101600184815481101515610fba57fe5b9060005260206000209060050201600201600185815481101515610fda57fe5b60009182526020909120600460059092020101546001805460ff909216918790811061100257fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156110b55780601f1061108a576101008083540402835291602001916110b5565b820191906000526020600020905b81548152906001019060200180831161109857829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b505097505050505050505060405180910390a160408051602080820190815260048054600260001961010060018416150201909116049383018490529290918291606090910190849080156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b505092505050604051602081830303815290604052805190602001206001828154811015156111ea57fe5b60009182526020918290206040805180850194855260026005909402909201830180546000196101006001831615020116939093049082018190529192918291606001908490801561127d5780601f106112525761010080835404028352916020019161127d565b820191906000526020600020905b81548152906001019060200180831161126057829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156112a957fe5b6000918252602090912060059091020154909350600160a060020a031691506112d69050565b5060009050805b9250929050565b600160a060020a038116600090815260026020526040812054606090819083908190151561135a575050604080518082018252600481527f4e4f4e45000000000000000000000000000000000000000000000000000000006020808301919091528251908101909252600080835286955090935090915080611542565b6000611365876136b6565b905060018181548110151561137657fe5b600091825260209091206005909102015460018054600160a060020a0390921691839081106113a157fe5b90600052602060002090600502016001016001838154811015156113c157fe5b90600052602060002090600502016002016001848154811015156113e157fe5b90600052602060002090600502016003015460018581548110151561140257fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156114a15780601f10611476576101008083540402835291602001916114a1565b820191906000526020600020905b81548152906001019060200180831161148457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6001545b90565b600160a060020a0383166000908152600260205260408120541515611579575060016116a6565b6000611584856136b6565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001206001828154811015156115e857fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b600160a060020a0381166000908152600260205260409020546060901515611709575060408051808201909152600481527f4e4f4e4500000000000000000000000000000000000000000000000000000000602082015261182a565b6000611714836136b6565b905060018181548110151561172557fe5b90600052602060002090600502016003015460001415156117f357600180548290811061174e57fe5b600091825260209182902060026005909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156117e65780601f106117bb576101008083540402835291602001916117e6565b820191906000526020600020905b8154815290600101906020018083116117c957829003601f168201915b505050505091505061182a565b505060408051808201909152600481527f4e4f4e450000000000000000000000000000000000000000000000000000000060208201525b919050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d60208110156118a957600080fd5b5051600160a060020a031633146118f8576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250600160a060020a0387168152600260205260409020548693501515915061199d9050576040805160e560020a62461bcd02815260206004820152601760248201527f6163636f756e7420646f6573206e6f7420657869737473000000000000000000604482015290519081900360640190fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156119de5781810151838201526020016119c6565b50505050905090810190601f168015611a0b5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611a31836136b6565b81548110611a3b57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b50509250505060405160208183030381529060405280519060200120141515611b4b576040805160e560020a62461bcd02815260206004820152601860248201527f6163636f756e7420696e20646966666572656e74206f72670000000000000000604482015290519081900360640190fd5b600083118015611b5b5750600683105b1515611bb1576040805160e560020a62461bcd02815260206004820152601d60248201527f696e76616c696420737461747573206368616e67652072657175657374000000604482015290519081900360640190fd5b611bff8487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612d6b915050565b151560011415611c435760405160e560020a62461bcd0281526004018080602001828103825260318152602001806139da6031913960400191505060405180910390fd5b60008360011415611cc0576001611c59866136b6565b81548110611c6357fe5b9060005260206000209060050201600301546002141515611cb85760405160e560020a62461bcd0281526004018080602001828103825260398152602001806139056039913960400191505060405180910390fd5b506004611ea9565b8360021415611d3b576001611cd4866136b6565b81548110611cde57fe5b9060005260206000209060050201600301546004141515611d335760405160e560020a62461bcd02815260040180806020018281038252603c8152602001806138c9603c913960400191505060405180910390fd5b506002611ea9565b8360031415611db7576001611d4f866136b6565b81548110611d5957fe5b906000526020600020906005020160030154600514151515611daf5760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138716038913960400191505060405180910390fd5b506005611ea9565b8360041415611e32576001611dcb866136b6565b81548110611dd557fe5b9060005260206000209060050201600301546005141515611e2a5760405160e560020a62461bcd0281526004018080602001828103825260348152602001806139a66034913960400191505060405180910390fd5b506007611ea9565b8360051415611ea9576001611e46866136b6565b81548110611e5057fe5b9060005260206000209060050201600301546007141515611ea55760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138396038913960400191505060405180910390fd5b5060025b806001611eb5876136b6565b81548110611ebf57fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b25858888846040518085600160a060020a0316600160a060020a03168152602001806020018381526020018281038252858582818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a150505050505050565b600080600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fb0578181015183820152602001611f98565b50505050905090810190601f168015611fdd5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316146120d257600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561205c578181015183820152602001612044565b50505050905090810190601f1680156120895780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031690506120c7816136d5565b60021491505061182a565b506000919050565b60006060806000806001868154811015156120f157fe5b600091825260209091206005909102015460018054600160a060020a03909216918890811061211c57fe5b906000526020600020906005020160010160018881548110151561213c57fe5b906000526020600020906005020160020160018981548110151561215c57fe5b90600052602060002090600502016003015460018a81548110151561217d57fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff9092169286919083018282801561221c5780601f106121f15761010080835404028352916020019161221c565b820191906000526020600020905b8154815290600101906020018083116121ff57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156122aa5780601f1061227f576101008083540402835291602001916122aa565b820191906000526020600020905b81548152906001019060200180831161228d57829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561231657600080fd5b505afa15801561232a573d6000803e3d6000fd5b505050506040513d602081101561234057600080fd5b5051600160a060020a0316331461238f576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b606061239a836116ad565b905060006123a7846136d5565b905060006123b4856136b6565b604080516020808201908152600580546002600019610100600184161502019091160493830184905293945091829160600190849080156124365780601f1061240b57610100808354040283529160200191612436565b820191906000526020600020905b81548152906001019060200180831161241957829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561249357818101518382015260200161247b565b50505050905090810190601f1680156124c05780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201480156124e85750816001145b15612578578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055505b600260018281548110151561258957fe5b906000526020600020906005020160030181905550600180828154811015156125ae57fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768560018381548110151561260757fe5b906000526020600020906005020160010160018481548110151561262757fe5b906000526020600020906005020160020160018581548110151561264757fe5b60009182526020909120600460059092020101546001805460ff909216918790811061266f57fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156127225780601f106126f757610100808354040283529160200191612722565b820191906000526020600020905b81548152906001019060200180831161270557829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156127965780601f1061276b57610100808354040283529160200191612796565b820191906000526020600020905b81548152906001019060200180831161277957829003601f168201915b505097505050505050505060405180910390a1604080516020808201908152600480546002600019610100600184161502019091160493830184905292909182916060909101908490801561282c5780601f106128015761010080835404028352916020019161282c565b820191906000526020600020905b81548152906001019060200180831161280f57829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561285757fe5b6000918252602091829020604080518085019485526002600590940290920183018054600019610100600183161502011693909304908201819052919291829160600190849080156128ea5780601f106128bf576101008083540402835291602001916128ea565b820191906000526020600020905b8154815290600101906020018083116128cd57829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561296357600080fd5b505afa158015612977573d6000803e3d6000fd5b505050506040513d602081101561298d57600080fd5b5051600160a060020a031633146129dc576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6129e860048585613732565b506129f560058383613732565b5050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612a4c57600080fd5b505afa158015612a60573d6000803e3d6000fd5b505050506040513d6020811015612a7657600080fd5b5051600160a060020a03163314612ac5576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015612b485780601f10612b1d57610100808354040283529160200191612b48565b820191906000526020600020905b815481529060010190602001808311612b2b57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001201480612cb257506040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612c415780601f10612c1657610100808354040283529160200191612c41565b820191906000526020600020905b815481529060010190602001808311612c2457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515612cf25760405160e560020a62461bcd02815260040180806020018281038252602881526020018061393e6028913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250600191506132d29050565b60408051602080820190815260048054600260001961010060018416150201909116049383018490526000939092829160609091019084908015612df05780601f10612dc557610100808354040283529160200191612df0565b820191906000526020600020905b815481529060010190602001808311612dd357829003601f168201915b50509250505060405160208183030381529060405280519060200120612e15856116ad565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612e55578181015183820152602001612e3d565b50505050905090810190601f168015612e825780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201415613163576000612eae856136b6565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612ef1578181015183820152602001612ed9565b50505050905090810190601f168015612f1e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515612f4857fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612fe55780601f10612fba57610100808354040283529160200191612fe5565b820191906000526020600020905b815481529060010190602001808311612fc857829003601f168201915b50509250505060405160208183030381529060405280519060200120148061315b5750826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613049578181015183820152602001613031565b50505050905090810190601f1680156130765780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001828154811015156130a057fe5b9060005260206000209060050201600101604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561313d5780601f106131125761010080835404028352916020019161313d565b820191906000526020600020905b81548152906001019060200180831161312057829003601f168201915b50509250505060405160208183030381529060405280519060200120145b9150506116a6565b83600160a060020a031660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131b257818101518382015260200161319a565b50505050905090810190601f1680156131df5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031614806132ca575083600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613268578181015183820152602001613250565b50505050905090810190601f1680156132955780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316145b949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561332257600080fd5b505afa158015613336573d6000803e3d6000fd5b505050506040513d602081101561334c57600080fd5b5051600160a060020a0316331461339b576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b60006133a6866136b6565b600160a060020a0387166000908152600260205260409020549091501561345857836001828154811015156133d757fe5b906000526020600020906005020160020190805190602001906133fb9291906137b0565b508260018281548110151561340c57fe5b9060005260206000209060050201600301819055508160018281548110151561343157fe5b60009182526020909120600590910201600401805460ff1916911515919091179055613580565b60038054600190810191829055600160a060020a03888116600081815260026020908152604080832096909655855160a0810187529283528281018b81529583018a905260608301899052871515608084015284548086018087559590925282517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66005909302928301805473ffffffffffffffffffffffffffffffffffffffff191691909516178455945180519495929461353d937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf79093019291909101906137b0565b50604082015180516135599160028401916020909101906137b0565b50606082015160038201556080909101516004909101805460ff1916911515919091179055505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77686868685876040518086600160a060020a0316600160a060020a03168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561360f5781810151838201526020016135f7565b50505050905090810190601f16801561363c5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561366f578181015183820152602001613657565b50505050905090810190601f16801561369c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b600160a060020a03166000908152600260205260409020546000190190565b600160a060020a03811660009081526002602052604081205415156136fc5750600061182a565b6000613707836136b6565b905060018181548110151561371857fe5b906000526020600020906005020160030154915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137735782800160ff198235161785556137a0565b828001600101855582156137a0579182015b828111156137a0578235825591602001919060010190613785565b506137ac92915061381e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137f157805160ff19168380011785556137a0565b828001600101855582156137a0579182015b828111156137a0578251825591602001919060010190613803565b61154f91905b808211156137ac576000815560010161382456fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65696e76616c69642063616c6c65720000000000000000000000000000000000006163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a72305820905dd08251754880557108999e24e038e5619ec6a203c14dfd976249332a1ec70029 \ No newline at end of file diff --git a/permission/contract/gen/NodeManager.bin b/permission/contract/gen/NodeManager.bin index 6c8f64a05..771dd6e2f 100644 --- a/permission/contract/gen/NodeManager.bin +++ b/permission/contract/gen/NodeManager.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516020806131c18339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613130806100916000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c01000000000000000000000000000000000000000000000000000000009004806397c07a9b1161007857806397c07a9b14610483578063a97a44061461059d578063b81c806a1461066b578063e3b09d8414610689576100a5565b80630cc50146146100aa5780633f0e0e47146101825780633f5e1a45146102e757806386bc3652146103b5575b600080fd5b610180600480360360608110156100c057600080fd5b81019080803590602001906401000000008111156100dd57600080fd5b8201836020820111156100ef57600080fd5b8035906020019184600183028401116401000000008311171561011157600080fd5b90919293919293908035906020019064010000000081111561013257600080fd5b82018360208201111561014457600080fd5b8035906020019184600183028401116401000000008311171561016657600080fd5b909192939192939080359060200190929190505050610757565b005b6101f96004803603602081101561019857600080fd5b81019080803590602001906401000000008111156101b557600080fd5b8201836020820111156101c757600080fd5b803590602001918460018302840111640100000000831117156101e957600080fd5b9091929391929390505050611404565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610243578082015181840152602081019050610228565b50505050905090810190601f1680156102705780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156102a957808201518184015260208101905061028e565b50505050905090810190601f1680156102d65780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6103b3600480360360408110156102fd57600080fd5b810190808035906020019064010000000081111561031a57600080fd5b82018360208201111561032c57600080fd5b8035906020019184600183028401116401000000008311171561034e57600080fd5b90919293919293908035906020019064010000000081111561036f57600080fd5b82018360208201111561038157600080fd5b803590602001918460018302840111640100000000831117156103a357600080fd5b9091929391929390505050611600565b005b610481600480360360408110156103cb57600080fd5b81019080803590602001906401000000008111156103e857600080fd5b8201836020820111156103fa57600080fd5b8035906020019184600183028401116401000000008311171561041c57600080fd5b90919293919293908035906020019064010000000081111561043d57600080fd5b82018360208201111561044f57600080fd5b8035906020019184600183028401116401000000008311171561047157600080fd5b9091929391929390505050611af0565b005b6104af6004803603602081101561049957600080fd5b8101908080359060200190929190505050612159565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156104f95780820151818401526020810190506104de565b50505050905090810190601f1680156105265780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b8381101561055f578082015181840152602081019050610544565b50505050905090810190601f16801561058c5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610669600480360360408110156105b357600080fd5b81019080803590602001906401000000008111156105d057600080fd5b8201836020820111156105e257600080fd5b8035906020019184600183028401116401000000008311171561060457600080fd5b90919293919293908035906020019064010000000081111561062557600080fd5b82018360208201111561063757600080fd5b8035906020019184600183028401116401000000008311171561065957600080fd5b9091929391929390505050612304565b005b6106736127f4565b6040518082815260200191505060405180910390f35b6107556004803603604081101561069f57600080fd5b81019080803590602001906401000000008111156106bc57600080fd5b8201836020820111156106ce57600080fd5b803590602001918460018302840111640100000000831117156106f057600080fd5b90919293919293908035906020019064010000000081111561071157600080fd5b82018360208201111561072357600080fd5b8035906020019184600183028401116401000000008311171561074557600080fd5b90919293919293905050506127fe565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156107da57600080fd5b505afa1580156107ee573d6000803e3d6000fd5b505050506040513d602081101561080457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561094657808201518184015260208101905061092b565b50505050905090810190601f1680156109735780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012081526020019081526020016000205414151515610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f70617373656420656e6f646520696420646f6573206e6f74206578697374000081525060200191505060405180910390fd5b610aa586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612cee565b1515610afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613088602a913960400191505060405180910390fd5b6001821480610b0b5750600282145b80610b165750600382145b80610b215750600482145b80610b2c5750600582145b1515610b83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806130b26026913960400191505060405180910390fd5b6001821415610d5e576002610bdb87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b141515610c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b60036001610ca188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b815481101515610cad57fe5b9060005260206000209060030201600201819055507fc6c3720fe673e87bb26e06be713d514278aa94c3939cfe7c64b9bea4d486824a868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a16113fc565b6002821415610f39576003610db687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b141515610e2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b60026001610e7c88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b815481101515610e8857fe5b9060005260206000209060030201600201819055507f49796be3ca168a59c8ae46c75a36a9bb3a84753d3e12a812f93ae010e783b14f868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a16113fb565b60038214156110505760046001610f9388888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b815481101515610f9f57fe5b9060005260206000209060030201600201819055507f4714623279994517c446c8fb72c3fdaca26434da1e2490d3976fe0cd880cfa7a868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a16113fa565b600482141561122b5760046110a887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b14151561111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b6005600161116e88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b81548110151561117a57fe5b9060005260206000209060030201600201819055507ffd385c618a1e89d01fb9a21780846793e282e8bc0b60caf6ccb3e422d543fbfb868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a16113f9565b600561127a87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b1415156112ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b6002600161134088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b81548110151561134c57fe5b9060005260206000209060030201600201819055507f787d7bc525e7c4658c64e3e456d974a1be21cc196e8162a4bf1337a12cb38dac868686866040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15b5b5b5b505050505050565b60608060008061145786868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b905060018181548110151561146857fe5b906000526020600020906003020160010160018281548110151561148857fe5b90600052602060002090600302016000016001838154811015156114a857fe5b906000526020600020906003020160020154828054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b50505050509250818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115eb5780601f106115c0576101008083540402835291602001916115eb565b820191906000526020600020905b8154815290600101906020018083116115ce57829003601f168201915b50505050509150935093509350509250925092565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561168357600080fd5b505afa158015611697573d6000803e3d6000fd5b505050506040513d60208110156116ad57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156117ef5780820151818401526020810190506117d4565b50505050905090810190601f16801561181c5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020541415156118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f70617373656420656e6f6465206964206578697374730000000000000000000081525060200191505060405180910390fd5b60036000815480929190600101919050555060035460026000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020016002815250908060018154018082558091505090600182039060005260206000209060030201600090919290919091506000820151816000019080519060200190611a27929190612fe2565b506020820151816001019080519060200190611a44929190612fe2565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611b7357600080fd5b505afa158015611b87573d6000803e3d6000fd5b505050506040513d6020811015611b9d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611cdf578082015181840152602081019050611cc4565b50505050905090810190601f168015611d0c5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012081526020019081526020016000205414151515611dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f70617373656420656e6f646520696420646f6573206e6f74206578697374000081525060200191505060405180910390fd5b611e3e85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612cee565b1515611e95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806130d8602d913960400191505060405180910390fd5b6001611ee486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e55565b141515611f59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6e6f7468696e672070656e64696e6720666f7220617070726f76616c0000000081525060200191505060405180910390fd5b6000611fa886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612f37565b90506002600182815481101515611fbb57fe5b9060005260206000209060030201600201819055507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d60018281548110151561200057fe5b906000526020600020906003020160000160018381548110151561202057fe5b90600052602060002090600302016001016040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b50508381038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121415780601f1061211657610100808354040283529160200191612141565b820191906000526020600020905b81548152906001019060200180831161212457829003601f168201915b505094505050505060405180910390a1505050505050565b606080600060018481548110151561216d57fe5b906000526020600020906003020160010160018581548110151561218d57fe5b90600052602060002090600302016000016001868154811015156121ad57fe5b906000526020600020906003020160020154828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122545780601f1061222957610100808354040283529160200191612254565b820191906000526020600020905b81548152906001019060200180831161223757829003601f168201915b50505050509250818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122f05780601f106122c5576101008083540402835291602001916122f0565b820191906000526020600020905b8154815290600101906020018083116122d357829003601f168201915b505050505091509250925092509193909250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561238757600080fd5b505afa15801561239b573d6000803e3d6000fd5b505050506040513d60208110156123b157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156124f35780820151818401526020810190506124d8565b50505050905090810190601f1680156125205780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020541415156125bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f70617373656420656e6f6465206964206578697374730000000000000000000081525060200191505060405180910390fd5b60036000815480929190600101919050555060035460026000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001600181525090806001815401808255809150509060018203906000526020600020906003020160009091929091909150600082015181600001908051906020019061272b929190612fe2565b506020820151816001019080519060200190612748929190612fe2565b50604082015181600201555050507fb1a7eec7dd1a516c3132d6d1f770758b19aa34c3a07c138caf662688b7e3556f858585856040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15050505050565b6000600354905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561288157600080fd5b505afa158015612895573d6000803e3d6000fd5b505050506040513d60208110156128ab57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156129ed5780820151818401526020810190506129d2565b50505050905090810190601f168015612a1a5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054141515612ab9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f70617373656420656e6f6465206964206578697374730000000000000000000081525060200191505060405180910390fd5b60036000815480929190600101919050555060035460026000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020016002815250908060018154018082558091505090600182039060005260206000209060030201600090919290919091506000820151816000019080519060200190612c25929190612fe2565b506020820151816001019080519060200190612c42929190612fe2565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15050505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612d34578082015181840152602081019050612d19565b50505050905090810190601f168015612d615780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612d8785612f37565b815481101515612d9357fe5b90600052602060002090600302016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612e305780601f10612e0557610100808354040283529160200191612e30565b820191906000526020600020905b815481529060010190602001808311612e1357829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b60008060026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612ea0578082015181840152602081019050612e85565b50505050905090810190601f168015612ecd5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020541415612f065760009050612f32565b6001612f1183612f37565b815481101515612f1d57fe5b90600052602060002090600302016002015490505b919050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612f83578082015181840152602081019050612f68565b50505050905090810190601f168015612fb05780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061302357805160ff1916838001178555613051565b82800160010185558215613051579182015b82811115613050578251825591602001919060010190613035565b5b50905061305e9190613062565b5090565b61308491905b80821115613080576000816000905550600101613068565b5090565b9056fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a7230582011179f2b111ff0fc199ae5bdfe206abf5283b1c344d947e24ad65df0e432745e0029 \ No newline at end of file +608060405234801561001057600080fd5b506040516020806125388339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556124d6806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a9004806397c07a9b1161005f57806397c07a9b1461042e578063a97a44061461044b578063b81c806a1461050d578063e3b09d84146102aa5761008c565b80630cc50146146100915780633f0e0e47146101555780633f5e1a45146102aa57806386bc36521461036c575b600080fd5b610153600480360360608110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b919350915035610527565b005b6101c56004803603602081101561016b57600080fd5b81019060208101813564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111640100000000831117156101ba57600080fd5b509092509050610f34565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561020c5781810151838201526020016101f4565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610153600480360360408110156102c057600080fd5b8101906020810181356401000000008111156102db57600080fd5b8201836020820111156102ed57600080fd5b8035906020019184600183028401116401000000008311171561030f57600080fd5b91939092909160208101903564010000000081111561032d57600080fd5b82018360208201111561033f57600080fd5b8035906020019184600183028401116401000000008311171561036157600080fd5b50909250905061120b565b6101536004803603604081101561038257600080fd5b81019060208101813564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460018302840111640100000000831117156103d157600080fd5b9193909290916020810190356401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b5090925090506115e2565b6101c56004803603602081101561044457600080fd5b5035611b01565b6101536004803603604081101561046157600080fd5b81019060208101813564010000000081111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111640100000000831117156104b057600080fd5b9193909290916020810190356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b509092509050611c90565b610515612067565b60408051918252519081900360200190f35b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b5051600160a060020a031633146105f0576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561066d578181015183820152602001610655565b50505050905090810190601f16801561069a5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054151561071a576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61078d86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061206e92505050565b15156107cd5760405160e560020a62461bcd02815260040180806020018281038252602a8152602001806123ee602a913960400191505060405180910390fd5b81600114806107dc5750816002145b806107e75750816003145b806107f25750816004145b806107fd5750816005145b151561083d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806124586026913960400191505060405180910390fd5b81600114156109bd5761088586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b6002146108ca576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b6003600161090d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b8154811061091757fe5b9060005260206000209060030201600201819055507fc6c3720fe673e87bb26e06be713d514278aa94c3939cfe7c64b9bea4d486824a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160021415610b3d57610a0586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600314610a4a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60026001610a8d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610a9757fe5b9060005260206000209060030201600201819055507f49796be3ca168a59c8ae46c75a36a9bb3a84753d3e12a812f93ae010e783b14f868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160031415610c395760046001610b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610b9357fe5b9060005260206000209060030201600201819055507f4714623279994517c446c8fb72c3fdaca26434da1e2490d3976fe0cd880cfa7a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160041415610db957610c8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600414610cc6576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60056001610d0988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610d1357fe5b9060005260206000209060030201600201819055507ffd385c618a1e89d01fb9a21780846793e282e8bc0b60caf6ccb3e422d543fbfb868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b610df886868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600514610e3d576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60026001610e8088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610e8a57fe5b9060005260206000209060030201600201819055507f787d7bc525e7c4658c64e3e456d974a1be21cc196e8162a4bf1337a12cb38dac868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15b505050505050565b606080600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610f7e578181015183820152602001610f66565b50505050905090810190601f168015610fab5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561103c5784846000602060405190810160405280600081525092919082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250969950919750919550611204945050505050565b600061107d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b905060018181548110151561108e57fe5b90600052602060002090600302016001016001828154811015156110ae57fe5b90600052602060002090600302016000016001838154811015156110ce57fe5b60009182526020918290206002600390920201810154845460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835290928591908301828280156111675780601f1061113c57610100808354040283529160200191611167565b820191906000526020600020905b81548152906001019060200180831161114a57829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156111f55780601f106111ca576101008083540402835291602001916111f5565b820191906000526020600020905b8154815290600101906020018083116111d857829003601f168201915b50505050509150935093509350505b9250925092565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561125b57600080fd5b505afa15801561126f573d6000803e3d6000fd5b505050506040513d602081101561128557600080fd5b5051600160a060020a031633146112d4576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611351578181015183820152602001611339565b50505050905090810190601f16801561137e5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054156113fd576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f88018190048102820181019092528681529181019190879087908190840183828082843760009201829052509385525050600260209384015250835460018101808655948252908290208351805160039093029091019261152892849290910190612355565b5060208281015180516115419260018501920190612355565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561163257600080fd5b505afa158015611646573d6000803e3d6000fd5b505050506040513d602081101561165c57600080fd5b5051600160a060020a031633146116ab576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611728578181015183820152602001611710565b50505050905090810190601f1680156117555780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415156117d5576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61184885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061206e92505050565b15156118885760405160e560020a62461bcd02815260040180806020018281038252602d81526020018061247e602d913960400191505060405180910390fd5b6118c785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b60011461191e576040805160e560020a62461bcd02815260206004820152601c60248201527f6e6f7468696e672070656e64696e6720666f7220617070726f76616c00000000604482015290519081900360640190fd5b600061195f86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b9050600260018281548110151561197257fe5b9060005260206000209060030201600201819055507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d6001828154811015156119b757fe5b90600052602060002090600302016000016001838154811015156119d757fe5b9060005260206000209060030201600101604051808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611a755780601f10611a4a57610100808354040283529160200191611a75565b820191906000526020600020905b815481529060010190602001808311611a5857829003601f168201915b5050838103825284546002600019610100600184161502019091160480825260209091019085908015611ae95780601f10611abe57610100808354040283529160200191611ae9565b820191906000526020600020905b815481529060010190602001808311611acc57829003601f168201915b505094505050505060405180910390a1505050505050565b6060806000600184815481101515611b1557fe5b9060005260206000209060030201600101600185815481101515611b3557fe5b9060005260206000209060030201600001600186815481101515611b5557fe5b60009182526020918290206002600390920201810154845460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529092859190830182828015611bee5780601f10611bc357610100808354040283529160200191611bee565b820191906000526020600020905b815481529060010190602001808311611bd157829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015611c7c5780601f10611c5157610100808354040283529160200191611c7c565b820191906000526020600020905b815481529060010190602001808311611c5f57829003601f168201915b505050505091509250925092509193909250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ce057600080fd5b505afa158015611cf4573d6000803e3d6000fd5b505050506040513d6020811015611d0a57600080fd5b5051600160a060020a03163314611d59576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611dd6578181015183820152602001611dbe565b50505050905090810190601f168015611e035780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415611e82576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f880181900481028201810190925286815291810191908790879081908401838280828437600092018290525093855250506001602093840181905285549081018087559583529183902084518051600390940290910193611fad93859350910190612355565b506020828101518051611fc69260018501920190612355565b50604082015181600201555050507fb1a7eec7dd1a516c3132d6d1f770758b19aa34c3a07c138caf662688b7e3556f858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6003545b90565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156120b1578181015183820152602001612099565b50505050905090810190601f1680156120de5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612104856122ad565b8154811061210e57fe5b906000526020600020906003020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121ab5780601f10612180576101008083540402835291602001916121ab565b820191906000526020600020905b81548152906001019060200180831161218e57829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122175781810151838201526020016121ff565b50505050905090810190601f1680156122445780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561227e575060006122a8565b6001612289836122ad565b8154811061229357fe5b90600052602060002090600302016002015490505b919050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122f65781810151838201526020016122de565b50505050905090810190601f1680156123235780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061239657805160ff19168380011785556123c3565b828001600101855582156123c3579182015b828111156123c35782518255916020019190600101906123a8565b506123cf9291506123d3565b5090565b61206b91905b808211156123cf57600081556001016123d956fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f72676f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000696e76616c69642063616c6c6572000000000000000000000000000000000000696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a72305820d87c3beef2bad7bcfa000ee92b4322634755d5ec39f17fbf0e25c1a699faca4b0029 \ No newline at end of file diff --git a/permission/contract/gen/OrgManager.abi b/permission/contract/gen/OrgManager.abi index 729c6ff9e..2157f1bce 100644 --- a/permission/contract/gen/OrgManager.abi +++ b/permission/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":"_getOrgIndex","outputs":[{"name":"","type":"uint256"}],"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":"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":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 +[{"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":"_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":"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 diff --git a/permission/contract/gen/OrgManager.bin b/permission/contract/gen/OrgManager.bin index 0aa567e93..85e028877 100644 --- a/permission/contract/gen/OrgManager.bin +++ b/permission/contract/gen/OrgManager.bin @@ -1 +1 @@ -60806040526000600160146101000a81548160ff02191690831515021790555060046002556004600355600060065534801561003a57600080fd5b506040516020806140b48339810180604052602081101561005a57600080fd5b810190808051906020019092919050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613ff8806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100d1576000357c0100000000000000000000000000000000000000000000000000000000900480637755ebdd1161008e5780637755ebdd1461060c5780638c8642df1461062a5780639e58eb9f14610707578063e302831614610794578063f9953de51461080d578063ffe40d1d14610886576100d1565b80630cc27493146100d657806314f775f91461016d578063177c8d8a146101f05780631f953480146102e2578063320d2c39146103b05780635c4f32ee1461047f575b600080fd5b610157600480360360408110156100ec57600080fd5b810190808035906020019064010000000081111561010957600080fd5b82018360208201111561011b57600080fd5b8035906020019184600183028401116401000000008311171561013d57600080fd5b909192939192939080359060200190929190505050610959565b6040518082815260200191505060405180910390f35b6101ee6004803603604081101561018357600080fd5b81019080803590602001906401000000008111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460018302840111640100000000831117156101d457600080fd5b909192939192939080359060200190929190505050610e46565b005b6102676004803603602081101561020657600080fd5b810190808035906020019064010000000081111561022357600080fd5b82018360208201111561023557600080fd5b8035906020019184600183028401116401000000008311171561025757600080fd5b909192939192939050505061111f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a757808201518184015260208101905061028c565b50505050905090810190601f1680156102d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ae600480360360408110156102f857600080fd5b810190808035906020019064010000000081111561031557600080fd5b82018360208201111561032757600080fd5b8035906020019184600183028401116401000000008311171561034957600080fd5b90919293919293908035906020019064010000000081111561036a57600080fd5b82018360208201111561037c57600080fd5b8035906020019184600183028401116401000000008311171561039e57600080fd5b909192939192939050505061138f565b005b610469600480360360208110156103c657600080fd5b81019080803590602001906401000000008111156103e357600080fd5b8201836020820111156103f557600080fd5b8035906020019184600183028401116401000000008311171561041757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611672565b6040518082815260200191505060405180910390f35b6104ab6004803603602081101561049557600080fd5b8101908080359060200190929190505050611705565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b838110156104ff5780820151818401526020810190506104e4565b50505050905090810190601f16801561052c5780820380516001836020036101000a031916815260200191505b50848103835288818151815260200191508051906020019080838360005b8381101561056557808201518184015260208101905061054a565b50505050905090810190601f1680156105925780820380516001836020036101000a031916815260200191505b50848103825287818151815260200191508051906020019080838360005b838110156105cb5780820151818401526020810190506105b0565b50505050905090810190601f1680156105f85780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b610614611996565b6040518082815260200191505060405180910390f35b6106ed6004803603604081101561064057600080fd5b810190808035906020019064010000000081111561065d57600080fd5b82018360208201111561066f57600080fd5b8035906020019184600183028401116401000000008311171561069157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506119a3565b604051808215151515815260200191505060405180910390f35b6107926004803603606081101561071d57600080fd5b810190808035906020019064010000000081111561073a57600080fd5b82018360208201111561074c57600080fd5b8035906020019184600183028401116401000000008311171561076e57600080fd5b90919293919293908035906020019092919080359060200190929190505050611a70565b005b61080b600480360360208110156107aa57600080fd5b81019080803590602001906401000000008111156107c757600080fd5b8201836020820111156107d957600080fd5b803590602001918460018302840111640100000000831117156107fb57600080fd5b9091929391929390505050611c47565b005b6108846004803603602081101561082357600080fd5b810190808035906020019064010000000081111561084057600080fd5b82018360208201111561085257600080fd5b8035906020019184600183028401116401000000008311171561087457600080fd5b9091929391929390505050612149565b005b61093f6004803603602081101561089c57600080fd5b81019080803590602001906401000000008111156108b957600080fd5b8201836020820111156108cb57600080fd5b803590602001918460018302840111640100000000831117156108ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506123d9565b604051808215151515815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d6020811015610a0957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610abc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515610b0e826123d9565b1515141515610b85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f726720646f6573206e6f74206578697374000000000000000000000000000081525060200191505060405180910390fd5b6001831480610b945750600283145b1515610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613f266025913960400191505060405180910390fd5b6000610c3a86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611672565b90506001600482815481101515610c4d57fe5b906000526020600020906008020160060154141515610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613f4b6027913960400191505060405180910390fd5b6000806001861415610cd0576002915060029050610ce3565b6002861415610ce25760049150600390505b5b60011515610d3589898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050846119a3565b1515141515610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613f726027913960400191505060405180910390fd5b6001861415610dea57610de588888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061246c565b610e38565b610e3788888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612767565b5b809450505050509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d6020811015610ef457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515610ff9826123d9565b1515141515611070576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f726720646f6573206e6f74206578697374000000000000000000000000000081525060200191505060405180910390fd5b60018214156110cb576110c684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612a7f565b611119565b61111884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612d8d565b5b50505050565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156111a557600080fd5b505afa1580156111b9573d6000803e3d6000fd5b505050506040513d60208110156111cf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b60046112d184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611672565b8154811015156112dd57fe5b90600052602060002090600802016004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113825780601f1061135757610100808354040283529160200191611382565b820191906000526020600020905b81548152906001019060200180831161136557829003601f168201915b5050505050905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561141357600080fd5b505afa158015611427573d6000803e3d6000fd5b505050506040513d602081101561143d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b838383836040516020018085858082843780830192505050807f2e00000000000000000000000000000000000000000000000000000000000000815250600101838380828437808301925050509450505050506040516020818303038152906040526000151561155f826123d9565b15151415156115d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f7267206578697374730000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61166b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060028061309c565b5050505050565b6000600160056000846040516020018082805190602001908083835b6020831015156116b3578051825260208201915060208101905060208303925061168e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b606080606060008060048681548110151561171c57fe5b906000526020600020906008020160000160048781548110151561173c57fe5b906000526020600020906008020160020160048881548110151561175c57fe5b906000526020600020906008020160040160048981548110151561177c57fe5b90600052602060002090600802016006015460048a81548110151561179d57fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118445780601f1061181957610100808354040283529160200191611844565b820191906000526020600020905b81548152906001019060200180831161182757829003601f168201915b50505050509450838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118e05780601f106118b5576101008083540402835291602001916118e0565b820191906000526020600020905b8154815290600101906020018083116118c357829003601f168201915b50505050509350828054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561197c5780601f106119515761010080835404028352916020019161197c565b820191906000526020600020905b81548152906001019060200180831161195f57829003601f168201915b505050505092509450945094509450945091939590929450565b6000600480549050905090565b6000806119af84611672565b9050600060056000866040516020018082805190602001908083835b6020831015156119f057805182526020820191506020810190506020830392506119cb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205414158015611a67575082600482815481101515611a5357fe5b906000526020600020906008020160010154145b91505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611af457600080fd5b505afa158015611b08573d6000803e3d6000fd5b505050506040513d6020811015611b1e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b611c33602060405190810160405280600081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001600261309c565b806002819055508160038190555050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611ccb57600080fd5b505afa158015611cdf573d6000803e3d6000fd5b505050506040513d6020811015611cf557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b60011515611dfb83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060016119a3565b1515141515611e72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b6000611ec183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611672565b90506002600482815481101515611ed457fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515611f1957fe5b9060005260206000209060080201600001600483815481101515611f3957fe5b9060005260206000209060080201600201600484815481101515611f5957fe5b9060005260206000209060080201600401600485815481101515611f7957fe5b90600052602060002090600802016006015460026040518080602001806020018060200186815260200185815260200184810384528981815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561202a5780601f10611fff5761010080835404028352916020019161202a565b820191906000526020600020905b81548152906001019060200180831161200d57829003601f168201915b50508481038352888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156120ad5780601f10612082576101008083540402835291602001916120ad565b820191906000526020600020905b81548152906001019060200180831161209057829003601f168201915b50508481038252878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121305780601f1061210557610100808354040283529160200191612130565b820191906000526020600020905b81548152906001019060200180831161211357829003601f168201915b50509850505050505050505060405180910390a1505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156121cd57600080fd5b505afa1580156121e1573d6000803e3d6000fd5b505050506040513d60208110156121f757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b81818080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600015156122fc826123d9565b1515141515612373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f7267206578697374730000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6123d4602060405190810160405280600081525084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060018061309c565b505050565b60008060056000846040516020018082805190602001908083835b60208310151561241957805182526020820191506020810190506020830392506123f4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205414159050919050565b6001151561247b8260026119a3565b15151415156124d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613f996034913960400191505060405180910390fd5b60006124e082611672565b905060036004828154811015156124f357fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561253857fe5b906000526020600020906008020160000160048381548110151561255857fe5b906000526020600020906008020160020160048481548110151561257857fe5b906000526020600020906008020160040160048581548110151561259857fe5b9060005260206000209060080201600601546003604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156126495780601f1061261e57610100808354040283529160200191612649565b820191906000526020600020905b81548152906001019060200180831161262c57829003601f168201915b50508481038352888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156126cc5780601f106126a1576101008083540402835291602001916126cc565b820191906000526020600020905b8154815290600101906020018083116126af57829003601f168201915b505084810382528781815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561274f5780601f106127245761010080835404028352916020019161274f565b820191906000526020600020905b81548152906001019060200180831161273257829003601f168201915b50509850505050505050505060405180910390a15050565b600115156127768260046119a3565b15151415156127ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e2073757370656e64656420737461746500000000000081525060200191505060405180910390fd5b60006127f882611672565b9050600560048281548110151561280b57fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561285057fe5b906000526020600020906008020160000160048381548110151561287057fe5b906000526020600020906008020160020160048481548110151561289057fe5b90600052602060002090600802016004016004858154811015156128b057fe5b9060005260206000209060080201600601546005604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156129615780601f1061293657610100808354040283529160200191612961565b820191906000526020600020905b81548152906001019060200180831161294457829003601f168201915b50508481038352888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156129e45780601f106129b9576101008083540402835291602001916129e4565b820191906000526020600020905b8154815290600101906020018083116129c757829003601f168201915b5050848103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612a675780601f10612a3c57610100808354040283529160200191612a67565b820191906000526020600020905b815481529060010190602001808311612a4a57829003601f168201915b50509850505050505050505060405180910390a15050565b60011515612a8e8260036119a3565b1515141515612b05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b6000612b1082611672565b905060048082815481101515612b2257fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d96600482815481101515612b6757fe5b9060005260206000209060080201600001600483815481101515612b8757fe5b9060005260206000209060080201600201600484815481101515612ba757fe5b9060005260206000209060080201600401600485815481101515612bc757fe5b90600052602060002090600802016006015460405180806020018060200180602001858152602001848103845288818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612c705780601f10612c4557610100808354040283529160200191612c70565b820191906000526020600020905b815481529060010190602001808311612c5357829003601f168201915b5050848103835287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612cf35780601f10612cc857610100808354040283529160200191612cf3565b820191906000526020600020905b815481529060010190602001808311612cd657829003601f168201915b5050848103825286818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612d765780601f10612d4b57610100808354040283529160200191612d76565b820191906000526020600020905b815481529060010190602001808311612d5957829003601f168201915b505097505050505050505060405180910390a15050565b60011515612d9c8260056119a3565b1515141515612e13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b6000612e1e82611672565b90506002600482815481101515612e3157fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f600482815481101515612e7657fe5b9060005260206000209060080201600001600483815481101515612e9657fe5b9060005260206000209060080201600201600484815481101515612eb657fe5b9060005260206000209060080201600401600485815481101515612ed657fe5b90600052602060002090600802016006015460405180806020018060200180602001858152602001848103845288818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612f7f5780601f10612f5457610100808354040283529160200191612f7f565b820191906000526020600020905b815481529060010190602001808311612f6257829003601f168201915b50508481038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156130025780601f10612fd757610100808354040283529160200191613002565b820191906000526020600020905b815481529060010190602001808311612fe557829003601f168201915b50508481038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156130855780601f1061305a57610100808354040283529160200191613085565b820191906000526020600020905b81548152906001019060200180831161306857829003601f168201915b505097505050505050505060405180910390a15050565b600080905060008090506000809050600185141561312f57856040516020018082805190602001908083835b6020831015156130ed57805182526020820191506020810190506020830392506130c8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209150613299565b866040516020018082805190602001908083835b6020831015156131685780518252602082019150602081019050602083039250613143565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b6020831015156131df57805182526020820191506020810190506020830392506131ba565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310151561325a5780518252602082019150602081019050602083039250613235565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b60066000815480929190600101919050555060065460056000848152602001908152602001600020819055506000600480548091906001016132db9190613cab565b905060018614156133a057856004828154811015156132f657fe5b906000526020600020906008020160060181905550600060048281548110151561331c57fe5b9060005260206000209060080201600501819055508660048281548110151561334157fe5b90600052602060002090600802016003019080519060200190613365929190613cdd565b508660048281548110151561337657fe5b9060005260206000209060080201600401908051906020019061339a929190613cdd565b5061374d565b600160056000868152602001908152602001600020540391506003546004838154811015156133cb57fe5b906000526020600020906008020160070180549050101515613455576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f62726561647468206c6576656c2065786365656465640000000000000000000081525060200191505060405180910390fd5b60025460048381548110151561346757fe5b9060005260206000209060080201600601541015156134ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6465707468206c6576656c20657863656564656400000000000000000000000081525060200191505060405180910390fd5b60016004838154811015156134ff57fe5b9060005260206000209060080201600601540160048281548110151561352157fe5b9060005260206000209060080201600601819055508160048281548110151561354657fe5b90600052602060002090600802016005018190555060048281548110151561356a57fe5b906000526020600020906008020160040160048281548110151561358a57fe5b906000526020600020906008020160040190805460018160011615610100020316600290046135ba929190613d5d565b5060006004838154811015156135cc57fe5b906000526020600020906008020160070180548091906001016135ef9190613de4565b90508160048481548110151561360157fe5b90600052602060002090600802016007018281548110151561361f57fe5b906000526020600020018190555088886040516020018083805190602001908083835b6020831015156136675780518252602082019150602081019050602083039250613642565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831015156136e257805182526020820191506020810190506020830392506136bd565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405260048381548110151561372657fe5b9060005260206000209060080201600301908051906020019061374a929190613cdd565b50505b8660048281548110151561375d57fe5b90600052602060002090600802016000019080519060200190613781929190613cdd565b508760048281548110151561379257fe5b906000526020600020906008020160020190805190602001906137b6929190613cdd565b50846004828154811015156137c757fe5b9060005260206000209060080201600101819055506001851415613a45577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561381557fe5b906000526020600020906008020160000160048381548110151561383557fe5b906000526020600020906008020160020160048481548110151561385557fe5b906000526020600020906008020160040160048581548110151561387557fe5b9060005260206000209060080201600601546001604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156139265780601f106138fb57610100808354040283529160200191613926565b820191906000526020600020905b81548152906001019060200180831161390957829003601f168201915b50508481038352888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156139a95780601f1061397e576101008083540402835291602001916139a9565b820191906000526020600020905b81548152906001019060200180831161398c57829003601f168201915b5050848103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613a2c5780601f10613a0157610100808354040283529160200191613a2c565b820191906000526020600020905b815481529060010190602001808311613a0f57829003601f168201915b50509850505050505050505060405180910390a1613ca1565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515613a7557fe5b9060005260206000209060080201600001600483815481101515613a9557fe5b9060005260206000209060080201600201600484815481101515613ab557fe5b9060005260206000209060080201600401600485815481101515613ad557fe5b906000526020600020906008020160060154600260405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613b865780601f10613b5b57610100808354040283529160200191613b86565b820191906000526020600020905b815481529060010190602001808311613b6957829003601f168201915b5050848103835288818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613c095780601f10613bde57610100808354040283529160200191613c09565b820191906000526020600020905b815481529060010190602001808311613bec57829003601f168201915b5050848103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613c8c5780601f10613c6157610100808354040283529160200191613c8c565b820191906000526020600020905b815481529060010190602001808311613c6f57829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b815481835581811115613cd857600802816008028360005260206000209182019101613cd79190613e10565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d1e57805160ff1916838001178555613d4c565b82800160010185558215613d4c579182015b82811115613d4b578251825591602001919060010190613d30565b5b509050613d599190613e97565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d965780548555613dd3565b82800160010185558215613dd357600052602060002091601f016020900482015b82811115613dd2578254825591600101919060010190613db7565b5b509050613de09190613e97565b5090565b815481835581811115613e0b57818360005260206000209182019101613e0a9190613e97565b5b505050565b613e9491905b80821115613e905760008082016000613e2f9190613ebc565b6001820160009055600282016000613e479190613ebc565b600382016000613e579190613ebc565b600482016000613e679190613ebc565b60058201600090556006820160009055600782016000613e879190613f04565b50600801613e16565b5090565b90565b613eb991905b80821115613eb5576000816000905550600101613e9d565b5090565b90565b50805460018160011615610100020316600290046000825580601f10613ee25750613f01565b601f016020900490600052602060002090810190613f009190613e97565b5b50565b5080546000825590600052602060002090810190613f229190613e97565b5056fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f7765646f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a72305820ad4f7ede501fde744bd99a211aae38fa1573644d4dc550d1c4e668f404270efd0029 \ No newline at end of file +60806040526001805460a060020a60ff021916905560046002819055600355600060065534801561002f57600080fd5b506040516020806137978339810180604052602081101561004f57600080fd5b505160018054600160a060020a031916600160a060020a039092169190911790556137188061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100b85760003560e060020a900480638c8642df116100755780638c8642df146104cf5780639e58eb9f1461058b578063e302831614610601578063f4d6d9f514610671578063f9953de5146106e1578063ffe40d1d14610751576100b8565b80630cc27493146100bd57806314f775f91461013f578063177c8d8a146101b15780631f953480146102965780635c4f32ee146103585780637755ebdd146104c7575b600080fd5b61012d600480360360408110156100d357600080fd5b8101906020810181356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b9193509150356107f7565b60408051918252519081900360200190f35b6101af6004803603604081101561015557600080fd5b81019060208101813564010000000081111561017057600080fd5b82018360208201111561018257600080fd5b803590602001918460018302840111640100000000831117156101a457600080fd5b919350915035610ba2565b005b610221600480360360208110156101c757600080fd5b8101906020810181356401000000008111156101e257600080fd5b8201836020820111156101f457600080fd5b8035906020019184600183028401116401000000008311171561021657600080fd5b509092509050610d99565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025b578181015183820152602001610243565b50505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101af600480360360408110156102ac57600080fd5b8101906020810181356401000000008111156102c757600080fd5b8201836020820111156102d957600080fd5b803590602001918460018302840111640100000000831117156102fb57600080fd5b91939092909160208101903564010000000081111561031957600080fd5b82018360208201111561032b57600080fd5b8035906020019184600183028401116401000000008311171561034d57600080fd5b509092509050610f5f565b6103756004803603602081101561036e57600080fd5b5035611163565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b838110156103c65781810151838201526020016103ae565b50505050905090810190601f1680156103f35780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b8381101561042657818101518382015260200161040e565b50505050905090810190601f1680156104535780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b8381101561048657818101518382015260200161046e565b50505050905090810190601f1680156104b35780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61012d6113d8565b610577600480360360408110156104e557600080fd5b81019060208101813564010000000081111561050057600080fd5b82018360208201111561051257600080fd5b8035906020019184600183028401116401000000008311171561053457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506113df915050565b604080519115158252519081900360200190f35b6101af600480360360608110156105a157600080fd5b8101906020810181356401000000008111156105bc57600080fd5b8201836020820111156105ce57600080fd5b803590602001918460018302840111640100000000831117156105f057600080fd5b919350915080359060200135611537565b6101af6004803603602081101561061757600080fd5b81019060208101813564010000000081111561063257600080fd5b82018360208201111561064457600080fd5b8035906020019184600183028401116401000000008311171561066657600080fd5b50909250905061165a565b6103756004803603602081101561068757600080fd5b8101906020810181356401000000008111156106a257600080fd5b8201836020820111156106b457600080fd5b803590602001918460018302840111640100000000831117156106d657600080fd5b509092509050611a6a565b6101af600480360360208110156106f757600080fd5b81019060208101813564010000000081111561071257600080fd5b82018360208201111561072457600080fd5b8035906020019184600183028401116401000000008311171561074657600080fd5b509092509050611dd3565b6105776004803603602081101561076757600080fd5b81019060208101813564010000000081111561078257600080fd5b82018360208201111561079457600080fd5b803590602001918460018302840111640100000000831117156107b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f87945050505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630e32cf90916004808301926020929190829003018186803b15801561085557600080fd5b505afa158015610869573d6000803e3d6000fd5b505050506040513d602081101561087f57600080fd5b5051600160a060020a031633146108ce576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109109250839150611f879050565b1515600114610969576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b82600114806109785750826002145b15156109b85760405160e560020a62461bcd0281526004018080602001828103825260258152602001806136266025913960400191505060405180910390fd5b60006109f986868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061201592505050565b9050600481815481101515610a0a57fe5b9060005260206000209060080201600601546001141515610a5f5760405160e560020a62461bcd02815260040180806020018281038252602781526020018061364b6027913960400191505060405180910390fd5b6000808560011415610a7657506002905080610a87565b8560021415610a8757506004905060035b610ac888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506113df915050565b1515600114610b0b5760405160e560020a62461bcd0281526004018080602001828103825260278152602001806136926027913960400191505060405180910390fd5b8560011415610b5857610b5388888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120a292505050565b610b97565b610b9788888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061236492505050565b979650505050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610bf357600080fd5b505afa158015610c07573d6000803e3d6000fd5b505050506040513d6020811015610c1d57600080fd5b5051600160a060020a03163314610c6c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610cae9250839150611f879050565b1515600114610d07576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8160011415610d5457610d4f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061251192505050565b610d93565b610d9384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127d792505050565b50505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051606092600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610df757600080fd5b505afa158015610e0b573d6000803e3d6000fd5b505050506040513d6020811015610e2157600080fd5b5051600160a060020a03163314610e70576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b6004610eb184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061201592505050565b81548110610ebb57fe5b6000918252602091829020600460089092020101805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610f515780601f10610f2657610100808354040283529160200191610f51565b820191906000526020600020905b815481529060010190602001808311610f3457829003601f168201915b505050505090505b92915050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fb057600080fd5b505afa158015610fc4573d6000803e3d6000fd5b505050506040513d6020811015610fda57600080fd5b5051600160a060020a03163314611029576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b83838383604051602001808585808284377f2e000000000000000000000000000000000000000000000000000000000000009201918252506001018383808284378083019250505094505050505060405160208183030381529060405261108f81611f87565b156110e4576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b61115c85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815292508791508690819084018382808284376000920191909152506002925082915061289e9050565b5050505050565b606080606060008060048681548110151561117a57fe5b906000526020600020906008020160000160048781548110151561119a57fe5b90600052602060002090600802016002016004888154811015156111ba57fe5b90600052602060002090600802016004016004898154811015156111da57fe5b90600052602060002090600802016006015460048a8154811015156111fb57fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112a25780601f10611277576101008083540402835291602001916112a2565b820191906000526020600020905b81548152906001019060200180831161128557829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156113305780601f1061130557610100808354040283529160200191611330565b820191906000526020600020905b81548152906001019060200180831161131357829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156113be5780601f10611393576101008083540402835291602001916113be565b820191906000526020600020905b8154815290600101906020018083116113a157829003601f168201915b505050505092509450945094509450945091939590929450565b6004545b90565b600060056000846040516020018082805190602001908083835b602083106114185780518252601f1990920191602091820191016113f9565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001208152602001908152602001600020546000141561147257506000610f59565b600061147d84612015565b905060056000856040516020018082805190602001908083835b602083106114b65780518252601f199092019160209182019101611497565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205460001415801561152f57508260048281548110151561151b57fe5b906000526020600020906008020160010154145b949350505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561158857600080fd5b505afa15801561159c573d6000803e3d6000fd5b505050506040513d60208110156115b257600080fd5b5051600160a060020a03163314611601576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b6040805160208181018352600082528251601f870182900482028101820190935285835261165092908790879081908401838280828437600092019190915250600192506002915061289e9050565b6002556003555050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156116ab57600080fd5b505afa1580156116bf573d6000803e3d6000fd5b505050506040513d60208110156116d557600080fd5b5051600160a060020a03163314611724576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b61176682828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506113df915050565b15156001146117bf576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061180083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061201592505050565b9050600260048281548110151561181357fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110151561185857fe5b906000526020600020906008020160000160048381548110151561187857fe5b906000526020600020906008020160020160048481548110151561189857fe5b90600052602060002090600802016004016004858154811015156118b857fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156119695780601f1061193e57610100808354040283529160200191611969565b820191906000526020600020905b81548152906001019060200180831161194c57829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156119dd5780601f106119b2576101008083540402835291602001916119dd565b820191906000526020600020905b8154815290600101906020018083116119c057829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611a515780601f10611a2657610100808354040283529160200191611a51565b820191906000526020600020905b815481529060010190602001808311611a3457829003601f168201915b50509850505050505050505060405180910390a1505050565b6060806060600080611ab187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8792505050565b1515611b2057868660008083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081810183528382528251908101909252918152949d509b50929950939750919550611dc9945050505050565b6000611b6188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061201592505050565b9050600481815481101515611b7257fe5b9060005260206000209060080201600001600482815481101515611b9257fe5b9060005260206000209060080201600201600483815481101515611bb257fe5b9060005260206000209060080201600401600484815481101515611bd257fe5b906000526020600020906008020160060154600485815481101515611bf357fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c9a5780601f10611c6f57610100808354040283529160200191611c9a565b820191906000526020600020905b815481529060010190602001808311611c7d57829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a5089945092508401905082828015611d285780601f10611cfd57610100808354040283529160200191611d28565b820191906000526020600020905b815481529060010190602001808311611d0b57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015611db65780601f10611d8b57610100808354040283529160200191611db6565b820191906000526020600020905b815481529060010190602001808311611d9957829003601f168201915b5050505050925095509550955095509550505b9295509295909350565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b5051600160a060020a03163314611e9d576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020613672833981519152604482015290519081900360640190fd5b81818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611edf9250839150611f879050565b15611f34576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b6040805160208181018352600082528251601f8601829004820281018201909352848352611f82929086908690819084018382808284376000920191909152506001925082915061289e9050565b505050565b600060056000836040516020018082805190602001908083835b60208310611fc05780518252601f199092019160209182019101611fa1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014159050919050565b6000600160056000846040516020018082805190602001908083835b602083106120505780518252601f199092019160209182019101612031565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b6120ad8160026113df565b15156001146120f05760405160e560020a62461bcd0281526004018080602001828103825260348152602001806136b96034913960400191505060405180910390fd5b60006120fb82612015565b9050600360048281548110151561210e57fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561215357fe5b906000526020600020906008020160000160048381548110151561217357fe5b906000526020600020906008020160020160048481548110151561219357fe5b90600052602060002090600802016004016004858154811015156121b357fe5b9060005260206000209060080201600601546003604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156122645780601f1061223957610100808354040283529160200191612264565b820191906000526020600020905b81548152906001019060200180831161224757829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156122d85780601f106122ad576101008083540402835291602001916122d8565b820191906000526020600020905b8154815290600101906020018083116122bb57829003601f168201915b505084810382528754600260001961010060018416150201909116048082526020909101908890801561234c5780601f106123215761010080835404028352916020019161234c565b820191906000526020600020905b81548152906001019060200180831161232f57829003601f168201915b50509850505050505050505060405180910390a15050565b61236f8160046113df565b15156001146123c8576040805160e560020a62461bcd02815260206004820152601a60248201527f6f7267206e6f7420696e2073757370656e646564207374617465000000000000604482015290519081900360640190fd5b60006123d382612015565b905060056004828154811015156123e657fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561242b57fe5b906000526020600020906008020160000160048381548110151561244b57fe5b906000526020600020906008020160020160048481548110151561246b57fe5b906000526020600020906008020160040160048581548110151561248b57fe5b9060005260206000209060080201600601546005604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156122645780601f1061223957610100808354040283529160200191612264565b61251c8160036113df565b1515600114612575576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061258082612015565b90506004808281548110151561259257fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d966004828154811015156125d757fe5b90600052602060002090600802016000016004838154811015156125f757fe5b906000526020600020906008020160020160048481548110151561261757fe5b906000526020600020906008020160040160048581548110151561263757fe5b600091825260209182902060066008909202010154604080516060810183905260808082528754600260001961010060018416150201909116049082018190529293909283929183019183019060a0840190899080156126d85780601f106126ad576101008083540402835291602001916126d8565b820191906000526020600020905b8154815290600101906020018083116126bb57829003601f168201915b505084810383528754600260001961010060018416150201909116048082526020909101908890801561274c5780601f106127215761010080835404028352916020019161274c565b820191906000526020600020905b81548152906001019060200180831161272f57829003601f168201915b50508481038252865460026000196101006001841615020190911604808252602090910190879080156127c05780601f10612795576101008083540402835291602001916127c0565b820191906000526020600020905b8154815290600101906020018083116127a357829003601f168201915b505097505050505050505060405180910390a15050565b6127e28160056113df565b151560011461283b576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061284682612015565b9050600260048281548110151561285957fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f6004828154811015156125d757fe5b60008080600185141561292057856040516020018082805190602001908083835b602083106128de5780518252601f1990920191602091820191016128bf565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209150612a78565b866040516020018082805190602001908083835b602083106129535780518252601f199092019160209182019101612934565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b602083106129c45780518252601f1990920191602091820191016129a5565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310612a395780518252601f199092019160209182019101612a1a565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b600680546001908101918290556000848152600560205260408120929092556004805491612aa8919083016133ec565b90508560011415612b6d5785600482815481101515612ac357fe5b9060005260206000209060080201600601819055506000600482815481101515612ae957fe5b90600052602060002090600802016005018190555086600482815481101515612b0e57fe5b90600052602060002090600802016003019080519060200190612b32929190613418565b5086600482815481101515612b4357fe5b90600052602060002090600802016004019080519060200190612b67929190613418565b50612eca565b600084815260056020526040902054600354600480546000199093019450909184908110612b9757fe5b600091825260209091206007600890920201015410612c00576040805160e560020a62461bcd02815260206004820152601660248201527f62726561647468206c6576656c20657863656564656400000000000000000000604482015290519081900360640190fd5b6002546004805484908110612c1157fe5b906000526020600020906008020160060154101515612c7a576040805160e560020a62461bcd02815260206004820152601460248201527f6465707468206c6576656c206578636565646564000000000000000000000000604482015290519081900360640190fd5b6004805483908110612c8857fe5b906000526020600020906008020160060154600101600482815481101515612cac57fe5b90600052602060002090600802016006018190555081600482815481101515612cd157fe5b60009182526020909120600560089092020101556004805483908110612cf357fe5b9060005260206000209060080201600401600482815481101515612d1357fe5b90600052602060002090600802016004019080546001816001161561010002031660029004612d43929190613496565b506000600483815481101515612d5557fe5b90600052602060002090600802016007018054809190600101612d78919061350b565b905081600484815481101515612d8a57fe5b906000526020600020906008020160070182815481101515612da857fe5b906000526020600020018190555088886040516020018083805190602001908083835b60208310612dea5780518252601f199092019160209182019101612dcb565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310612e5f5780518252601f199092019160209182019101612e40565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052600483815481101515612ea357fe5b90600052602060002090600802016003019080519060200190612ec7929190613418565b50505b86600482815481101515612eda57fe5b90600052602060002090600802016000019080519060200190612efe929190613418565b5087600482815481101515612f0f57fe5b90600052602060002090600802016002019080519060200190612f33929190613418565b5084600482815481101515612f4457fe5b90600052602060002090600802016001018190555084600114156131a4577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b600482815481101515612f9257fe5b9060005260206000209060080201600001600483815481101515612fb257fe5b9060005260206000209060080201600201600484815481101515612fd257fe5b9060005260206000209060080201600401600485815481101515612ff257fe5b9060005260206000209060080201600601546001604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156130a35780601f10613078576101008083540402835291602001916130a3565b820191906000526020600020905b81548152906001019060200180831161308657829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156131175780601f106130ec57610100808354040283529160200191613117565b820191906000526020600020905b8154815290600101906020018083116130fa57829003601f168201915b505084810382528754600260001961010060018416150201909116048082526020909101908890801561318b5780601f106131605761010080835404028352916020019161318b565b820191906000526020600020905b81548152906001019060200180831161316e57829003601f168201915b50509850505050505050505060405180910390a16133e2565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c6004828154811015156131d457fe5b90600052602060002090600802016000016004838154811015156131f457fe5b906000526020600020906008020160020160048481548110151561321457fe5b906000526020600020906008020160040160048581548110151561323457fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156132e55780601f106132ba576101008083540402835291602001916132e5565b820191906000526020600020905b8154815290600101906020018083116132c857829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156133595780601f1061332e57610100808354040283529160200191613359565b820191906000526020600020905b81548152906001019060200180831161333c57829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156133cd5780601f106133a2576101008083540402835291602001916133cd565b820191906000526020600020905b8154815290600101906020018083116133b057829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b815481835581811115611f8257600802816008028360005260206000209182019101611f82919061352f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061345957805160ff1916838001178555613486565b82800160010185558215613486579182015b8281111561348657825182559160200191906001019061346b565b506134929291506135a6565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106134cf5780548555613486565b8280016001018555821561348657600052602060002091601f016020900482015b828111156134865782548255916001019190600101906134f0565b815481835581811115611f8257600083815260209020611f829181019083016135a6565b6113dc91905b8082111561349257600061354982826135c0565b600182016000905560028201600061356191906135c0565b61356f6003830160006135c0565b61357d6004830160006135c0565b6005820160009055600682016000905560078201600061359d9190613607565b50600801613535565b6113dc91905b8082111561349257600081556001016135ac565b50805460018160011615610100020316600290046000825580601f106135e65750613604565b601f01602090049060005260206000209081019061360491906135a6565b50565b508054600082559060005260206000209081019061360491906135a656fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f776564696e76616c69642063616c6c65720000000000000000000000000000000000006f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a72305820c4906ba7d247889352844701e5281f571cf03c7a4b48f22b54dee783dcdba3ab0029 \ No newline at end of file diff --git a/permission/contract/gen/PermissionsImplementation.bin b/permission/contract/gen/PermissionsImplementation.bin index f9b506954..f62e91d5d 100644 --- a/permission/contract/gen/PermissionsImplementation.bin +++ b/permission/contract/gen/PermissionsImplementation.bin @@ -1 +1 @@ -608060405260036009556000600a60006101000a81548160ff0219169083151502179055503480156200003157600080fd5b5060405160c0806200a14c833981018060405260c08110156200005357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505085600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050619f1b80620002316000396000f3fe608060405234801561001057600080fd5b50600436106101ec576000357c010000000000000000000000000000000000000000000000000000000090048063655a8ef511610121578063b5546564116100bf578063dbfad7111161008e578063dbfad711146115e2578063f346a3a7146116da578063f5ad584a14611872578063f922f802146119a1576101ec565b8063b55465641461128f578063c3dc8e0914611332578063cc9ba6fa14611420578063d1aa0c2014611586576101ec565b80638baa8191116100fb5780638baa819114610e8f5780639bd3810114611021578063a5843f0814611114578063a64d28601461114c576101ec565b8063655a8ef514610bf55780636b568d7614610ce35780638884304114610dd6576101ec565b8063404bf3eb1161018e5780634cbfa82e116101685780634cbfa82e146109b35780634fe57e7a146109d557806359a260a314610a195780635ca5adbe14610b07576101ec565b8063404bf3eb146107ca57806344478e79146108d85780634b20f45f146108fa576101ec565b80631c249912116101ca5780631c249912146104e75780633bc07dea146105a05780633cf5f33b146106ae5780633f25c28814610751576101ec565b806304e81f1e146101f15780631b04c276146102b45780631b610220146103c4575b600080fd5b6102b26004803603608081101561020757600080fd5b810190808035906020019064010000000081111561022457600080fd5b82018360208201111561023657600080fd5b8035906020019184600183028401116401000000008311171561025857600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aaf565b005b6103c2600480360360c08110156102ca57600080fd5b81019080803590602001906401000000008111156102e757600080fd5b8201836020820111156102f957600080fd5b8035906020019184600183028401116401000000008311171561031b57600080fd5b90919293919293908035906020019064010000000081111561033c57600080fd5b82018360208201111561034e57600080fd5b8035906020019184600183028401116401000000008311171561037057600080fd5b909192939192939080359060200190929190803515159060200190929190803515159060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2b565b005b6104e5600480360360608110156103da57600080fd5b81019080803590602001906401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b90919293919293908035906020019064010000000081111561044c57600080fd5b82018360208201111561045e57600080fd5b8035906020019184600183028401116401000000008311171561048057600080fd5b9091929391929390803590602001906401000000008111156104a157600080fd5b8201836020820111156104b357600080fd5b803590602001918460018302840111640100000000831117156104d557600080fd5b909192939192939050505061221c565b005b61059e600480360360608110156104fd57600080fd5b810190808035906020019064010000000081111561051a57600080fd5b82018360208201111561052c57600080fd5b8035906020019184600183028401116401000000008311171561054e57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061242b565b005b6106ac600480360360808110156105b657600080fd5b81019080803590602001906401000000008111156105d357600080fd5b8201836020820111156105e557600080fd5b8035906020019184600183028401116401000000008311171561060757600080fd5b90919293919293908035906020019064010000000081111561062857600080fd5b82018360208201111561063a57600080fd5b8035906020019184600183028401116401000000008311171561065c57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a0565b005b61074f600480360360608110156106c457600080fd5b81019080803590602001906401000000008111156106e157600080fd5b8201836020820111156106f357600080fd5b8035906020019184600183028401116401000000008311171561071557600080fd5b909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613058565b005b6107c86004803603602081101561076757600080fd5b810190808035906020019064010000000081111561078457600080fd5b82018360208201111561079657600080fd5b803590602001918460018302840111640100000000831117156107b857600080fd5b90919293919293905050506134c1565b005b6108d6600480360360808110156107e057600080fd5b81019080803590602001906401000000008111156107fd57600080fd5b82018360208201111561080f57600080fd5b8035906020019184600183028401116401000000008311171561083157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561087257600080fd5b82018360208201111561088457600080fd5b803590602001918460018302840111640100000000831117156108a657600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137f6565b005b6108e0613d6b565b604051808215151515815260200191505060405180910390f35b6109b16004803603606081101561091057600080fd5b810190808035906020019064010000000081111561092d57600080fd5b82018360208201111561093f57600080fd5b8035906020019184600183028401116401000000008311171561096157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f6e565b005b6109bb6142de565b604051808215151515815260200191505060405180910390f35b610a17600480360360208110156109eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506142f5565b005b610b0560048036036060811015610a2f57600080fd5b8101908080359060200190640100000000811115610a4c57600080fd5b820183602082011115610a5e57600080fd5b80359060200191846001830284011164010000000083111715610a8057600080fd5b909192939192939080359060200190640100000000811115610aa157600080fd5b820183602082011115610ab357600080fd5b80359060200191846001830284011164010000000083111715610ad557600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614762565b005b610bf360048036036060811015610b1d57600080fd5b8101908080359060200190640100000000811115610b3a57600080fd5b820183602082011115610b4c57600080fd5b80359060200191846001830284011164010000000083111715610b6e57600080fd5b909192939192939080359060200190640100000000811115610b8f57600080fd5b820183602082011115610ba157600080fd5b80359060200191846001830284011164010000000083111715610bc357600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614b30565b005b610ce160048036036060811015610c0b57600080fd5b8101908080359060200190640100000000811115610c2857600080fd5b820183602082011115610c3a57600080fd5b80359060200191846001830284011164010000000083111715610c5c57600080fd5b909192939192939080359060200190640100000000811115610c7d57600080fd5b820183602082011115610c8f57600080fd5b80359060200191846001830284011164010000000083111715610cb157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615178565b005b610dbc60048036036040811015610cf957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610d3657600080fd5b820183602082011115610d4857600080fd5b80359060200191846001830284011164010000000083111715610d6a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506154ea565b604051808215151515815260200191505060405180910390f35b610e8d60048036036060811015610dec57600080fd5b8101908080359060200190640100000000811115610e0957600080fd5b820183602082011115610e1b57600080fd5b80359060200191846001830284011164010000000083111715610e3d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615656565b005b61101f60048036036080811015610ea557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610ee257600080fd5b820183602082011115610ef457600080fd5b80359060200191846001830284011164010000000083111715610f1657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610f7957600080fd5b820183602082011115610f8b57600080fd5b80359060200191846001830284011164010000000083111715610fad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615c48565b005b6110fa6004803603604081101561103757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561107457600080fd5b82018360208201111561108657600080fd5b803590602001918460018302840111640100000000831117156110a857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061635e565b604051808215151515815260200191505060405180910390f35b61114a6004803603604081101561112a57600080fd5b8101908080359060200190929190803590602001909291905050506168a9565b005b61128d6004803603608081101561116257600080fd5b810190808035906020019064010000000081111561117f57600080fd5b82018360208201111561119157600080fd5b803590602001918460018302840111640100000000831117156111b357600080fd5b9091929391929390803590602001906401000000008111156111d457600080fd5b8201836020820111156111e657600080fd5b8035906020019184600183028401116401000000008311171561120857600080fd5b90919293919293908035906020019064010000000081111561122957600080fd5b82018360208201111561123b57600080fd5b8035906020019184600183028401116401000000008311171561125d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616f4a565b005b611330600480360360608110156112a557600080fd5b81019080803590602001906401000000008111156112c257600080fd5b8201836020820111156112d457600080fd5b803590602001918460018302840111640100000000831117156112f657600080fd5b909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050617527565b005b61141e6004803603606081101561134857600080fd5b810190808035906020019064010000000081111561136557600080fd5b82018360208201111561137757600080fd5b8035906020019184600183028401116401000000008311171561139957600080fd5b9091929391929390803590602001906401000000008111156113ba57600080fd5b8201836020820111156113cc57600080fd5b803590602001918460018302840111640100000000831117156113ee57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506179dc565b005b611428617e74565b6040518080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b8381101561147a57808201518184015260208101905061145f565b50505050905090810190601f1680156114a75780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b838110156114e05780820151818401526020810190506114c5565b50505050905090810190601f16801561150d5780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b8381101561154657808201518184015260208101905061152b565b50505050905090810190601f1680156115735780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6115c86004803603602081101561159c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050618073565b604051808215151515815260200191505060405180910390f35b6116d8600480360360808110156115f857600080fd5b810190808035906020019064010000000081111561161557600080fd5b82018360208201111561162757600080fd5b8035906020019184600183028401116401000000008311171561164957600080fd5b90919293919293908035906020019064010000000081111561166a57600080fd5b82018360208201111561167c57600080fd5b8035906020019184600183028401116401000000008311171561169e57600080fd5b909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506182fd565b005b611751600480360360208110156116f057600080fd5b810190808035906020019064010000000081111561170d57600080fd5b82018360208201111561171f57600080fd5b8035906020019184600183028401116401000000008311171561174157600080fd5b909192939192939050505061867b565b6040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156117cd5780820151818401526020810190506117b2565b50505050905090810190601f1680156117fa5780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b83811015611833578082015181840152602081019050611818565b50505050905090810190601f1680156118605780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61199f6004803603608081101561188857600080fd5b81019080803590602001906401000000008111156118a557600080fd5b8201836020820111156118b757600080fd5b803590602001918460018302840111640100000000831117156118d957600080fd5b9091929391929390803590602001906401000000008111156118fa57600080fd5b82018360208201111561190c57600080fd5b8035906020019184600183028401116401000000008311171561192e57600080fd5b90919293919293908035906020019064010000000081111561194f57600080fd5b82018360208201111561196157600080fd5b8035906020019184600183028401116401000000008311171561198357600080fd5b9091929391929390803515159060200190929190505050618844565b005b611aad600480360360808110156119b757600080fd5b81019080803590602001906401000000008111156119d457600080fd5b8201836020820111156119e657600080fd5b80359060200191846001830284011164010000000083111715611a0857600080fd5b909192939192939080359060200190640100000000811115611a2957600080fd5b820183602082011115611a3b57600080fd5b80359060200191846001830284011164010000000083111715611a5d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506189ef565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611b3357600080fd5b505afa158015611b47573d6000803e3d6000fd5b505050506040513d6020811015611b5d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b8085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515611c47838361635e565b1515141515611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b6001841480611cb05750600284145b80611cbb5750600384145b1515611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180619e5b6025913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a888888886040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611eaf57600080fd5b505afa158015611ec3573d6000803e3d6000fd5b505050506040513d6020811015611ed957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515611fc182619245565b1515141515612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e20617070726f7665642073746174757300000000000081525060200191505060405180910390fd5b8187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001151561208c838361635e565b15151415156120e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b7135798c8c8c8c8c8c8c6040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001868152602001851515151581526020018415151515815260200183810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508381038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156121f757600080fd5b505af115801561220b573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156122a057600080fd5b505afa1580156122b4573d6000803e3d6000fd5b505050506040513d60208110156122ca57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff1615151415156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b8686600691906123fd929190619db5565b5084846007919061240f929190619db5565b50828260089190612421929190619db5565b5050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156124af57600080fd5b505afa1580156124c3573d6000803e3d6000fd5b505050506040513d60208110156124d957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561256f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b806001151561257d82618073565b15151415156125d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a86868660046040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156126d057600080fd5b505af11580156126e4573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600687878760066040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156128215780601f106127f657610100808354040283529160200191612821565b820191906000526020600020905b81548152906001019060200180831161280457829003601f168201915b50508481038352888882818152602001925080828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561288157600080fd5b505af1158015612895573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561292457600080fd5b505afa158015612938573d6000803e3d6000fd5b505050506040513d602081101561294e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156129f282618073565b1515141515612a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b60011515612a9f88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001619386565b1515141515612b16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b612bbc60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612baf5780601f10612b8457610100808354040283529160200191612baf565b820191906000526020600020905b815481529060010190602001808311612b9257829003601f168201915b50505050508360016194c7565b1561304f57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e302831688886040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015612c7e57600080fd5b505af1158015612c92573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b713579600889896009546001806040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018681526020018515151515815260200184151515158152602001838103835289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612db05780601f10612d8557610100808354040283529160200191612db0565b820191906000526020600020905b815481529060010190602001808311612d9357829003601f168201915b50508381038252888882818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612e0157600080fd5b505af1158015612e15573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166386bc365286868a8a6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612f0a57600080fd5b505af1158015612f1e573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c214e5e58888866040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561301257600080fd5b505af1158015613026573d6000803e3d6000fd5b505050506040513d602081101561303c57600080fd5b8101908080519060200190929190505050505b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156130dc57600080fd5b505afa1580156130f0573d6000803e3d6000fd5b505050506040513d602081101561310657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561319c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156131aa82618073565b1515141515613204576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc274938787876040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018381526020018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156132cb57600080fd5b505af11580156132df573d6000803e3d6000fd5b505050506040513d60208110156132f557600080fd5b81019080805190602001909291905050509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600688886000866040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156134415780601f1061341657610100808354040283529160200191613441565b820191906000526020600020905b81548152906001019060200180831161342457829003601f168201915b50508481038352888882818152602001925080828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b1580156134a157600080fd5b505af11580156134b5573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561354557600080fd5b505afa158015613559573d6000803e3d6000fd5b505050506040513d602081101561356f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613605576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff161515141515613691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3b09d84848460066040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352868682818152602001925080828437600081840152601f19601f8201169050808301925050508381038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156137b65780601f1061378b576101008083540402835291602001916137b6565b820191906000526020600020905b81548152906001019060200180831161379957829003601f168201915b505095505050505050600060405180830381600087803b1580156137d957600080fd5b505af11580156137ed573d6000803e3d6000fd5b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561387a57600080fd5b505afa15801561388e573d6000803e3d6000fd5b505050506040513d60208110156138a457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561393a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001151561398c8261963f565b1515141515613a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f726720646f6573206e6f74206578697374000000000000000000000000000081525060200191505060405180910390fd5b8160011515613a1182618073565b1515141515613a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d878a8a898960016040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018481526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015613b9857600080fd5b505af1158015613bac573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d60068a8a8a60046040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015613ce95780601f10613cbe57610100808354040283529160200191613ce9565b820191906000526020600020905b815481529060010190602001808311613ccc57829003601f168201915b50508481038352888882818152602001925080828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015613d4957600080fd5b505af1158015613d5d573d6000803e3d6000fd5b505050505050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015613df157600080fd5b505afa158015613e05573d6000803e3d6000fd5b505050506040513d6020811015613e1b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff161515141515613f3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b6001600a60006101000a81548160ff021916908315150217905550600a60009054906101000a900460ff1691505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015613ff257600080fd5b505afa158015614006573d6000803e3d6000fd5b505050506040513d602081101561401c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156140b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156140c082618073565b151514151561411a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6141c060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156141b35780601f10614188576101008083540402835291602001916141b3565b820191906000526020600020905b81548152906001019060200180831161419657829003601f168201915b50505050508360066194c7565b156142d7576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384b7a84a86868660056040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156142be57600080fd5b505af11580156142d2573d6000803e3d6000fd5b505050505b5050505050565b6000600a60009054906101000a900460ff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561437957600080fd5b505afa15801561438d573d6000803e3d6000fd5b505050506040513d60208110156143a357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff1615151415156144c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b61456b60068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561455e5780601f106145335761010080835404028352916020019161455e565b820191906000526020600020905b81548152906001019060200180831161454157829003601f168201915b5050505050836001619777565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d836006600760026040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200184815260200183810383528681815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561469f5780601f106146745761010080835404028352916020019161469f565b820191906000526020600020905b81548152906001019060200180831161468257829003601f168201915b50508381038252858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156147225780601f106146f757610100808354040283529160200191614722565b820191906000526020600020905b81548152906001019060200180831161470557829003601f168201915b50509650505050505050600060405180830381600087803b15801561474657600080fd5b505af115801561475a573d6000803e3d6000fd5b505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156147e657600080fd5b505afa1580156147fa573d6000803e3d6000fd5b505050506040513d602081101561481057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156148a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600115156148f882619245565b151514151561496f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e20617070726f7665642073746174757300000000000081525060200191505060405180910390fd5b8186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600115156149c3838361635e565b1515141515614a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f5e1a4587878b8b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015614b0e57600080fd5b505af1158015614b22573d6000803e3d6000fd5b505050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015614bb457600080fd5b505afa158015614bc8573d6000803e3d6000fd5b505050506040513d6020811015614bde57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515614cc682619245565b1515141515614d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e20617070726f7665642073746174757300000000000081525060200191505060405180910390fd5b8184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515614d91838361635e565b1515141515614deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b60076040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015614e795780601f10614e4e57610100808354040283529160200191614e79565b820191906000526020600020905b815481529060010190602001808311614e5c57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015614ff1575060086040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015614f7f5780601f10614f5457610100808354040283529160200191614f7f565b820191906000526020600020905b815481529060010190602001808311614f6257829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b1515615065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f61646d696e20726f6c65732063616e6e6f742062652072656d6f76656400000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6343012898989896040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561515657600080fd5b505af115801561516a573d6000803e3d6000fd5b505050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156151fc57600080fd5b505afa158015615210573d6000803e3d6000fd5b505050506040513d602081101561522657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156152bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156152ca82618073565b1515141515615324576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6153ca60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156153bd5780601f10615392576101008083540402835291602001916153bd565b820191906000526020600020905b8154815290600101906020018083116153a057829003601f168201915b50505050508360056194c7565b156154e257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc501468585898960056040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018481526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b1580156154c957600080fd5b505af11580156154dd573d6000803e3d6000fd5b505050505b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b568d7684846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156155c85780820151818401526020810190506155ad565b50505050905090810190601f1680156155f55780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561561357600080fd5b505afa158015615627573d6000803e3d6000fd5b505050506040513d602081101561563d57600080fd5b8101908080519060200190929190505050905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156156da57600080fd5b505afa1580156156ee573d6000803e3d6000fd5b505050506040513d602081101561570457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561579a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b80600115156157a882618073565b1515141515615802576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b6158a860068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561589b5780601f106158705761010080835404028352916020019161589b565b820191906000526020600020905b81548152906001019060200180831161587e57829003601f168201915b50505050508360046194c7565b15615c41576000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d09dc9388886040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561596b57600080fd5b505af115801561597f573d6000803e3d6000fd5b505050506040513d604081101561599557600080fd5b810190808051906020019092919080519060200190929190505050915091508115615a6157615a6060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015615a535780601f10615a2857610100808354040283529160200191615a53565b820191906000526020600020905b815481529060010190602001808311615a3657829003601f168201915b5050505050826000619777565b5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c214e5e58989896040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015615b5357600080fd5b505af1158015615b67573d6000803e3d6000fd5b505050506040513d6020811015615b7d57600080fd5b810190808051906020019092919050505090508015615c3d57615c3c60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015615c2f5780601f10615c0457610100808354040283529160200191615c2f565b820191906000526020600020905b815481529060010190602001808311615c1257829003601f168201915b5050505050876001619777565b5b5050505b5050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015615ccc57600080fd5b505afa158015615ce0573d6000803e3d6000fd5b505050506040513d6020811015615cf657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515615d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b808360011515615d9c838361635e565b1515141515615df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b8460011515615e0482619245565b1515141515615e7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f7267206e6f7420696e20617070726f7665642073746174757300000000000081525060200191505060405180910390fd5b60011515615e8988886154ea565b1515141515615f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b60011515615f0e8688619a0c565b1515141515615f85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f726f6c6520646f6573206e6f742065786973747300000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be322e548789615fd08b619c27565b6040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015616043578082015181840152602081019050616028565b50505050905090810190601f1680156160705780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b838110156160a957808201518184015260208101905061608e565b50505050905090810190601f1680156160d65780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b8381101561610f5780820151818401526020810190506160f4565b50505050905090810190601f16801561613c5780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561615d57600080fd5b505afa158015616171573d6000803e3d6000fd5b505050506040513d602081101561618757600080fd5b810190808051906020019092919050505090506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663143a5604898989856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200184151515158152602001838103835286818151815260200191508051906020019080838360005b8381101561628657808201518184015260208101905061626b565b50505050905090810190601f1680156162b35780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156162ec5780820151818401526020810190506162d1565b50505050905090810190601f1680156163195780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b15801561633c57600080fd5b505af1158015616350573d6000803e3d6000fd5b505050505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8b42bf484846163a886619c27565b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561644957808201518184015260208101905061642e565b50505050905090810190601f1680156164765780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156164af578082015181840152602081019050616494565b50505050905090810190601f1680156164dc5780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b1580156164fc57600080fd5b505afa158015616510573d6000803e3d6000fd5b505050506040513d602081101561652657600080fd5b81019080805190602001909291905050501561654557600190506168a3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be322e546000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381d66b23866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060006040518083038186803b15801561663d57600080fd5b505afa158015616651573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561667b57600080fd5b81019080805164010000000081111561669357600080fd5b828101905060208101848111156166a957600080fd5b81518560018202830111640100000000821117156166c657600080fd5b5050929190505050846166d886619c27565b6040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561674b578082015181840152602081019050616730565b50505050905090810190601f1680156167785780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b838110156167b1578082015181840152602081019050616796565b50505050905090810190601f1680156167de5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b838110156168175780820151818401526020810190506167fc565b50505050905090810190601f1680156168445780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561686557600080fd5b505afa158015616879573d6000803e3d6000fd5b505050506040513d602081101561688f57600080fd5b810190808051906020019092919050505090505b92915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561692d57600080fd5b505afa158015616941573d6000803e3d6000fd5b505050506040513d602081101561695757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156169ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6000801515600a60009054906101000a900460ff161515141515616a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e58eb9f600685856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001848152602001838152602001828103825285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616b7b5780601f10616b5057610100808354040283529160200191616b7b565b820191906000526020600020905b815481529060010190602001808311616b5e57829003601f168201915b5050945050505050600060405180830381600087803b158015616b9d57600080fd5b505af1158015616bb1573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b713579600760066009546001806040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018681526020018515151515815260200184151515158152602001838103835288818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616ccf5780601f10616ca457610100808354040283529160200191616ccf565b820191906000526020600020905b815481529060010190602001808311616cb257829003601f168201915b5050838103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616d525780601f10616d2757610100808354040283529160200191616d52565b820191906000526020600020905b815481529060010190602001808311616d3557829003601f168201915b5050975050505050505050600060405180830381600087803b158015616d7757600080fd5b505af1158015616d8b573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cef7f6af600760086040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616e885780601f10616e5d57610100808354040283529160200191616e88565b820191906000526020600020905b815481529060010190602001808311616e6b57829003601f168201915b5050838103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015616f0b5780601f10616ee057610100808354040283529160200191616f0b565b820191906000526020600020905b815481529060010190602001808311616eee57829003601f168201915b5050945050505050600060405180830381600087803b158015616f2d57600080fd5b505af1158015616f41573d6000803e3d6000fd5b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015616fce57600080fd5b505afa158015616fe2573d6000803e3d6000fd5b505050506040513d6020811015616ff857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561708e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600115156170e08261963f565b1515141515617157576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f726720646f6573206e6f74206578697374000000000000000000000000000081525060200191505060405180910390fd5b8188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600115156171ab838361635e565b1515141515617205576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f9534808b8b8b8b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156172f657600080fd5b505af115801561730a573d6000803e3d6000fd5b5050505060608a8a8a8a604051602001808060200180602001806020018481038452888882818152602001925080828437600081840152601f19601f820116905080830192505050848103835260018152602001807f2e000000000000000000000000000000000000000000000000000000000000008152506020018481038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509750505050505050506040516020818303038152906040529050600087879050111561751a57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f5e1a458888846040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352868682818152602001925080828437600081840152601f19601f820116905080830192505050838103825284818151815260200191508051906020019080838360005b838110156174b2578082015181840152602081019050617497565b50505050905090810190601f1680156174df5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561750157600080fd5b505af1158015617515573d6000803e3d6000fd5b505050505b5050505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156175ab57600080fd5b505afa1580156175bf573d6000803e3d6000fd5b505050506040513d60208110156175d557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561766b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b806001151561767982618073565b15151415156176d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b60018314806176e25750600283145b1515617756576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f7065726174696f6e206e6f7420616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600080600185141561776f576002915060039050617782565b60028514156177815760039150600590505b5b600115156177d488888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083619386565b151514151561784b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f7065726174696f6e206e6f7420616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6178f060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156178e45780601f106178b9576101008083540402835291602001916178e4565b820191906000526020600020905b8154815290600101906020018083116178c757829003601f168201915b505050505085846194c7565b156179d357600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314f775f98888886040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018381526020018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156179ba57600080fd5b505af11580156179ce573d6000803e3d6000fd5b505050505b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015617a6057600080fd5b505afa158015617a74573d6000803e3d6000fd5b505050506040513d6020811015617a8a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515617b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b8060011515617b2e82618073565b1515141515617b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc501468585898960046040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018481526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015617c8257600080fd5b505af1158015617c96573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d600688888888600060056040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184810384528b818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015617dd65780601f10617dab57610100808354040283529160200191617dd6565b820191906000526020600020905b815481529060010190602001808311617db957829003601f168201915b505084810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015617e5457600080fd5b505af1158015617e68573d6000803e3d6000fd5b50505050505050505050565b60608060606000600660076008600a60009054906101000a900460ff16838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617f265780601f10617efb57610100808354040283529160200191617f26565b820191906000526020600020905b815481529060010190602001808311617f0957829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015617fc25780601f10617f9757610100808354040283529160200191617fc2565b820191906000526020600020905b815481529060010190602001808311617fa557829003601f168201915b50505050509250818054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561805e5780601f106180335761010080835404028352916020019161805e565b820191906000526020600020905b81548152906001019060200180831161804157829003601f168201915b50505050509150935093509350935090919293565b6000600760405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156181035780601f106180d857610100808354040283529160200191618103565b820191906000526020600020905b8154815290600101906020018083116180e657829003601f168201915b505092505050604051602081830303815290604052805190602001206000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381d66b23846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060006040518083038186803b1580156181d957600080fd5b505afa1580156181ed573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561821757600080fd5b81019080805164010000000081111561822f57600080fd5b8281019050602081018481111561824557600080fd5b815185600182028301116401000000008211171561826257600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156182ad578082015181840152602081019050618292565b50505050905090810190601f1680156182da5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561838157600080fd5b505afa158015618395573d6000803e3d6000fd5b505050506040513d60208110156183ab57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515618441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b8086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060011515618495838361635e565b15151415156184ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180619ece6022913960400191505060405180910390fd5b60018414806184fe5750600284145b806185095750600384145b1515618560576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180619e5b6025913960400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cc5014687878b8b896040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018481526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561865957600080fd5b505af115801561866d573d6000803e3d6000fd5b505050505050505050505050565b606080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663014e6acc87876040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561873c57600080fd5b505afa158015618750573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250608081101561877a57600080fd5b81019080805164010000000081111561879257600080fd5b828101905060208101848111156187a857600080fd5b81518560018202830111640100000000821117156187c557600080fd5b505092919060200180516401000000008111156187e157600080fd5b828101905060208101848111156187f757600080fd5b815185600182028301116401000000008211171561881457600080fd5b50509291906020018051906020019092919080519060200190929190505050935093509350935092959194509250565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515618909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6000801515600a60009054906101000a900460ff161515141515618995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b8787600691906189a6929190619db5565b508585600791906189b8929190619db5565b508383600891906189ca929190619db5565b5081600a60006101000a81548160ff0219169083151502179055505050505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572515c6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015618a7357600080fd5b505afa158015618a87573d6000803e3d6000fd5b505050506040513d6020811015618a9d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515618b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180619e806028913960400191505060405180910390fd5b6001801515600a60009054906101000a900460ff161515141515618bbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e636f7272656374206e6574776f726b20626f6f742073746174757300000081525060200191505060405180910390fd5b8160011515618bcd82618073565b1515141515618c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180619ea86026913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98ac22d60068a8a8a8a8a60016040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184810384528b818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015618d625780601f10618d3757610100808354040283529160200191618d62565b820191906000526020600020905b815481529060010190602001808311618d4557829003601f168201915b505084810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015618de057600080fd5b505af1158015618df4573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f9953de589896040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015618eb557600080fd5b505af1158015618ec9573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a97a440687878b8b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015618fbe57600080fd5b505af1158015618fd2573d6000803e3d6000fd5b5050505060011515619028858a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506154ea565b151514151561909f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f7065726174696f6e2063616e6e6f7420626520706572666f726d656400000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3483a9d858a8a600860016040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018481526020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156191fe5780601f106191d3576101008083540402835291602001916191fe565b820191906000526020600020905b8154815290600101906020018083116191e157829003601f168201915b5050975050505050505050600060405180830381600087803b15801561922357600080fd5b505af1158015619237573d6000803e3d6000fd5b505050505050505050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c8642df8360026040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156192f95780820151818401526020810190506192de565b50505050905090810190601f1680156193265780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561934457600080fd5b505afa158015619358573d6000803e3d6000fd5b505050506040513d602081101561936e57600080fd5b81019080805190602001909291905050509050919050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c8642df84846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561943957808201518184015260208101905061941e565b50505050905090810190601f1680156194665780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561948457600080fd5b505afa158015619498573d6000803e3d6000fd5b505050506040513d60208110156194ae57600080fd5b8101908080519060200190929190505050905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02138648585856040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156195ad578082015181840152602081019050619592565b50505050905090810190601f1680156195da5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156195fb57600080fd5b505af115801561960f573d6000803e3d6000fd5b505050506040513d602081101561962557600080fd5b810190808051906020019092919050505090509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffe40d1d836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156196eb5780820151818401526020810190506196d0565b50505050905090810190601f1680156197185780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561973557600080fd5b505afa158015619749573d6000803e3d6000fd5b505050506040513d602081101561975f57600080fd5b81019080805190602001909291905050509050919050565b80156198c457600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635607395b84846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561985a57808201518184015260208101905061983f565b50505050905090810190601f1680156198875780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156198a757600080fd5b505af11580156198bb573d6000803e3d6000fd5b50505050619a07565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359cbd6fe84846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156199a1578082015181840152602081019050619986565b50505050905090810190601f1680156199ce5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156199ee57600080fd5b505af1158015619a02573d6000803e3d6000fd5b505050505b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abf5739f8484619a5786619c27565b6040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015619aca578082015181840152602081019050619aaf565b50505050905090810190601f168015619af75780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b83811015619b30578082015181840152602081019050619b15565b50505050905090810190601f168015619b5d5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015619b96578082015181840152602081019050619b7b565b50505050905090810190601f168015619bc35780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015619be457600080fd5b505afa158015619bf8573d6000803e3d6000fd5b505050506040513d6020811015619c0e57600080fd5b8101908080519060200190929190505050905092915050565b6060600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663177c8d8a836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015619cd3578082015181840152602081019050619cb8565b50505050905090810190601f168015619d005780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b158015619d1d57600080fd5b505afa158015619d31573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015619d5b57600080fd5b810190808051640100000000811115619d7357600080fd5b82810190506020810184811115619d8957600080fd5b8151856001820283011164010000000082111715619da657600080fd5b50509291905050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10619df657803560ff1916838001178555619e24565b82800160010185558215619e24579182015b82811115619e23578235825591602001919060010190619e08565b5b509050619e319190619e35565b5090565b619e5791905b80821115619e53576000816000905550600101619e3b565b5090565b9056fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a723058201cfc4043c31882758609d4d19ea314d7cb2a97d0aad47c021996fe1b795b5a1a0029 \ No newline at end of file +60806040526003600955600a805460ff191690553480156200002057600080fd5b5060405160c08062007583833981018060405260c08110156200004257600080fd5b508051602082015160408301516060840151608085015160a09095015160058054600160a060020a03968716600160a060020a03199182161790915560048054958716958216959095179094556001805493861693851693909317909255600080549185169184169190911790556002805494841694831694909417909355600380549290931691161790556174a580620000de6000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a90048063655a8ef511610108578063b5546564116100a6578063dbfad71111610075578063dbfad7111461119a578063f346a3a714611267578063f5ad584a146113d3578063f922f802146114e3576101d3565b8063b554656414610edc578063c3dc8e0914610f59578063cc9ba6fa14611020578063d1aa0c2014611174576101d3565b80638baa8191116100e25780638baa819114610baa5780639bd3810114610cee578063a5843f0814610da2578063a64d286014610dc5576101d3565b8063655a8ef5146109b05780636b568d7614610a775780638884304114610b2b576101d3565b8063404bf3eb116101755780634cbfa82e1161014f5780634cbfa82e146107f45780634fe57e7a146107fc57806359a260a3146108225780635ca5adbe146108e9576101d3565b8063404bf3eb1461068557806344478e79146107595780634b20f45f14610775576101d3565b80631c249912116101b15780631c2499121461044c5780633bc07dea146104cb5780633cf5f33b1461059a5780633f25c28814610617576101d3565b806304e81f1e146101d85780631b04c276146102615780631b6102201461033e575b600080fd5b61025f600480360360808110156101ee57600080fd5b810190602081018135602060020a81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111602060020a8311171561023b57600080fd5b9193509150600160a060020a038135811691602081013591604090910135166115b2565b005b61025f600480360360c081101561027757600080fd5b810190602081018135602060020a81111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111602060020a831117156102c457600080fd5b919390929091602081019035602060020a8111156102e157600080fd5b8201836020820111156102f357600080fd5b803590602001918460018302840111602060020a8311171561031457600080fd5b91935091508035906020810135151590604081013515159060600135600160a060020a031661181e565b61025f6004803603606081101561035457600080fd5b810190602081018135602060020a81111561036e57600080fd5b82018360208201111561038057600080fd5b803590602001918460018302840111602060020a831117156103a157600080fd5b919390929091602081019035602060020a8111156103be57600080fd5b8201836020820111156103d057600080fd5b803590602001918460018302840111602060020a831117156103f157600080fd5b919390929091602081019035602060020a81111561040e57600080fd5b82018360208201111561042057600080fd5b803590602001918460018302840111602060020a8311171561044157600080fd5b509092509050611af9565b61025f6004803603606081101561046257600080fd5b810190602081018135602060020a81111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111602060020a831117156104af57600080fd5b9193509150600160a060020a0381358116916020013516611c3b565b61025f600480360360808110156104e157600080fd5b810190602081018135602060020a8111156104fb57600080fd5b82018360208201111561050d57600080fd5b803590602001918460018302840111602060020a8311171561052e57600080fd5b919390929091602081019035602060020a81111561054b57600080fd5b82018360208201111561055d57600080fd5b803590602001918460018302840111602060020a8311171561057e57600080fd5b9193509150600160a060020a0381358116916020013516611f53565b61025f600480360360608110156105b057600080fd5b810190602081018135602060020a8111156105ca57600080fd5b8201836020820111156105dc57600080fd5b803590602001918460018302840111602060020a831117156105fd57600080fd5b919350915080359060200135600160a060020a0316612534565b61025f6004803603602081101561062d57600080fd5b810190602081018135602060020a81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111602060020a8311171561067a57600080fd5b509092509050612855565b61025f6004803603608081101561069b57600080fd5b810190602081018135602060020a8111156106b557600080fd5b8201836020820111156106c757600080fd5b803590602001918460018302840111602060020a831117156106e857600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561071257600080fd5b82018360208201111561072457600080fd5b803590602001918460018302840111602060020a8311171561074557600080fd5b919350915035600160a060020a0316612a82565b610761612e62565b604080519115158252519081900360200190f35b61025f6004803603606081101561078b57600080fd5b810190602081018135602060020a8111156107a557600080fd5b8201836020820111156107b757600080fd5b803590602001918460018302840111602060020a831117156107d857600080fd5b9193509150600160a060020a0381358116916020013516612f9a565b6107616131fc565b61025f6004803603602081101561081257600080fd5b5035600160a060020a0316613206565b61025f6004803603606081101561083857600080fd5b810190602081018135602060020a81111561085257600080fd5b82018360208201111561086457600080fd5b803590602001918460018302840111602060020a8311171561088557600080fd5b919390929091602081019035602060020a8111156108a257600080fd5b8201836020820111156108b457600080fd5b803590602001918460018302840111602060020a831117156108d557600080fd5b919350915035600160a060020a0316613540565b61025f600480360360608110156108ff57600080fd5b810190602081018135602060020a81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460018302840111602060020a8311171561094c57600080fd5b919390929091602081019035602060020a81111561096957600080fd5b82018360208201111561097b57600080fd5b803590602001918460018302840111602060020a8311171561099c57600080fd5b919350915035600160a060020a03166137d5565b61025f600480360360608110156109c657600080fd5b810190602081018135602060020a8111156109e057600080fd5b8201836020820111156109f257600080fd5b803590602001918460018302840111602060020a83111715610a1357600080fd5b919390929091602081019035602060020a811115610a3057600080fd5b820183602082011115610a4257600080fd5b803590602001918460018302840111602060020a83111715610a6357600080fd5b919350915035600160a060020a0316613cb0565b61076160048036036040811015610a8d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111602060020a83111715610aea57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613f2d945050505050565b61025f60048036036060811015610b4157600080fd5b810190602081018135602060020a811115610b5b57600080fd5b820183602082011115610b6d57600080fd5b803590602001918460018302840111602060020a83111715610b8e57600080fd5b9193509150600160a060020a0381358116916020013516614031565b61025f60048036036080811015610bc057600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610bea57600080fd5b820183602082011115610bfc57600080fd5b803590602001918460018302840111602060020a83111715610c1d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610c6f57600080fd5b820183602082011115610c8157600080fd5b803590602001918460018302840111602060020a83111715610ca257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506144b59050565b61076160048036036040811015610d0457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610d2e57600080fd5b820183602082011115610d4057600080fd5b803590602001918460018302840111602060020a83111715610d6157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506149df945050505050565b61025f60048036036040811015610db857600080fd5b5080359060200135614db3565b61025f60048036036080811015610ddb57600080fd5b810190602081018135602060020a811115610df557600080fd5b820183602082011115610e0757600080fd5b803590602001918460018302840111602060020a83111715610e2857600080fd5b919390929091602081019035602060020a811115610e4557600080fd5b820183602082011115610e5757600080fd5b803590602001918460018302840111602060020a83111715610e7857600080fd5b919390929091602081019035602060020a811115610e9557600080fd5b820183602082011115610ea757600080fd5b803590602001918460018302840111602060020a83111715610ec857600080fd5b919350915035600160a060020a03166152b3565b61025f60048036036060811015610ef257600080fd5b810190602081018135602060020a811115610f0c57600080fd5b820183602082011115610f1e57600080fd5b803590602001918460018302840111602060020a83111715610f3f57600080fd5b919350915080359060200135600160a060020a0316615729565b61025f60048036036060811015610f6f57600080fd5b810190602081018135602060020a811115610f8957600080fd5b820183602082011115610f9b57600080fd5b803590602001918460018302840111602060020a83111715610fbc57600080fd5b919390929091602081019035602060020a811115610fd957600080fd5b820183602082011115610feb57600080fd5b803590602001918460018302840111602060020a8311171561100c57600080fd5b919350915035600160a060020a0316615a9b565b611028615dd0565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b8381101561107457818101518382015260200161105c565b50505050905090810190601f1680156110a15780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156110d45781810151838201526020016110bc565b50505050905090810190601f1680156111015780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561113457818101518382015260200161111c565b50505050905090810190601f1680156111615780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6107616004803603602081101561118a57600080fd5b5035600160a060020a0316615fa3565b61025f600480360360808110156111b057600080fd5b810190602081018135602060020a8111156111ca57600080fd5b8201836020820111156111dc57600080fd5b803590602001918460018302840111602060020a831117156111fd57600080fd5b919390929091602081019035602060020a81111561121a57600080fd5b82018360208201111561122c57600080fd5b803590602001918460018302840111602060020a8311171561124d57600080fd5b919350915080359060200135600160a060020a03166161bd565b6112d56004803603602081101561127d57600080fd5b810190602081018135602060020a81111561129757600080fd5b8201836020820111156112a957600080fd5b803590602001918460018302840111602060020a831117156112ca57600080fd5b50909250905061642e565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561133457818101518382015260200161131c565b50505050905090810190601f1680156113615780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561139457818101518382015260200161137c565b50505050905090810190601f1680156113c15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61025f600480360360808110156113e957600080fd5b810190602081018135602060020a81111561140357600080fd5b82018360208201111561141557600080fd5b803590602001918460018302840111602060020a8311171561143657600080fd5b919390929091602081019035602060020a81111561145357600080fd5b82018360208201111561146557600080fd5b803590602001918460018302840111602060020a8311171561148657600080fd5b919390929091602081019035602060020a8111156114a357600080fd5b8201836020820111156114b557600080fd5b803590602001918460018302840111602060020a831117156114d657600080fd5b91935091503515156165ad565b61025f600480360360808110156114f957600080fd5b810190602081018135602060020a81111561151357600080fd5b82018360208201111561152557600080fd5b803590602001918460018302840111602060020a8311171561154657600080fd5b919390929091602081019035602060020a81111561156357600080fd5b82018360208201111561157557600080fd5b803590602001918460018302840111602060020a8311171561159657600080fd5b9193509150600160a060020a038135811691602001351661669c565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561160357600080fd5b505afa158015611617573d6000803e3d6000fd5b505050506040513d602081101561162d57600080fd5b5051600160a060020a031633146116785760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116bc92508491508390506149df565b15156001146116ff5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b836001148061170e5750836002145b806117195750836003145b15156117595760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173e56025913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03878116602483015260448201879052606060048301908152606483018a90529216916384b7a84a918a918a918a918a918190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561186f57600080fd5b505afa158015611883573d6000803e3d6000fd5b505050506040513d602081101561189957600080fd5b5051600160a060020a031633146118e45760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119269250839150616c8a9050565b151560011461196d576040805160e560020a62461bcd02815260206004820152601a60248201526000805160206173a5833981519152604482015290519081900360640190fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119b192508491508390506149df565b15156001146119f45760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b6001546040517f7b713579000000000000000000000000000000000000000000000000000000008152604481018990528715156064820152861515608482015260a06004820190815260a482018d9052600160a060020a0390921691637b713579918e918e918e918e918e918e918e91908190602481019060c4018a8a80828437600083820152601f01601f191690910184810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611b4a57600080fd5b505afa158015611b5e573d6000803e3d6000fd5b505050506040513d6020811015611b7457600080fd5b5051600160a060020a03163314611bbf5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615611c0b576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b611c1760068888617316565b50611c2460078686617316565b50611c3160088484617316565b5050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611c8c57600080fd5b505afa158015611ca0573d6000803e3d6000fd5b505050506040513d6020811015611cb657600080fd5b5051600160a060020a03163314611d015760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b80611d0b81615fa3565b1515600114611d4e5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260046044830181905260608382019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611df657600080fd5b505af1158015611e0a573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a03888116606483015260066084830181905260a060048401908152815460001960018216156101000201169590950460a4840181905291909316955063e98ac22d945091928a928a928a928692909182916024820191604481019160c49091019086908015611ed75780601f10611eac57610100808354040283529160200191611ed7565b820191906000526020600020905b815481529060010190602001808311611eba57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611fa457600080fd5b505afa158015611fb8573d6000803e3d6000fd5b505050506040513d6020811015611fce57600080fd5b5051600160a060020a031633146120195760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8061202381615fa3565b15156001146120665760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6120a887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250616d8f915050565b1515600114612101576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261219b939092909183018282801561218e5780601f106121635761010080835404028352916020019161218e565b820191906000526020600020905b81548152906001019060200180831161217157829003601f168201915b5050505050836001616e12565b1561252b57600480546040517fe3028316000000000000000000000000000000000000000000000000000000008152602092810192835260248101899052600160a060020a039091169163e3028316918a918a918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561223057600080fd5b505af1158015612244573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526008805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b7135799650948e948e94939192839290918291602481019160c4909101908a90801561232a5780601f106122ff5761010080835404028352916020019161232a565b820191906000526020600020905b81548152906001019060200180831161230d57829003601f168201915b50508381038252878152602001888880828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561237857600080fd5b505af115801561238c573d6000803e3d6000fd5b5050600354604080517f86bc36520000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921693506386bc36529250889188918c918c919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561244f57600080fd5b505af1158015612463573d6000803e3d6000fd5b5050600054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03888116602483015260048201928352604482018c9052909216935063c214e5e592508a918a9188918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050506040513d6020811015611f4857600080fd5b50505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561258557600080fd5b505afa158015612599573d6000803e3d6000fd5b505050506040513d60208110156125af57600080fd5b5051600160a060020a031633146125fa5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8061260481615fa3565b15156001146126475760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b60048054604080517f0cc274930000000000000000000000000000000000000000000000000000000081526024810187905292830190815260448301879052600092600160a060020a0390921691630cc27493918991899189918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b505050506040513d602081101561270d57600080fd5b50516002805460405160e060020a63e98ac22d0281526000606482018190526084820185905260a0600483019081526006805460001960018216156101000201169590950460a48401819052959650600160a060020a039093169463e98ac22d94938c938c939289929182916024820191604481019160c4909101908a9080156127d85780601f106127ad576101008083540402835291602001916127d8565b820191906000526020600020905b8154815290600101906020018083116127bb57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156128a657600080fd5b505afa1580156128ba573d6000803e3d6000fd5b505050506040513d60208110156128d057600080fd5b5051600160a060020a0316331461291b5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615612967576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b600354604080517fe3b09d840000000000000000000000000000000000000000000000000000000081526004810191825260448101859052600160a060020a039092169163e3b09d84918691869160069181906024810190606401868680828437600083820152601f01601f191690910184810383528554600260001961010060018416150201909116048082526020909101915085908015612a4b5780601f10612a2057610100808354040283529160200191612a4b565b820191906000526020600020905b815481529060010190602001808311612a2e57829003601f168201915b505095505050505050600060405180830381600087803b158015612a6e57600080fd5b505af115801561252b573d6000803e3d6000fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612ad357600080fd5b505afa158015612ae7573d6000803e3d6000fd5b505050506040513d6020811015612afd57600080fd5b5051600160a060020a03163314612b485760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8a9250839150616f229050565b1515600114612be3576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b81612bed81615fa3565b1515600114612c305760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d938b938e938e938d938d9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a038b8116606483015260046084830181905260a08382019081526006805460001960018216156101000201169690960460a4850181905292909416965063e98ac22d95508e938e938e9382916024810191604482019160c401908a908015612de35780601f10612db857610100808354040283529160200191612de3565b820191906000526020600020905b815481529060010190602001808311612dc657829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612e4057600080fd5b505af1158015612e54573d6000803e3d6000fd5b505050505050505050505050565b600554604080517fe572515c0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e572515c916004808301926020929190829003018186803b158015612ec057600080fd5b505afa158015612ed4573d6000803e3d6000fd5b505050506040513d6020811015612eea57600080fd5b5051600160a060020a03163314612f355760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615612f81576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b600a805460ff19166001179081905560ff1691505b5090565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612feb57600080fd5b505afa158015612fff573d6000803e3d6000fd5b505050506040513d602081101561301557600080fd5b5051600160a060020a031633146130605760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8061306a81615fa3565b15156001146130ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613147939092909183018282801561313a5780601f1061310f5761010080835404028352916020019161313a565b820191906000526020600020905b81548152906001019060200180831161311d57829003601f168201915b5050505050836006616e12565b156131f5576000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660248301526005604483018190526060600484019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611f3457600080fd5b5050505050565b600a5460ff165b90565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561325757600080fd5b505afa15801561326b573d6000803e3d6000fd5b505050506040513d602081101561328157600080fd5b5051600160a060020a031633146132cc5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615613318576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526133b293909290918301828280156133a55780601f1061337a576101008083540402835291602001916133a5565b820191906000526020600020905b81548152906001019060200180831161338857829003601f168201915b5050505050836001616fe7565b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830190815260026064840181905260806024850190815260068054600019600182161561010002011683900460848701819052949096169563e3483a9d95899591946007949390929091604481019160a4909101908790801561348c5780601f106134615761010080835404028352916020019161348c565b820191906000526020600020905b81548152906001019060200180831161346f57829003601f168201915b50508381038252855460026000196101006001841615020190911604808252602090910190869080156135005780601f106134d557610100808354040283529160200191613500565b820191906000526020600020905b8154815290600101906020018083116134e357829003601f168201915b50509650505050505050600060405180830381600087803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d60208110156135bb57600080fd5b5051600160a060020a031633146136065760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136489250839150616c8a9050565b151560011461368f576040805160e560020a62461bcd02815260206004820152601a60248201526000805160206173a5833981519152604482015290519081900360640190fd5b8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136d392508491508390506149df565b15156001146137165760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101889052600160a060020a0390921691633f5e1a4591899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561382657600080fd5b505afa15801561383a573d6000803e3d6000fd5b505050506040513d602081101561385057600080fd5b5051600160a060020a0316331461389b5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138dd9250839150616c8a9050565b1515600114613924576040805160e560020a62461bcd02815260206004820152601a60248201526000805160206173a5833981519152604482015290519081900360640190fd5b8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061396892508491508390506149df565b15156001146139ab5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b6040805160208082019081526007805460026000196101006001841615020190911604938301849052929091829160609091019084908015613a2e5780601f10613a0357610100808354040283529160200191613a2e565b820191906000526020600020905b815481529060010190602001808311613a1157829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015613b9b57506040805160208082019081526008805460026000196101006001841615020190911604938301849052929091829160609091019084908015613b295780601f10613afe57610100808354040283529160200191613b29565b820191906000526020600020905b815481529060010190602001808311613b0c57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b1515613bf1576040805160e560020a62461bcd02815260206004820152601d60248201527f61646d696e20726f6c65732063616e6e6f742062652072656d6f766564000000604482015290519081900360640190fd5b600154604080517fa634301200000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a039092169163a6343012918b918b918b918b919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015613d0157600080fd5b505afa158015613d15573d6000803e3d6000fd5b505050506040513d6020811015613d2b57600080fd5b5051600160a060020a03163314613d765760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b80613d8081615fa3565b1515600114613dc35760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613e5d9390929091830182828015613e505780601f10613e2557610100808354040283529160200191613e50565b820191906000526020600020905b815481529060010190602001808311613e3357829003601f168201915b5050505050836005616e12565b15613538576003546040517f0cc5014600000000000000000000000000000000000000000000000000000000815260056044820181905260606004830190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561283557600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152602483019384528651604484015286519190941693636b568d76938893889360649091019060208501908083838c5b83811015613fb1578181015183820152602001613f99565b50505050905090810190601f168015613fde5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015613ffc57600080fd5b505afa158015614010573d6000803e3d6000fd5b505050506040513d602081101561402657600080fd5b505190505b92915050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561408257600080fd5b505afa158015614096573d6000803e3d6000fd5b505050506040513d60208110156140ac57600080fd5b5051600160a060020a031633146140f75760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8061410181615fa3565b15156001146141445760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526141de93909290918301828280156141d15780601f106141a6576101008083540402835291602001916141d1565b820191906000526020600020905b8154815290600101906020018083116141b457829003601f168201915b5050505050836004616e12565b156131f557600080546040517f1d09dc93000000000000000000000000000000000000000000000000000000008152602060048201908152602482018890528392600160a060020a031691631d09dc93918a918a91908190604401848480828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561427457600080fd5b505af1158015614288573d6000803e3d6000fd5b505050506040513d604081101561429e57600080fd5b5080516020909101519092509050811561434c5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261434c939092909183018282801561433f5780601f106143145761010080835404028352916020019161433f565b820191906000526020600020905b81548152906001019060200180831161432257829003601f168201915b5050505050826000616fe7565b60008054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03898116602483015260048201928352604482018b90529092169163c214e5e5918b918b918b918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156143e757600080fd5b505af11580156143fb573d6000803e3d6000fd5b505050506040513d602081101561441157600080fd5b505190508015611c315760068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152611c3193909290918301828280156144a85780601f1061447d576101008083540402835291602001916144a8565b820191906000526020600020905b81548152906001019060200180831161448b57829003601f168201915b5050505050876001616fe7565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561450657600080fd5b505afa15801561451a573d6000803e3d6000fd5b505050506040513d602081101561453057600080fd5b5051600160a060020a0316331461457b5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b808361458782826149df565b15156001146145ca5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b846145d481616c8a565b151560011461461b576040805160e560020a62461bcd02815260206004820152601a60248201526000805160206173a5833981519152604482015290519081900360640190fd5b6146258787613f2d565b151560011461467e576040805160e560020a62461bcd02815260206004820152601d60248201527f6f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b61468885876171a9565b15156001146146e1576040805160e560020a62461bcd02815260206004820152601460248201527f726f6c6520646f6573206e6f7420657869737473000000000000000000000000604482015290519081900360640190fd5b600154600090600160a060020a031663be322e548789614700816171c4565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561475757818101518382015260200161473f565b50505050905090810190601f1680156147845780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156147b757818101518382015260200161479f565b50505050905090810190601f1680156147e45780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156148175781810151838201526020016147ff565b50505050905090810190601f1680156148445780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561486557600080fd5b505afa158015614879573d6000803e3d6000fd5b505050506040513d602081101561488f57600080fd5b5051600080546040517f143a5604000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830190815285151560648401526080602484019081528d5160848501528d51969750919093169463143a5604948e948e948e948a9492939092604483019260a401916020890191908190849084905b8381101561492f578181015183820152602001614917565b50505050905090810190601f16801561495c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561498f578181015183820152602001614977565b50505050905090810190601f1680156149bc5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612e4057600080fd5b60008054600160a060020a031663e8b42bf484846149fc816171c4565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015614a67578181015183820152602001614a4f565b50505050905090810190601f168015614a945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015614ac7578181015183820152602001614aaf565b50505050905090810190601f168015614af45780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b158015614b1457600080fd5b505afa158015614b28573d6000803e3d6000fd5b505050506040513d6020811015614b3e57600080fd5b505115614b4d5750600161402b565b60015460008054604080517f81d66b23000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015291519482169463be322e549493909216926381d66b2392602480840193829003018186803b158015614bbc57600080fd5b505afa158015614bd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015614bf957600080fd5b810190808051602060020a811115614c1057600080fd5b82016020810184811115614c2357600080fd5b8151602060020a811182820187101715614c3c57600080fd5b505092919050505084614c4e866171c4565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614ca5578181015183820152602001614c8d565b50505050905090810190601f168015614cd25780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015614d05578181015183820152602001614ced565b50505050905090810190601f168015614d325780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015614d65578181015183820152602001614d4d565b50505050905090810190601f168015614d925780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015613ffc57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015614e0457600080fd5b505afa158015614e18573d6000803e3d6000fd5b505050506040513d6020811015614e2e57600080fd5b5051600160a060020a03163314614e795760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460009060ff1615614ec5576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b600480546040517f9e58eb9f00000000000000000000000000000000000000000000000000000000815260248101869052604481018590526060928101928352600680546002600019600183161561010002019091160460648301819052600160a060020a0390931693639e58eb9f9391928892889291829160849091019086908015614f935780601f10614f6857610100808354040283529160200191614f93565b820191906000526020600020905b815481529060010190602001808311614f7657829003601f168201915b5050945050505050600060405180830381600087803b158015614fb557600080fd5b505af1158015614fc9573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526007805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b71357996509460069490928392918291602481019160c490910190899080156150ac5780601f10615081576101008083540402835291602001916150ac565b820191906000526020600020905b81548152906001019060200180831161508f57829003601f168201915b50508381038252875460026000196101006001841615020190911604808252602090910190889080156151205780601f106150f557610100808354040283529160200191615120565b820191906000526020600020905b81548152906001019060200180831161510357829003601f168201915b5050975050505050505050600060405180830381600087803b15801561514557600080fd5b505af1158015615159573d6000803e3d6000fd5b5050600054604080517fcef7f6af00000000000000000000000000000000000000000000000000000000815260048101918252600780546002600019600183161561010002019091160460448301819052600160a060020a03909416955063cef7f6af9450926008929182916024820191606401908690801561521d5780601f106151f25761010080835404028352916020019161521d565b820191906000526020600020905b81548152906001019060200180831161520057829003601f168201915b50508381038252845460026000196101006001841615020190911604808252602090910190859080156152915780601f1061526657610100808354040283529160200191615291565b820191906000526020600020905b81548152906001019060200180831161527457829003601f168201915b5050945050505050600060405180830381600087803b158015612a6e57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561530457600080fd5b505afa158015615318573d6000803e3d6000fd5b505050506040513d602081101561532e57600080fd5b5051600160a060020a031633146153795760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506153bb9250839150616f229050565b1515600114615414576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061545892508491508390506149df565b151560011461549b5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b60048054604080517f1f953480000000000000000000000000000000000000000000000000000000008152928301908152604483018c9052600160a060020a0390911691631f953480918d918d918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561555a57600080fd5b505af115801561556e573d6000803e3d6000fd5b5050505060608a8a8a8a604051602001808060200180602001806020018481038452888882818152602001925080828437600083820152601f01601f1916909101858103808552600182527f2e0000000000000000000000000000000000000000000000000000000000000060208301526040908101845281018790526060019050868680828437600083820181905260408051601f909301601f199081169095018381039095018352939093529a50508e11159750611811965050505050505057600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921691633f5e1a45918a918a918691819060248101906064018686808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b838110156156da5781810151838201526020016156c2565b50505050905090810190601f1680156157075780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ad457600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561577a57600080fd5b505afa15801561578e573d6000803e3d6000fd5b505050506040513d60208110156157a457600080fd5b5051600160a060020a031633146157ef5760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b806157f981615fa3565b151560011461583c5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b826001148061584b5750826002145b15156158a1576040805160e560020a62461bcd02815260206004820152601560248201527f4f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60008084600114156158b957506002905060036158ca565b84600214156158ca57506003905060055b61590b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250616d8f915050565b1515600114615964576040805160e560020a62461bcd02815260206004820152601560248201527f6f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526159fd93909290918301828280156159f15780601f106159c6576101008083540402835291602001916159f1565b820191906000526020600020905b8154815290600101906020018083116159d457829003601f168201915b50505050508584616e12565b1561252b5760048054604080517f14f775f90000000000000000000000000000000000000000000000000000000081526024810189905292830190815260448301899052600160a060020a03909116916314f775f9918a918a918a918190606401858580828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156117fd57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015615aec57600080fd5b505afa158015615b00573d6000803e3d6000fd5b505050506040513d6020811015615b1657600080fd5b5051600160a060020a03163314615b615760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b80615b6b81615fa3565b1515600114615bae5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6003546040517f0cc50146000000000000000000000000000000000000000000000000000000008152600460448201819052606082820190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015615c7857600080fd5b505af1158015615c8c573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d02815260006064820181905260056084830181905260a0600484019081526006805460001960018216156101000201169690960460a48501819052600160a060020a03909516975063e98ac22d96508d948d948d948d9490939092909182916024820191604481019160c4909101908c908015615d5d5780601f10615d3257610100808354040283529160200191615d5d565b820191906000526020600020905b815481529060010190602001808311615d4057829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561283557600080fd5b600a5460068054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260609485948594600094919360079360089360ff909116928691830182828015615e725780601f10615e4757610100808354040283529160200191615e72565b820191906000526020600020905b815481529060010190602001808311615e5557829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015615f005780601f10615ed557610100808354040283529160200191615f00565b820191906000526020600020905b815481529060010190602001808311615ee357829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015615f8e5780601f10615f6357610100808354040283529160200191615f8e565b820191906000526020600020905b815481529060010190602001808311615f7157829003601f168201915b50505050509150935093509350935090919293565b604080516020808201908152600780546002600019610100600184161502019091160493830184905260009390928291606090910190849080156160285780601f10615ffd57610100808354040283529160200191616028565b820191906000526020600020905b81548152906001019060200180831161600b57829003601f168201915b505060408051601f198184030181528282528051602090910120600080547f81d66b23000000000000000000000000000000000000000000000000000000008552600160a060020a038a8116600487015293519297509290921694506381d66b239350602480840193829003018186803b1580156160a557600080fd5b505afa1580156160b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156160e257600080fd5b810190808051602060020a8111156160f957600080fd5b8201602081018481111561610c57600080fd5b8151602060020a81118282018710171561612557600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561616d578181015183820152602001616155565b50505050905090810190601f16801561619a5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561620e57600080fd5b505afa158015616222573d6000803e3d6000fd5b505050506040513d602081101561623857600080fd5b5051600160a060020a031633146162835760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b8086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506162c792508491508390506149df565b151560011461630a5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174586022913960400191505060405180910390fd5b83600114806163195750836002145b806163245750836003145b15156163645760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173e56025913960400191505060405180910390fd5b6003546040517f0cc501460000000000000000000000000000000000000000000000000000000081526044810186905260606004820190815260648201889052600160a060020a0390921691630cc5014691899189918d918d918b919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612e4057600080fd5b6002546040517f014e6acc0000000000000000000000000000000000000000000000000000000081526020600482019081526024820184905260609283926000928392600160a060020a03169163014e6acc9189918991908190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b1580156164c557600080fd5b505afa1580156164d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561650257600080fd5b810190808051602060020a81111561651957600080fd5b8201602081018481111561652c57600080fd5b8151602060020a81118282018710171561654557600080fd5b50509291906020018051602060020a81111561656057600080fd5b8201602081018481111561657357600080fd5b8151602060020a81118282018710171561658c57600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b600554600160a060020a0316331461660f576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600a5460009060ff161561665b576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b61666760068989617316565b5061667460078787617316565b5061668160088585617316565b5050600a805460ff1916911515919091179055505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156166ed57600080fd5b505afa158015616701573d6000803e3d6000fd5b505050506040513d602081101561671757600080fd5b5051600160a060020a031633146167625760405160e560020a62461bcd02815260040180806020018281038252602881526020018061740a6028913960400191505060405180910390fd5b600a5460019060ff16151581146167b1576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206173c5833981519152604482015290519081900360640190fd5b816167bb81615fa3565b15156001146167fe5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806174326026913960400191505060405180910390fd5b6002805460405160e060020a63e98ac22d028152600160a060020a03878116606483015260016084830181905260a06004840190815260068054600019818516156101000201169690960460a48501819052929094169463e98ac22d9490938e938e938e938e938e9382916024810191604482019160c401908c9080156168c65780601f1061689b576101008083540402835291602001916168c6565b820191906000526020600020905b8154815290600101906020018083116168a957829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561693957600080fd5b505af115801561694d573d6000803e3d6000fd5b5050600480546040517ff9953de50000000000000000000000000000000000000000000000000000000081526020928101928352602481018c9052600160a060020a03909116935063f9953de592508b918b918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b1580156169e157600080fd5b505af11580156169f5573d6000803e3d6000fd5b5050600354604080517fa97a440600000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a03909216935063a97a44069250899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015616ab857600080fd5b505af1158015616acc573d6000803e3d6000fd5b50505050616b108489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613f2d92505050565b1515600114616b69576040805160e560020a62461bcd02815260206004820152601d60248201527f4f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d9389938e938e93600893909290604481019060a401878780828437600083820152601f01601f191690910184810383528654600260001961010060018416150201909116048082526020909101915086908015616c655780601f10616c3a57610100808354040283529160200191616c65565b820191906000526020600020905b815481529060010190602001808311616c4857829003601f168201915b5050975050505050505050600060405180830381600087803b158015612e4057600080fd5b60048054604080517f8c8642df000000000000000000000000000000000000000000000000000000008152600260248201819052938101918252845160448201528451600094600160a060020a0390941693638c8642df93879391929091829160649091019060208601908083838c5b83811015616d12578181015183820152602001616cfa565b50505050905090810190601f168015616d3f5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015616d5d57600080fd5b505afa158015616d71573d6000803e3d6000fd5b505050506040513d6020811015616d8757600080fd5b505192915050565b60048054604080517f8c8642df00000000000000000000000000000000000000000000000000000000815260248101859052928301908152845160448401528451600093600160a060020a0390931692638c8642df9287928792829160649091019060208601908083838c83811015613fb1578181015183820152602001613f99565b6002546040517fb0213864000000000000000000000000000000000000000000000000000000008152600160a060020a03848116602483015260448201849052606060048301908152865160648401528651600094929092169263b02138649288928892889282916084019060208701908083838d5b83811015616ea0578181015183820152602001616e88565b50505050905090810190601f168015616ecd5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015616eee57600080fd5b505af1158015616f02573d6000803e3d6000fd5b505050506040513d6020811015616f1857600080fd5b5051949350505050565b600480546040517fffe40d1d0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451600094600160a060020a039094169363ffe40d1d9387939283926044909201918501908083838b5b83811015616f9d578181015183820152602001616f85565b50505050905090810190601f168015616fca5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015616d5d57600080fd5b80156170d757600254604080517f5607395b000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260048201928352865160448301528651931692635607395b9287928792829160640190602086019080838360005b8381101561706d578181015183820152602001617055565b50505050905090810190601f16801561709a5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156170ba57600080fd5b505af11580156170ce573d6000803e3d6000fd5b505050506171a4565b600254604080517f59cbd6fe000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152600482019283528651604483015286519316926359cbd6fe9287928792829160640190602086019080838360005b8381101561715757818101518382015260200161713f565b50505050905090810190601f1680156171845780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612a6e57600080fd5b505050565b600154600090600160a060020a031663abf5739f8484614c4e815b600480546040517f177c8d8a0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451606094600160a060020a039094169363177c8d8a93879392839260449092019185019080838360005b83811015617240578181015183820152602001617228565b50505050905090810190601f16801561726d5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561728a57600080fd5b505afa15801561729e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156172c757600080fd5b810190808051602060020a8111156172de57600080fd5b820160208101848111156172f157600080fd5b8151602060020a81118282018710171561730a57600080fd5b50909695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106173575782800160ff19823516178555617384565b82800160010185558215617384579182015b82811115617384578235825591602001919060010190617369565b50612f96926132039250905b80821115612f96576000815560010161739056fe6f7267206e6f7420696e20617070726f76656420737461747573000000000000496e636f7272656374206e6574776f726b20626f6f7420737461747573000000696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a723058200df3ecadd04c1fa75894e5ed0cd44272e40d3b012cf3598e5c534b374ecc93aa0029 \ No newline at end of file diff --git a/permission/contract/gen/PermissionsInterface.bin b/permission/contract/gen/PermissionsInterface.bin index 7aa985995..0d7807de1 100644 --- a/permission/contract/gen/PermissionsInterface.bin +++ b/permission/contract/gen/PermissionsInterface.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516020806138138339810180604052602081101561003057600080fd5b810190808051906020019092919050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613781806100926000396000f3fe608060405234801561001057600080fd5b50600436106101ec576000357c0100000000000000000000000000000000000000000000000000000000900480635adbfa7a116101215780639bd38101116100bf578063a97a44061161008e578063a97a44061461123b578063bb3b6e8014611309578063d1aa0c201461138c578063f346a3a7146113e8576101ec565b80639bd3810114610feb578063a5843f081461109c578063a6343012146110d4578063a97914bf146111a2576101ec565b80637e461258116100fb5780637e46125814610c9e57806384b7a84a14610d8c5780638cb58ef314610e2f5780638f362a3e14610efd576101ec565b80635adbfa7a14610a9c5780635be9672c14610b6a5780636b568d7614610bed576101ec565b806343de646c1161018e5780634cff819e116101685780634cff819e146108015780634fe57e7a14610924578063511bbd9f1461096857806351f604c3146109ac576101ec565b806343de646c146106cf57806344478e79146107bd5780634cbfa82e146107df576101ec565b80631b610220116101ca5780631b610220146103ac5780632f7f0a12146104cf5780633e239b23146105bd5780633f25c28814610656576101ec565b806303ed6933146101f15780630cc501461461023b57806316724c4414610313575b600080fd5b6101f9611580565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103116004803603606081101561025157600080fd5b810190808035906020019064010000000081111561026e57600080fd5b82018360208201111561028057600080fd5b803590602001918460018302840111640100000000831117156102a257600080fd5b9091929391929390803590602001906401000000008111156102c357600080fd5b8201836020820111156102d557600080fd5b803590602001918460018302840111640100000000831117156102f757600080fd5b9091929391929390803590602001909291905050506115a9565b005b6103aa6004803603604081101561032957600080fd5b810190808035906020019064010000000081111561034657600080fd5b82018360208201111561035857600080fd5b8035906020019184600183028401116401000000008311171561037a57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116f4565b005b6104cd600480360360608110156103c257600080fd5b81019080803590602001906401000000008111156103df57600080fd5b8201836020820111156103f157600080fd5b8035906020019184600183028401116401000000008311171561041357600080fd5b90919293919293908035906020019064010000000081111561043457600080fd5b82018360208201111561044657600080fd5b8035906020019184600183028401116401000000008311171561046857600080fd5b90919293919293908035906020019064010000000081111561048957600080fd5b82018360208201111561049b57600080fd5b803590602001918460018302840111640100000000831117156104bd57600080fd5b9091929391929390505050611835565b005b6105bb600480360360608110156104e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561052257600080fd5b82018360208201111561053457600080fd5b8035906020019184600183028401116401000000008311171561055657600080fd5b90919293919293908035906020019064010000000081111561057757600080fd5b82018360208201111561058957600080fd5b803590602001918460018302840111640100000000831117156105ab57600080fd5b9091929391929390505050611979565b005b610654600480360360408110156105d357600080fd5b81019080803590602001906401000000008111156105f057600080fd5b82018360208201111561060257600080fd5b8035906020019184600183028401116401000000008311171561062457600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af0565b005b6106cd6004803603602081101561066c57600080fd5b810190808035906020019064010000000081111561068957600080fd5b82018360208201111561069b57600080fd5b803590602001918460018302840111640100000000831117156106bd57600080fd5b9091929391929390505050611c31565b005b6107bb600480360360608110156106e557600080fd5b810190808035906020019064010000000081111561070257600080fd5b82018360208201111561071457600080fd5b8035906020019184600183028401116401000000008311171561073657600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561077757600080fd5b82018360208201111561078957600080fd5b803590602001918460018302840111640100000000831117156107ab57600080fd5b9091929391929390505050611d09565b005b6107c5611e80565b604051808215151515815260200191505060405180910390f35b6107e7611f47565b604051808215151515815260200191505060405180910390f35b6109226004803603606081101561081757600080fd5b810190808035906020019064010000000081111561083457600080fd5b82018360208201111561084657600080fd5b8035906020019184600183028401116401000000008311171561086857600080fd5b90919293919293908035906020019064010000000081111561088957600080fd5b82018360208201111561089b57600080fd5b803590602001918460018302840111640100000000831117156108bd57600080fd5b9091929391929390803590602001906401000000008111156108de57600080fd5b8201836020820111156108f057600080fd5b8035906020019184600183028401116401000000008311171561091257600080fd5b909192939192939050505061200c565b005b6109666004803603602081101561093a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612184565b005b6109aa6004803603602081101561097e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061225b565b005b610a9a600480360360a08110156109c257600080fd5b81019080803590602001906401000000008111156109df57600080fd5b8201836020820111156109f157600080fd5b80359060200191846001830284011164010000000083111715610a1357600080fd5b909192939192939080359060200190640100000000811115610a3457600080fd5b820183602082011115610a4657600080fd5b80359060200191846001830284011164010000000083111715610a6857600080fd5b909192939192939080359060200190929190803515159060200190929190803515159060200190929190505050612363565b005b610b6860048036036040811015610ab257600080fd5b8101908080359060200190640100000000811115610acf57600080fd5b820183602082011115610ae157600080fd5b80359060200191846001830284011164010000000083111715610b0357600080fd5b909192939192939080359060200190640100000000811115610b2457600080fd5b820183602082011115610b3657600080fd5b80359060200191846001830284011164010000000083111715610b5857600080fd5b90919293919293905050506124c8565b005b610beb60048036036040811015610b8057600080fd5b8101908080359060200190640100000000811115610b9d57600080fd5b820183602082011115610baf57600080fd5b80359060200191846001830284011164010000000083111715610bd157600080fd5b90919293919293908035906020019092919050505061260a565b005b610c8460048036036040811015610c0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c4057600080fd5b820183602082011115610c5257600080fd5b80359060200191846001830284011164010000000083111715610c7457600080fd5b909192939192939050505061271f565b604051808215151515815260200191505060405180910390f35b610d8a60048036036060811015610cb457600080fd5b8101908080359060200190640100000000811115610cd157600080fd5b820183602082011115610ce357600080fd5b80359060200191846001830284011164010000000083111715610d0557600080fd5b909192939192939080359060200190640100000000811115610d2657600080fd5b820183602082011115610d3857600080fd5b80359060200191846001830284011164010000000083111715610d5a57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612853565b005b610e2d60048036036060811015610da257600080fd5b8101908080359060200190640100000000811115610dbf57600080fd5b820183602082011115610dd157600080fd5b80359060200191846001830284011164010000000083111715610df357600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506129ca565b005b610efb60048036036040811015610e4557600080fd5b8101908080359060200190640100000000811115610e6257600080fd5b820183602082011115610e7457600080fd5b80359060200191846001830284011164010000000083111715610e9657600080fd5b909192939192939080359060200190640100000000811115610eb757600080fd5b820183602082011115610ec957600080fd5b80359060200191846001830284011164010000000083111715610eeb57600080fd5b9091929391929390505050612b14565b005b610fe960048036036060811015610f1357600080fd5b8101908080359060200190640100000000811115610f3057600080fd5b820183602082011115610f4257600080fd5b80359060200191846001830284011164010000000083111715610f6457600080fd5b909192939192939080359060200190640100000000811115610f8557600080fd5b820183602082011115610f9757600080fd5b80359060200191846001830284011164010000000083111715610fb957600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c56565b005b6110826004803603604081101561100157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561103e57600080fd5b82018360208201111561105057600080fd5b8035906020019184600183028401116401000000008311171561107257600080fd5b9091929391929390505050612dcd565b604051808215151515815260200191505060405180910390f35b6110d2600480360360408110156110b257600080fd5b810190808035906020019092919080359060200190929190505050612f01565b005b6111a0600480360360408110156110ea57600080fd5b810190808035906020019064010000000081111561110757600080fd5b82018360208201111561111957600080fd5b8035906020019184600183028401116401000000008311171561113b57600080fd5b90919293919293908035906020019064010000000081111561115c57600080fd5b82018360208201111561116e57600080fd5b8035906020019184600183028401116401000000008311171561119057600080fd5b9091929391929390505050612fb5565b005b611239600480360360408110156111b857600080fd5b81019080803590602001906401000000008111156111d557600080fd5b8201836020820111156111e757600080fd5b8035906020019184600183028401116401000000008311171561120957600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130f7565b005b6113076004803603604081101561125157600080fd5b810190808035906020019064010000000081111561126e57600080fd5b82018360208201111561128057600080fd5b803590602001918460018302840111640100000000831117156112a257600080fd5b9091929391929390803590602001906401000000008111156112c357600080fd5b8201836020820111156112d557600080fd5b803590602001918460018302840111640100000000831117156112f757600080fd5b9091929391929390505050613238565b005b61138a6004803603604081101561131f57600080fd5b810190808035906020019064010000000081111561133c57600080fd5b82018360208201111561134e57600080fd5b8035906020019184600183028401116401000000008311171561137057600080fd5b90919293919293908035906020019092919050505061337a565b005b6113ce600480360360208110156113a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061348f565b604051808215151515815260200191505060405180910390f35b61145f600480360360208110156113fe57600080fd5b810190808035906020019064010000000081111561141b57600080fd5b82018360208201111561142d57600080fd5b8035906020019184600183028401116401000000008311171561144f57600080fd5b909192939192939050505061358d565b6040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156114db5780820151818401526020810190506114c0565b50505050905090810190601f1680156115085780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b83811015611541578082015181840152602081019050611526565b50505050905090810190601f16801561156e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbfad7118686868686336040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508381038252878782818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156116d557600080fd5b505af11580156116e9573d6000803e3d6000fd5b505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388843041848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561181857600080fd5b505af115801561182c573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b6102208787878787876040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018060200184810384528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508481038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b50505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638baa81918686868686336040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015611ad157600080fd5b505af1158015611ae5573d6000803e3d6000fd5b505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b20f45f848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c1457600080fd5b505af1158015611c28573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f25c28883836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663404bf3eb8686868686336040518763ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015611e6157600080fd5b505af1158015611e75573d6000803e3d6000fd5b505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344478e796040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611f0757600080fd5b505af1158015611f1b573d6000803e3d6000fd5b505050506040513d6020811015611f3157600080fd5b8101908080519060200190929190505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cbfa82e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611fcc57600080fd5b505afa158015611fe0573d6000803e3d6000fd5b505050506040513d6020811015611ff657600080fd5b8101908080519060200190929190505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a64d2860878787878787336040518863ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528b8b82818152602001925080828437600081840152601f19601f8201169050808301925050508481038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508481038252878782818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561216457600080fd5b505af1158015612178573d6000803e3d6000fd5b50505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fe57e7a826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561224057600080fd5b505af1158015612254573d6000803e3d6000fd5b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b04c27688888888888888336040518963ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018060200187815260200186151515158152602001851515151581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183810383528b8b82818152602001925080828437600081840152601f19601f8201169050808301925050508381038252898982818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156124a757600080fd5b505af11580156124bb573d6000803e3d6000fd5b5050505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663655a8ef585858585336040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b1580156125ec57600080fd5b505af1158015612600573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b5546564848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561270257600080fd5b505af1158015612716573d6000803e3d6000fd5b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b568d768585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060206040518083038186803b15801561280f57600080fd5b505afa158015612823573d6000803e3d6000fd5b505050506040513d602081101561283957600080fd5b810190808051906020019092919050505090509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633bc07dea8686868686336040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508381038252878782818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304e81f1e85858585336040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252878782818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3dc8e0985858585336040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612c3857600080fd5b505af1158015612c4c573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f922f8028686868686336040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352898982818152602001925080828437600081840152601f19601f8201169050808301925050508381038252878782818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612dae57600080fd5b505af1158015612dc2573d6000803e3d6000fd5b505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639bd381018585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060206040518083038186803b158015612ebd57600080fd5b505afa158015612ed1573d6000803e3d6000fd5b505050506040513d6020811015612ee757600080fd5b810190808051906020019092919050505090509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a5843f0883836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b158015612f9957600080fd5b505af1158015612fad573d6000803e3d6000fd5b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca5adbe85858585336040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b1580156130d957600080fd5b505af11580156130ed573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c249912848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561321b57600080fd5b505af115801561322f573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a260a385858585336040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508381038252868682818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561335c57600080fd5b505af1158015613370573d6000803e3d6000fd5b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633cf5f33b848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1aa0c20836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561354b57600080fd5b505afa15801561355f573d6000803e3d6000fd5b505050506040513d602081101561357557600080fd5b81019080805190602001909291905050509050919050565b6060806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f346a3a787876040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561364d57600080fd5b505afa158015613661573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250608081101561368b57600080fd5b8101908080516401000000008111156136a357600080fd5b828101905060208101848111156136b957600080fd5b81518560018202830111640100000000821117156136d657600080fd5b505092919060200180516401000000008111156136f257600080fd5b8281019050602081018481111561370857600080fd5b815185600182028301116401000000008211171561372557600080fd5b5050929190602001805190602001909291908051906020019092919050505093509350935093509295919450925056fea165627a7a7230582049eecad3069ea93138ffdb59f1b6803feaa6cde89ea4ef7956f533e671354e340029 \ No newline at end of file +608060405234801561001057600080fd5b506040516020806127ff8339810180604052602081101561003057600080fd5b505160028054600160a060020a031916600160a060020a0390921691909117905561279f806100606000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a900480635adbfa7a116101085780639bd38101116100a6578063a97a440611610075578063a97a440614610f54578063bb3b6e8014611012578063d1aa0c2014611080578063f346a3a7146110a6576101d3565b80639bd3810114610d7e578063a5843f0814610dfc578063a634301214610e1f578063a97914bf14610edd576101d3565b80637e461258116100e25780637e46125814610ab557806384b7a84a14610b7c5780638cb58ef314610bf95780638f362a3e14610cb7576101d3565b80635adbfa7a1461090b5780635be9672c146109c95780636b568d7614610a37576101d3565b806343de646c116101755780634cff819e1161014f5780634cff819e146106e35780634fe57e7a146107f1578063511bbd9f1461081757806351f604c31461083d576101d3565b806343de646c146105f457806344478e79146106bf5780634cbfa82e146106db576101d3565b80631b610220116101b15780631b610220146103335780632f7f0a12146104415780633e239b231461050f5780633f25c28814610586576101d3565b806303ed6933146101d85780630cc50146146101fc57806316724c44146102bc575b600080fd5b6101e0611212565b60408051600160a060020a039092168252519081900360200190f35b6102ba6004803603606081101561021257600080fd5b810190602081018135602060020a81111561022c57600080fd5b82018360208201111561023e57600080fd5b803590602001918460018302840111602060020a8311171561025f57600080fd5b919390929091602081019035602060020a81111561027c57600080fd5b82018360208201111561028e57600080fd5b803590602001918460018302840111602060020a831117156102af57600080fd5b919350915035611221565b005b6102ba600480360360408110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b919350915035600160a060020a0316611314565b6102ba6004803603606081101561034957600080fd5b810190602081018135602060020a81111561036357600080fd5b82018360208201111561037557600080fd5b803590602001918460018302840111602060020a8311171561039657600080fd5b919390929091602081019035602060020a8111156103b357600080fd5b8201836020820111156103c557600080fd5b803590602001918460018302840111602060020a831117156103e657600080fd5b919390929091602081019035602060020a81111561040357600080fd5b82018360208201111561041557600080fd5b803590602001918460018302840111602060020a8311171561043657600080fd5b5090925090506113d9565b6102ba6004803603606081101561045757600080fd5b600160a060020a038235169190810190604081016020820135602060020a81111561048157600080fd5b82018360208201111561049357600080fd5b803590602001918460018302840111602060020a831117156104b457600080fd5b919390929091602081019035602060020a8111156104d157600080fd5b8201836020820111156104e357600080fd5b803590602001918460018302840111602060020a8311171561050457600080fd5b5090925090506114e7565b6102ba6004803603604081101561052557600080fd5b810190602081018135602060020a81111561053f57600080fd5b82018360208201111561055157600080fd5b803590602001918460018302840111602060020a8311171561057257600080fd5b919350915035600160a060020a03166115bf565b6102ba6004803603602081101561059c57600080fd5b810190602081018135602060020a8111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111602060020a831117156105e957600080fd5b509092509050611667565b6102ba6004803603606081101561060a57600080fd5b810190602081018135602060020a81111561062457600080fd5b82018360208201111561063657600080fd5b803590602001918460018302840111602060020a8311171561065757600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111602060020a831117156106b457600080fd5b509092509050611713565b6106c76117e8565b604080519115158252519081900360200190f35b6106c761186d565b6102ba600480360360608110156106f957600080fd5b810190602081018135602060020a81111561071357600080fd5b82018360208201111561072557600080fd5b803590602001918460018302840111602060020a8311171561074657600080fd5b919390929091602081019035602060020a81111561076357600080fd5b82018360208201111561077557600080fd5b803590602001918460018302840111602060020a8311171561079657600080fd5b919390929091602081019035602060020a8111156107b357600080fd5b8201836020820111156107c557600080fd5b803590602001918460018302840111602060020a831117156107e657600080fd5b5090925090506118d3565b6102ba6004803603602081101561080757600080fd5b5035600160a060020a03166119ca565b6102ba6004803603602081101561082d57600080fd5b5035600160a060020a0316611a49565b6102ba600480360360a081101561085357600080fd5b810190602081018135602060020a81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460018302840111602060020a831117156108a057600080fd5b919390929091602081019035602060020a8111156108bd57600080fd5b8201836020820111156108cf57600080fd5b803590602001918460018302840111602060020a831117156108f057600080fd5b91935091508035906020810135151590604001351515611af1565b6102ba6004803603604081101561092157600080fd5b810190602081018135602060020a81111561093b57600080fd5b82018360208201111561094d57600080fd5b803590602001918460018302840111602060020a8311171561096e57600080fd5b919390929091602081019035602060020a81111561098b57600080fd5b82018360208201111561099d57600080fd5b803590602001918460018302840111602060020a831117156109be57600080fd5b509092509050611bfc565b6102ba600480360360408110156109df57600080fd5b810190602081018135602060020a8111156109f957600080fd5b820183602082011115610a0b57600080fd5b803590602001918460018302840111602060020a83111715610a2c57600080fd5b919350915035611ce4565b6106c760048036036040811015610a4d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111602060020a83111715610aaa57600080fd5b509092509050611d87565b6102ba60048036036060811015610acb57600080fd5b810190602081018135602060020a811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111602060020a83111715610b1857600080fd5b919390929091602081019035602060020a811115610b3557600080fd5b820183602082011115610b4757600080fd5b803590602001918460018302840111602060020a83111715610b6857600080fd5b919350915035600160a060020a0316611e55565b6102ba60048036036060811015610b9257600080fd5b810190602081018135602060020a811115610bac57600080fd5b820183602082011115610bbe57600080fd5b803590602001918460018302840111602060020a83111715610bdf57600080fd5b9193509150600160a060020a038135169060200135611f2a565b6102ba60048036036040811015610c0f57600080fd5b810190602081018135602060020a811115610c2957600080fd5b820183602082011115610c3b57600080fd5b803590602001918460018302840111602060020a83111715610c5c57600080fd5b919390929091602081019035602060020a811115610c7957600080fd5b820183602082011115610c8b57600080fd5b803590602001918460018302840111602060020a83111715610cac57600080fd5b509092509050611fda565b6102ba60048036036060811015610ccd57600080fd5b810190602081018135602060020a811115610ce757600080fd5b820183602082011115610cf957600080fd5b803590602001918460018302840111602060020a83111715610d1a57600080fd5b919390929091602081019035602060020a811115610d3757600080fd5b820183602082011115610d4957600080fd5b803590602001918460018302840111602060020a83111715610d6a57600080fd5b919350915035600160a060020a03166120a4565b6106c760048036036040811015610d9457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610dbe57600080fd5b820183602082011115610dd057600080fd5b803590602001918460018302840111602060020a83111715610df157600080fd5b509092509050612179565b6102ba60048036036040811015610e1257600080fd5b5080359060200135612213565b6102ba60048036036040811015610e3557600080fd5b810190602081018135602060020a811115610e4f57600080fd5b820183602082011115610e6157600080fd5b803590602001918460018302840111602060020a83111715610e8257600080fd5b919390929091602081019035602060020a811115610e9f57600080fd5b820183602082011115610eb157600080fd5b803590602001918460018302840111602060020a83111715610ed257600080fd5b50909250905061227b565b6102ba60048036036040811015610ef357600080fd5b810190602081018135602060020a811115610f0d57600080fd5b820183602082011115610f1f57600080fd5b803590602001918460018302840111602060020a83111715610f4057600080fd5b919350915035600160a060020a0316612345565b6102ba60048036036040811015610f6a57600080fd5b810190602081018135602060020a811115610f8457600080fd5b820183602082011115610f9657600080fd5b803590602001918460018302840111602060020a83111715610fb757600080fd5b919390929091602081019035602060020a811115610fd457600080fd5b820183602082011115610fe657600080fd5b803590602001918460018302840111602060020a8311171561100757600080fd5b5090925090506123ed565b6102ba6004803603604081101561102857600080fd5b810190602081018135602060020a81111561104257600080fd5b82018360208201111561105457600080fd5b803590602001918460018302840111602060020a8311171561107557600080fd5b9193509150356124b7565b6106c76004803603602081101561109657600080fd5b5035600160a060020a031661255a565b611114600480360360208110156110bc57600080fd5b810190602081018135602060020a8111156110d657600080fd5b8201836020820111156110e857600080fd5b803590602001918460018302840111602060020a8311171561110957600080fd5b5090925090506125f3565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561117357818101518382015260200161115b565b50505050905090810190601f1680156111a05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b600054600160a060020a031690565b6000546040517fdbfad71100000000000000000000000000000000000000000000000000000000815260448101839052336064820181905260806004830190815260848301889052600160a060020a039093169263dbfad711928992899289928992899290918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b505af1158015611309573d6000803e3d6000fd5b505050505050505050565b6000546040517f88843041000000000000000000000000000000000000000000000000000000008152600160a060020a03838116602483015233604483018190526060600484019081526064840187905291909316926388843041928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b50505050505050565b6000546040517f1b61022000000000000000000000000000000000000000000000000000000000815260606004820190815260648201889052600160a060020a0390921691631b610220918991899189918991899189918190602481019060448101906084018a8a80828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156114c757600080fd5b505af11580156114db573d6000803e3d6000fd5b50505050505050505050565b6000546040517f8baa8191000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081523360648401819052608060248501908152608485018990529290941693638baa8191938a938a938a938a938a9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f4b20f45f000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692634b20f45f928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f3f25c28800000000000000000000000000000000000000000000000000000000815260206004820190815260248201849052600160a060020a0390921691633f25c28891859185918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050505050565b6000546040517f404bf3eb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152336064830181905260806004840190815260848401899052919093169263404bf3eb9289928992899289928992918190604481019060a401898980828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008060009054906101000a9004600160a060020a0316600160a060020a03166344478e796040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561183c57600080fd5b505af1158015611850573d6000803e3d6000fd5b505050506040513d602081101561186657600080fd5b5051905090565b60008060009054906101000a9004600160a060020a0316600160a060020a0316634cbfa82e6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156118bf57600080fd5b505afa158015611850573d6000803e3d6000fd5b6000546040517fa64d2860000000000000000000000000000000000000000000000000000000008152336064820181905260806004830190815260848301899052600160a060020a039093169263a64d2860928a928a928a928a928a928a9281906024810190604481019060a4018b8b80828437600083820152601f01601f191690910185810384528981526020019050898980828437600083820152601f01601f191690910185810383528781526020019050878780828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156114c757600080fd5b60008054604080517f4fe57e7a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015291519190921692634fe57e7a926024808201939182900301818387803b158015611a2e57600080fd5b505af1158015611a42573d6000803e3d6000fd5b5050505050565b600254600160a060020a03163314611ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546040517f1b04c27600000000000000000000000000000000000000000000000000000000815260448101859052831515606482015282151560848201523360a4820181905260c06004830190815260c483018a9052600160a060020a0390931692631b04c276928b928b928b928b928b928b928b9291908190602481019060e4018b8b80828437600083820152601f01601f191690910184810383528981526020019050898980828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015611bdb57600080fd5b505af1158015611bef573d6000803e3d6000fd5b5050505050505050505050565b6000546040517f655a8ef5000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263655a8ef5928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b5050505050505050565b6000546040517fb554656400000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a039093169263b5546564928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692636b568d76928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b505afa158015611e35573d6000803e3d6000fd5b505050506040513d6020811015611e4b57600080fd5b5051949350505050565b6000546040517f3bc07dea000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660448301523360648301819052608060048401908152608484018990529190931692633bc07dea9289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f04e81f1e000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660248301526044820184905233606483018190526080600484019081526084840188905291909316926304e81f1e92889288928892889290819060a401878780828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517fc3dc8e09000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263c3dc8e09928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517ff922f802000000000000000000000000000000000000000000000000000000008152600160a060020a038381166044830152336064830181905260806004840190815260848401899052919093169263f922f8029289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008054604080517f9bd38101000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692639bd38101928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b60008054604080517fa5843f0800000000000000000000000000000000000000000000000000000000815260048101869052602481018590529051600160a060020a039092169263a5843f089260448084019382900301818387803b1580156116f757600080fd5b6000546040517f5ca5adbe000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a0390931692635ca5adbe928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f1c249912000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692631c249912928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f59a260a3000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a03909316926359a260a3928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f3cf5f33b00000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a0390931692633cf5f33b928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517fd1aa0c20000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163d1aa0c20916024808301926020929190829003018186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d60208110156125eb57600080fd5b505192915050565b600080546040517ff346a3a700000000000000000000000000000000000000000000000000000000815260206004820190815260248201859052606093849390928392600160a060020a039092169163f346a3a791899189918190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561268b57600080fd5b505afa15801561269f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156126c857600080fd5b810190808051602060020a8111156126df57600080fd5b820160208101848111156126f257600080fd5b8151602060020a81118282018710171561270b57600080fd5b50509291906020018051602060020a81111561272657600080fd5b8201602081018481111561273957600080fd5b8151602060020a81118282018710171561275257600080fd5b50506020820151604090920151949b909a509098509296509194505050505056fea165627a7a723058200792b3ef88eb65d0170fc5db45b8a8d8415ab3e975987b02165c64e18cc994af0029 \ No newline at end of file diff --git a/permission/contract/gen/PermissionsUpgradable.bin b/permission/contract/gen/PermissionsUpgradable.bin index 1869a3cba..ec7180ee6 100644 --- a/permission/contract/gen/PermissionsUpgradable.bin +++ b/permission/contract/gen/PermissionsUpgradable.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50604051602080610b2d8339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260146101000a81548160ff02191690831515021790555050610a81806100ac6000396000f3fe608060405234801561001057600080fd5b5060043610610074576000357c0100000000000000000000000000000000000000000000000000000000900480630e32cf901461007957806322bcb39a146100c3578063a75b87d214610107578063e572515c14610151578063f09a40161461019b575b600080fd5b6100816101ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610105600480360360208110156100d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610229565b005b61010f61053c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610159610565565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101fd600480360360408110156101b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058f565b005b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156102ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b60608060606000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc9ba6fa6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160006040518083038186803b15801561037857600080fd5b505afa15801561038c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060808110156103b657600080fd5b8101908080516401000000008111156103ce57600080fd5b828101905060208101848111156103e457600080fd5b815185600182028301116401000000008211171561040157600080fd5b5050929190602001805164010000000081111561041d57600080fd5b8281019050602081018481111561043357600080fd5b815185600182028301116401000000008211171561045057600080fd5b5050929190602001805164010000000081111561046c57600080fd5b8281019050602081018481111561048257600080fd5b815185600182028301116401000000008211171561049f57600080fd5b50509291906020018051906020019092919050505093509350935093506104c985858585856107a4565b84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610535600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661097d565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b600260149054906101000a900460ff161515156106d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616e206265206578656375746564206f6e6c79206f6e63650000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610785600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661097d565b6001600260146101000a81548160ff0219169083151502179055505050565b8473ffffffffffffffffffffffffffffffffffffffff1663f5ad584a858585856040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b83811015610841578082015181840152602081019050610826565b50505050905090810190601f16801561086e5780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b838110156108a757808201518184015260208101905061088c565b50505050905090810190601f1680156108d45780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b8381101561090d5780820151818401526020810190506108f2565b50505050905090810190601f16801561093a5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561095e57600080fd5b505af1158015610972573d6000803e3d6000fd5b505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663511bbd9f826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610a3a57600080fd5b505af1158015610a4e573d6000803e3d6000fd5b505050505056fea165627a7a72305820378cf538b83ea9abe4413391f6284a8f7e800144d9df63dcbba67da0f58949500029 \ No newline at end of file +608060405234801561001057600080fd5b5060405160208061079f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556002805460a060020a60ff021916905561072d806100726000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a60003504630e32cf90811461005f57806322bcb39a14610083578063a75b87d2146100ab578063e572515c146100b3578063f09a4016146100bb575b600080fd5b6100676100e9565b60408051600160a060020a039092168252519081900360200190f35b6100a96004803603602081101561009957600080fd5b5035600160a060020a03166100f8565b005b610067610341565b610067610350565b6100a9600480360360408110156100d157600080fd5b50600160a060020a038135811691602001351661035f565b600154600160a060020a031690565b600054600160a060020a0316331461017157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60608060606000600160009054906101000a9004600160a060020a0316600160a060020a031663cc9ba6fa6040518163ffffffff1660e060020a02815260040160006040518083038186803b1580156101c957600080fd5b505afa1580156101dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561020657600080fd5b81019080805164010000000081111561021e57600080fd5b8201602081018481111561023157600080fd5b815164010000000081118282018710171561024b57600080fd5b5050929190602001805164010000000081111561026757600080fd5b8201602081018481111561027a57600080fd5b815164010000000081118282018710171561029457600080fd5b505092919060200180516401000000008111156102b057600080fd5b820160208101848111156102c357600080fd5b81516401000000008111828201871017156102dd57600080fd5b50506020909101519498509296509194509192506103029150869050858585856104e2565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03878116919091179182905561033a9116610686565b5050505050565b600054600160a060020a031690565b600254600160a060020a031690565b600054600160a060020a031633146103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff161561046257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f63616e206265206578656375746564206f6e6c79206f6e636500000000000000604482015290519081900360640190fd5b60018054600160a060020a0380841673ffffffffffffffffffffffffffffffffffffffff199283161792839055600280548683169316929092179091556104a99116610686565b50506002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b84600160a060020a031663f5ad584a858585856040518563ffffffff1660e060020a0281526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b8381101561055657818101518382015260200161053e565b50505050905090810190601f1680156105835780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156105b657818101518382015260200161059e565b50505050905090810190601f1680156105e35780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156106165781810151838201526020016105fe565b50505050905090810190601f1680156106435780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561066757600080fd5b505af115801561067b573d6000803e3d6000fd5b505050505050505050565b600254604080517f511bbd9f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163511bbd9f91602480830192600092919082900301818387803b1580156106ed57600080fd5b505af115801561033a573d6000803e3d6000fdfea165627a7a723058204c1d81c735b447834c79ffdd293aa096893937355f775356ad02681fbe60b4690029 \ No newline at end of file diff --git a/permission/contract/gen/RoleManager.bin b/permission/contract/gen/RoleManager.bin index 6fc00b0d5..a2eac008d 100644 --- a/permission/contract/gen/RoleManager.bin +++ b/permission/contract/gen/RoleManager.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516020806129598339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506128c8806100916000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063a634301211610078578063a634301214610552578063abf5739f14610620578063be322e5414610821578063deb16ba71461095c576100a5565b80631870aba3146100aa5780637b7135791461028557806387f55d31146103f9578063a451d4a814610417575b600080fd5b610176600480360360408110156100c057600080fd5b81019080803590602001906401000000008111156100dd57600080fd5b8201836020820111156100ef57600080fd5b8035906020019184600183028401116401000000008311171561011157600080fd5b90919293919293908035906020019064010000000081111561013257600080fd5b82018360208201111561014457600080fd5b8035906020019184600183028401116401000000008311171561016657600080fd5b9091929391929390505050610a97565b604051808060200180602001878152602001861515151581526020018515151515815260200184151515158152602001838103835289818151815260200191508051906020019080838360005b838110156101de5780820151818401526020810190506101c3565b50505050905090810190601f16801561020b5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b83811015610244578082015181840152602081019050610229565b50505050905090810190601f1680156102715780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103f7600480360360a081101561029b57600080fd5b81019080803590602001906401000000008111156102b857600080fd5b8201836020820111156102ca57600080fd5b803590602001918460018302840111640100000000831117156102ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561034f57600080fd5b82018360208201111561036157600080fd5b8035906020019184600183028401116401000000008311171561038357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803515159060200190929190803515159060200190929190505050610e9b565b005b6104016114db565b6040518082815260200191505060405180910390f35b6104436004803603602081101561042d57600080fd5b81019080803590602001909291905050506114e8565b604051808060200180602001878152602001861515151581526020018515151515815260200184151515158152602001838103835289818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b838110156105115780820151818401526020810190506104f6565b50505050905090810190601f16801561053e5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61061e6004803603604081101561056857600080fd5b810190808035906020019064010000000081111561058557600080fd5b82018360208201111561059757600080fd5b803590602001918460018302840111640100000000831117156105b957600080fd5b9091929391929390803590602001906401000000008111156105da57600080fd5b8201836020820111156105ec57600080fd5b8035906020019184600183028401116401000000008311171561060e57600080fd5b9091929391929390505050611729565b005b6108076004803603606081101561063657600080fd5b810190808035906020019064010000000081111561065357600080fd5b82018360208201111561066557600080fd5b8035906020019184600183028401116401000000008311171561068757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156106ea57600080fd5b8201836020820111156106fc57600080fd5b8035906020019184600183028401116401000000008311171561071e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561078157600080fd5b82018360208201111561079357600080fd5b803590602001918460018302840111640100000000831117156107b557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b08565b604051808215151515815260200191505060405180910390f35b6109426004803603606081101561083757600080fd5b810190808035906020019064010000000081111561085457600080fd5b82018360208201111561086657600080fd5b8035906020019184600183028401116401000000008311171561088857600080fd5b9091929391929390803590602001906401000000008111156108a957600080fd5b8201836020820111156108bb57600080fd5b803590602001918460018302840111640100000000831117156108dd57600080fd5b9091929391929390803590602001906401000000008111156108fe57600080fd5b82018360208201111561091057600080fd5b8035906020019184600183028401116401000000008311171561093257600080fd5b9091929391929390505050611dc6565b604051808215151515815260200191505060405180910390f35b610a7d6004803603606081101561097257600080fd5b810190808035906020019064010000000081111561098f57600080fd5b8201836020820111156109a157600080fd5b803590602001918460018302840111640100000000831117156109c357600080fd5b9091929391929390803590602001906401000000008111156109e457600080fd5b8201836020820111156109f657600080fd5b80359060200191846001830284011164010000000083111715610a1857600080fd5b909192939192939080359060200190640100000000811115610a3957600080fd5b820183602082011115610a4b57600080fd5b80359060200191846001830284011164010000000083111715610a6d57600080fd5b9091929391929390505050612252565b604051808215151515815260200191505060405180910390f35b606080600080600080610b438a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506020604051908101604052806000815250611b08565b1515610bc757898960008060008085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509450909192939450602060405190810160405280600081525093929190839350955095509550955095509550610e8e565b6000610c5b8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b9050600181815481101515610c6c57fe5b9060005260206000209060040201600001600182815481101515610c8c57fe5b9060005260206000209060040201600101600183815481101515610cac57fe5b906000526020600020906004020160020154600184815481101515610ccd57fe5b906000526020600020906004020160030160009054906101000a900460ff16600185815481101515610cfb57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610d2957fe5b906000526020600020906004020160030160029054906101000a900460ff16858054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ddd5780601f10610db257610100808354040283529160200191610ddd565b820191906000526020600020905b815481529060010190602001808311610dc057829003601f168201915b50505050509550848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e795780601f10610e4e57610100808354040283529160200191610e79565b820191906000526020600020905b815481529060010190602001808311610e5c57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015610f1e57600080fd5b505afa158015610f32573d6000803e3d6000fd5b505050506040513d6020811015610f4857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ffb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008787604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561104a57808201518184015260208101905061102f565b50505050905090810190601f1680156110775780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156110b0578082015181840152602081019050611095565b50505050905090810190601f1680156110dd5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205414151561117e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f726f6c652065786973747320666f7220746865206f726700000000000000000081525060200191505060405180910390fd5b600360008154809291906001019190505550600354600260008787604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111e05780820151818401526020810190506111c5565b50505050905090810190601f16801561120d5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561124657808201518184015260208101905061122b565b50505050905090810190601f1680156112735780820380516001836020036101000a031916815260200191505b5094505050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160c06040519081016040528087815260200186815260200185815260200184151581526020018315158152602001600115158152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000190805190602001906113209291906127f7565b50602082015181600101908051906020019061133d9291906127f7565b506040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff0219169083151502179055505050507fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c85858585856040518080602001806020018681526020018515151515815260200184151515158152602001838103835288818151815260200191508051906020019080838360005b8381101561142f578082015181840152602081019050611414565b50505050905090810190601f16801561145c5780820380516001836020036101000a031916815260200191505b50838103825287818151815260200191508051906020019080838360005b8381101561149557808201518184015260208101905061147a565b50505050905090810190601f1680156114c25780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6000600180549050905090565b60608060008060008060018781548110151561150057fe5b906000526020600020906004020160000160018881548110151561152057fe5b906000526020600020906004020160010160018981548110151561154057fe5b90600052602060002090600402016002015460018a81548110151561156157fe5b906000526020600020906004020160030160009054906101000a900460ff1660018b81548110151561158f57fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c8154811015156115bd57fe5b906000526020600020906004020160030160029054906101000a900460ff16858054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116715780601f1061164657610100808354040283529160200191611671565b820191906000526020600020905b81548152906001019060200180831161165457829003601f168201915b50505050509550848054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561170d5780601f106116e25761010080835404028352916020019161170d565b820191906000526020600020905b8154815290600101906020018083116116f057829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156117ac57600080fd5b505afa1580156117c0573d6000803e3d6000fd5b505050506040513d60208110156117d657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b600060026000868686866040516020018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020541415151561199b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f726f6c6520646f6573206e6f742065786973740000000000000000000000000081525060200191505060405180910390fd5b6000611a2f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b90506000600182815481101515611a4257fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a15050505050565b6000806000600260008787604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611b5a578082015181840152602081019050611b3f565b50505050905090810190601f168015611b875780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611bc0578082015181840152602081019050611ba5565b50505050905090810190601f168015611bed5780820380516001836020036101000a031916815260200191505b5094505050505060405160208183030381529060405280519060200120815260200190815260200160002054141515611c6257611c2a85856126de565b9050600181815481101515611c3b57fe5b906000526020600020906004020160030160029054906101000a900460ff16915050611dbf565b6000600260008786604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611cb1578082015181840152602081019050611c96565b50505050905090810190601f168015611cde5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611d17578082015181840152602081019050611cfc565b50505050905090810190601f168015611d445780820380516001836020036101000a031916815260200191505b5094505050505060405160208183030381529060405280519060200120815260200190815260200160002054141515611db957611d8185846126de565b9050600181815481101515611d9257fe5b906000526020600020906004020160030160029054906101000a900460ff16915050611dbf565b60009150505b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611e4b57600080fd5b505afa158015611e5f573d6000803e3d6000fd5b505050506040513d6020811015611e7557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b611fff87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611b08565b151561200e5760009050612248565b600080600260008a8a8a8a6040516020018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f82011690508083019250505096505050505050506040516020818303038152906040528051906020012081526020019081526020016000205414151561214b5761214488888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b90506121e0565b6121dd88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b90505b6001818154811015156121ef57fe5b906000526020600020906004020160030160029054906101000a900460ff168015612244575060018181548110151561222457fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156122d757600080fd5b505afa1580156122eb573d6000803e3d6000fd5b505050506040513d602081101561230157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b61248b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611b08565b151561249a57600090506126d4565b600080600260008a8a8a8a6040516020018080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020541415156125d7576125d088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b905061266c565b61266988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506126de565b90505b60018181548110151561267b57fe5b906000526020600020906004020160030160029054906101000a900460ff1680156126d057506001818154811015156126b057fe5b906000526020600020906004020160030160009054906101000a900460ff165b9150505b9695505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561272f578082015181840152602081019050612714565b50505050905090810190601f16801561275c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561279557808201518184015260208101905061277a565b50505050905090810190601f1680156127c25780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061283857805160ff1916838001178555612866565b82800160010185558215612866579182015b8281111561286557825182559160200191906001019061284a565b5b5090506128739190612877565b5090565b61289991905b8082111561289557600081600090555060010161287d565b5090565b9056fea165627a7a7230582006ce3e54be3a54da4e284827f5291f19d7bc4a8fa63cfe3ce43f1e50c45ba2f00029 \ No newline at end of file +608060405234801561001057600080fd5b5060405160208061221f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556121bd806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a90048063a63430121161005f578063a6343012146103c6578063abf5739f14610488578063be322e5414610650578063deb16ba7146107645761008c565b80631870aba3146100915780637b7135791461025157806387f55d311461038f578063a451d4a8146103a9575b600080fd5b610153600480360360408110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b509092509050610878565b604080519081018590528315156060820152821515608082015281151560a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156101b0578181015183820152602001610198565b50505050905090810190601f1680156101dd5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b838110156102105781810151838201526020016101f8565b50505050905090810190601f16801561023d5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61038d600480360360a081101561026757600080fd5b81019060208101813564010000000081111561028257600080fd5b82018360208201111561029457600080fd5b803590602001918460018302840111640100000000831117156102b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561030957600080fd5b82018360208201111561031b57600080fd5b8035906020019184600183028401116401000000008311171561033d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135151590604001351515610bfe565b005b610397611149565b60408051918252519081900360200190f35b610153600480360360208110156103bf57600080fd5b5035611150565b61038d600480360360408110156103dc57600080fd5b8101906020810181356401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b91939092909160208101903564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b50909250905061136e565b61063c6004803603606081101561049e57600080fd5b8101906020810181356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460018302840111640100000000831117156104ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561054057600080fd5b82018360208201111561055257600080fd5b8035906020019184600183028401116401000000008311171561057457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105c757600080fd5b8201836020820111156105d957600080fd5b803590602001918460018302840111640100000000831117156105fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611666945050505050565b604080519115158252519081900360200190f35b61063c6004803603606081101561066657600080fd5b81019060208101813564010000000081111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111640100000000831117156106b557600080fd5b9193909290916020810190356401000000008111156106d357600080fd5b8201836020820111156106e557600080fd5b8035906020019184600183028401116401000000008311171561070757600080fd5b91939092909160208101903564010000000081111561072557600080fd5b82018360208201111561073757600080fd5b8035906020019184600183028401116401000000008311171561075957600080fd5b5090925090506118da565b61063c6004803603606081101561077a57600080fd5b81019060208101813564010000000081111561079557600080fd5b8201836020820111156107a757600080fd5b803590602001918460018302840111640100000000831117156107c957600080fd5b9193909290916020810190356401000000008111156107e757600080fd5b8201836020820111156107f957600080fd5b8035906020019184600183028401116401000000008311171561081b57600080fd5b91939092909160208101903564010000000081111561083957600080fd5b82018360208201111561084b57600080fd5b8035906020019184600183028401116401000000008311171561086d57600080fd5b509092509050611c57565b6060806000806000806109028a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092018290525060408051602081019091529081529250611666915050565b151561096c57898960008060008085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152939f50929d50959b509399509197509550610bf1945050505050565b60006109e18b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250611fc992505050565b90506001818154811015156109f257fe5b9060005260206000209060040201600001600182815481101515610a1257fe5b9060005260206000209060040201600101600183815481101515610a3257fe5b906000526020600020906004020160020154600184815481101515610a5357fe5b60009182526020909120600360049092020101546001805460ff9092169186908110610a7b57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610aa957fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff169290918891830182828015610b4e5780601f10610b2357610100808354040283529160200191610b4e565b820191906000526020600020905b815481529060010190602001808311610b3157829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015610bdc5780601f10610bb157610100808354040283529160200191610bdc565b820191906000526020600020905b815481529060010190602001808311610bbf57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d6020811015610c7857600080fd5b5051600160a060020a03163314610cc7576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610d11578181015183820152602001610cf9565b50505050905090810190601f168015610d3e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d71578181015183820152602001610d59565b50505050905090810190601f168015610d9e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515610e23576040805160e560020a62461bcd02815260206004820152601760248201527f726f6c652065786973747320666f7220746865206f7267000000000000000000604482015290519081900360640190fd5b60038054600101908190556040805160208082018381528951606084015289516002946000948c948c94938493830192608001918701908083838b5b83811015610e77578181015183820152602001610e5f565b50505050905090810190601f168015610ea45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610ed7578181015183820152602001610ebf565b50505050905090810190601f168015610f045780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208852878201989098529587016000908120989098555050845160c0810186528b81528085018b905294850189905250505084151560608301528315156080830152600160a083018190528054808201808355919094528251805191946004027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192610fae928492909101906120d9565b506020828101518051610fc792600185019201906120d9565b5060408281015160028301556060808401516003909301805460808087015160a09788015160ff199093169615159690961761ff001916610100961515969096029590951762ff0000191662010000911515919091021790558151918201889052861515908201528415159181019190915281815287519181019190915286517fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c92508791879187918791879190819060208083019160c08401918a019080838360005b838110156110a357818101518382015260200161108b565b50505050905090810190601f1680156110d05780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156111035781810151838201526020016110eb565b50505050905090810190601f1680156111305780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6001545b90565b60608060008060008060018781548110151561116857fe5b906000526020600020906004020160000160018881548110151561118857fe5b90600052602060002090600402016001016001898154811015156111a857fe5b90600052602060002090600402016002015460018a8154811015156111c957fe5b60009182526020909120600360049092020101546001805460ff909216918c9081106111f157fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c81548110151561121f57fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff1692909188918301828280156112c45780601f10611299576101008083540402835291602001916112c4565b820191906000526020600020905b8154815290600101906020018083116112a757829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156113525780601f1061132757610100808354040283529160200191611352565b820191906000526020600020905b81548152906001019060200180831161133557829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d60208110156113e857600080fd5b5051600160a060020a03163314611437576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b60026000858585856040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060405160208183030381529060405280519060200120815260200190815260200160002054600014151515611523576040805160e560020a62461bcd02815260206004820152601360248201527f726f6c6520646f6573206e6f7420657869737400000000000000000000000000604482015290519081900360640190fd5b600061159885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611fc992505050565b905060006001828154811015156115ab57fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156116b357818101518382015260200161169b565b50505050905090810190601f1680156116e05780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156117135781810151838201526020016116fb565b50505050905090810190601f1680156117405780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156117b75761177f8585611fc9565b905060018181548110151561179057fe5b906000526020600020906004020160030160029054906101000a900460ff169150506118d3565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156118015781810151838201526020016117e9565b50505050905090810190601f16801561182e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611861578181015183820152602001611849565b50505050905090810190601f16801561188e5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156118cd5761177f8584611fc9565b60009150505b9392505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561192c57600080fd5b505afa158015611940573d6000803e3d6000fd5b505050506040513d602081101561195657600080fd5b5051600160a060020a031633146119a5576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611a4c87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611a5a57506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611b7157611b6a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611be7565b611be488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611bf557fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611c2957fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ca957600080fd5b505afa158015611cbd573d6000803e3d6000fd5b505050506040513d6020811015611cd357600080fd5b5051600160a060020a03163314611d22576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611dc987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611dd757506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611eee57611ee788888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611f64565b611f6188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611f7257fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611fa657fe5b600091825260209091206004909102016003015460ff1698975050505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015612017578181015183820152602001611fff565b50505050905090810190601f1680156120445780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561207757818101518382015260200161205f565b50505050905090810190601f1680156120a45780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061211a57805160ff1916838001178555612147565b82800160010185558215612147579182015b8281111561214757825182559160200191906001019061212c565b50612153929150612157565b5090565b61114d91905b80821115612153576000815560010161215d56fe696e76616c69642063616c6c6572000000000000000000000000000000000000a165627a7a7230582092f62599fe8c2f4b530e18c69dc5dfe23290e7e9ecbcfcaba0161f05c31ab9980029 \ No newline at end of file diff --git a/permission/contract/gen/VoterManager.bin b/permission/contract/gen/VoterManager.bin index 327ba251b..5b19cf670 100644 --- a/permission/contract/gen/VoterManager.bin +++ b/permission/contract/gen/VoterManager.bin @@ -1 +1 @@ -6080604052600060035534801561001557600080fd5b506040516020806129498339810180604052602081101561003557600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506128b3806100966000396000f3fe608060405234801561001057600080fd5b5060043610610074576000357c010000000000000000000000000000000000000000000000000000000090048063014e6acc146100795780635607395b1461021157806359cbd6fe146102aa578063b021386414610343578063e98ac22d146103fe575b600080fd5b6100f06004803603602081101561008f57600080fd5b81019080803590602001906401000000008111156100ac57600080fd5b8201836020820111156100be57600080fd5b803590602001918460018302840111640100000000831117156100e057600080fd5b909192939192939050505061054b565b6040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561016c578082015181840152602081019050610151565b50505050905090810190601f1680156101995780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b838110156101d25780820151818401526020810190506101b7565b50505050905090810190601f1680156101ff5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b6102a86004803603604081101561022757600080fd5b810190808035906020019064010000000081111561024457600080fd5b82018360208201111561025657600080fd5b8035906020019184600183028401116401000000008311171561027857600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108fa565b005b610341600480360360408110156102c057600080fd5b81019080803590602001906401000000008111156102dd57600080fd5b8201836020820111156102ef57600080fd5b8035906020019184600183028401116401000000008311171561031157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611336565b005b6103e46004803603606081101561035957600080fd5b810190808035906020019064010000000081111561037657600080fd5b82018360208201111561038857600080fd5b803590602001918460018302840111640100000000831117156103aa57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611728565b604051808215151515815260200191505060405180910390f35b610549600480360360a081101561041457600080fd5b810190808035906020019064010000000081111561043157600080fd5b82018360208201111561044357600080fd5b8035906020019184600183028401116401000000008311171561046557600080fd5b90919293919293908035906020019064010000000081111561048657600080fd5b82018360208201111561049857600080fd5b803590602001918460018302840111640100000000831117156104ba57600080fd5b9091929391929390803590602001906401000000008111156104db57600080fd5b8201836020820111156104ed57600080fd5b8035906020019184600183028401116401000000008311171561050f57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e0a565b005b6060806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156105d457600080fd5b505afa1580156105e8573d6000803e3d6000fd5b505050506040513d60208110156105fe57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b600061070087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b905060018181548110151561071157fe5b90600052602060002090600b020160040160000160018281548110151561073457fe5b90600052602060002090600b020160040160010160018381548110151561075757fe5b90600052602060002090600b020160040160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018481548110151561079b57fe5b90600052602060002090600b020160040160030154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108455780601f1061081a57610100808354040283529160200191610845565b820191906000526020600020905b81548152906001019060200180831161082857829003601f168201915b50505050509350828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108e15780601f106108b6576101008083540402835291602001916108e1565b820191906000526020600020905b8154815290600101906020018083116108c457829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561097d57600080fd5b505afa158015610991573d6000803e3d6000fd5b505050506040513d60208110156109a757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b600060026000858560405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020541415610e815760036000815480929190600101919050555060035460026000858560405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600060018054809190600101610b5c919061258c565b90508383600183815481101515610b6f57fe5b90600052602060002090600b02016000019190610b8d9291906125be565b5060018082815481101515610b9e57fe5b90600052602060002090600b02016001018190555060018082815481101515610bc357fe5b90600052602060002090600b0201600201819055506000600182815481101515610be957fe5b90600052602060002090600b0201600301819055506020604051908101604052806000815250600182815481101515610c1e57fe5b90600052602060002090600b02016004016000019080519060200190610c4592919061263e565b506020604051908101604052806000815250600182815481101515610c6657fe5b90600052602060002090600b02016004016001019080519060200190610c8d92919061263e565b506000600182815481101515610c9f57fe5b90600052602060002090600b020160040160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600182815481101515610d0257fe5b90600052602060002090600b020160040160030181905550600181815481101515610d2957fe5b90600052602060002090600b020160010154600182815481101515610d4a57fe5b90600052602060002090600b020160090160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181815481101515610dab57fe5b90600052602060002090600b020160080160408051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff0219169083151502179055505050505061129a565b6000610ed084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b90506000600182815481101515610ee357fe5b90600052602060002090600b020160090160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156110fe57600181815481101515610f4757fe5b90600052602060002090600b020160010160008154809291906001019190505550600181815481101515610f7757fe5b90600052602060002090600b020160010154600182815481101515610f9857fe5b90600052602060002090600b020160090160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181815481101515610ff957fe5b90600052602060002090600b020160080160408051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff0219169083151502179055505050506001818154811015156110d857fe5b90600052602060002090600b020160020160008154809291906001019190505550611298565b600061114e85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050846123fe565b90506001151560018381548110151561116357fe5b90600052602060002090600b02016008018281548110151561118157fe5b9060005260206000200160000160149054906101000a900460ff16151514151515611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f616c7265616479206120766f746572000000000000000000000000000000000081525060200191505060405180910390fd5b6001808381548110151561122457fe5b90600052602060002090600b02016008018281548110151561124257fe5b9060005260206000200160000160146101000a81548160ff02191690831515021790555060018281548110151561127557fe5b90600052602060002090600b020160020160008154809291906001019190505550505b505b7f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d3457483838360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156113b957600080fd5b505afa1580156113cd573d6000803e3d6000fd5b505050506040513d60208110156113e357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081600115156114ea8383612475565b1515141515611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d757374206265206120766f746572000000000000000000000000000000000081525060200191505060405180910390fd5b60006115b086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b9050600061160287878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050866123fe565b905060018281548110151561161357fe5b90600052602060002090600b02016002016000815480929190600190039190505550600060018381548110151561164657fe5b90600052602060002090600b02016008018281548110151561166457fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b687878760405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a150505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156117ad57600080fd5b505afa1580156117c1573d6000803e3d6000fd5b505050506040513d60208110156117d757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083600115156118de8383612475565b1515141515611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6d757374206265206120766f746572000000000000000000000000000000000081525060200191505060405180910390fd5b600115156119a788888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086612554565b1515141515611a1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b6000611a6d88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b905060011515600182815481101515611a8257fe5b90600052602060002090600b0201600a01600083815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611b67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e6e6f7420646f75626c6520766f7465000000000000000000000000000081525060200191505060405180910390fd5b600181815481101515611b7657fe5b90600052602060002090600b02016003016000815480929190600101919050555060018082815481101515611ba757fe5b90600052602060002090600b0201600a01600083815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a16002600182815481101515611c9157fe5b90600052602060002090600b020160020154811515611cac57fe5b04600182815481101515611cbc57fe5b90600052602060002090600b0201600301541115611dfa576020604051908101604052806000815250600182815481101515611cf457fe5b90600052602060002090600b02016004016000019080519060200190611d1b92919061263e565b506020604051908101604052806000815250600182815481101515611d3c57fe5b90600052602060002090600b02016004016001019080519060200190611d6392919061263e565b506000600182815481101515611d7557fe5b90600052602060002090600b020160040160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600182815481101515611dd857fe5b90600052602060002090600b0201600401600301819055506001935050611e00565b60009350505b5050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e32cf906040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611e8d57600080fd5b505afa158015611ea1573d6000803e3d6000fd5b505050506040513d6020811015611eb757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c69642063616c6c657200000000000000000000000000000000000081525060200191505060405180910390fd5b611fb988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506000612554565b1515612010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806128546034913960400191505060405180910390fd5b600061205f89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612353565b9050868660018381548110151561207257fe5b90600052602060002090600b020160040160000191906120939291906125be565b5084846001838154811015156120a557fe5b90600052602060002090600b020160040160010191906120c69291906125be565b50826001828154811015156120d757fe5b90600052602060002090600b020160040160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160018281548110151561213957fe5b90600052602060002090600b02016004016003018190555060008090505b60018281548110151561216657fe5b90600052602060002090600b0201600801805490508110156122be5760018281548110151561219157fe5b90600052602060002090600b0201600801818154811015156121af57fe5b9060005260206000200160000160149054906101000a900460ff16156122b15760006001838154811015156121e057fe5b90600052602060002090600b0201600a016000848152602001908152602001600020600060018581548110151561221357fe5b90600052602060002090600b02016008018481548110151561223157fe5b9060005260206000200160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080600101915050612157565b5060006001828154811015156122d057fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561239f578082015181840152602081019050612384565b50505050905090810190601f1680156123cc5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b60008061240a84612353565b90506001808281548110151561241c57fe5b90600052602060002090600b020160090160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540391505092915050565b60008061248184612353565b9050600060018281548110151561249457fe5b90600052602060002090600b020160090160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156124f357600091505061254e565b60006124ff85856123fe565b905060018281548110151561251057fe5b90600052602060002090600b02016008018181548110151561252e57fe5b9060005260206000200160000160149054906101000a900460ff16925050505b92915050565b600081600161256285612353565b81548110151561256e57fe5b90600052602060002090600b02016004016003015414905092915050565b8154818355818111156125b957600b0281600b0283600052602060002091820191016125b891906126be565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125ff57803560ff191683800117855561262d565b8280016001018555821561262d579182015b8281111561262c578235825591602001919060010190612611565b5b50905061263a919061276b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061267f57805160ff19168380011785556126ad565b828001600101855582156126ad579182015b828111156126ac578251825591602001919060010190612691565b5b5090506126ba919061276b565b5090565b61276891905b8082111561276457600080820160006126dd9190612790565b600182016000905560028201600090556003820160009055600482016000808201600061270a9190612790565b60018201600061271a9190612790565b6002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055505060088201600061275b91906127d8565b50600b016126c4565b5090565b90565b61278d91905b80821115612789576000816000905550600101612771565b5090565b90565b50805460018160011615610100020316600290046000825580601f106127b657506127d5565b601f0160209004906000526020600020908101906127d4919061276b565b5b50565b50805460008255906000526020600020908101906127f691906127f9565b50565b61285091905b8082111561284c57600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff0219169055506001016127ff565b5090565b9056fe6974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a723058209bcb200dffe1c7dbbf4661d7181f768f85d4dda30f18c49d34e48846e15a15430029 \ No newline at end of file +6080604052600060035534801561001557600080fd5b506040516020806120968339810180604052602081101561003557600080fd5b505160008054600160a060020a03909216600160a060020a031990921691909117905561202f806100676000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a6000350463014e6acc811461005f5780635607395b146101cd57806359cbd6fe14610248578063b0213864146102c1578063e98ac22d14610354575b600080fd5b6100cf6004803603602081101561007557600080fd5b81019060208101813564010000000081111561009057600080fd5b8201836020820111156100a257600080fd5b803590602001918460018302840111640100000000831117156100c457600080fd5b509092509050610477565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561018e578181015183820152602001610176565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b610246600480360360408110156101e357600080fd5b8101906020810181356401000000008111156101fe57600080fd5b82018360208201111561021057600080fd5b8035906020019184600183028401116401000000008311171561023257600080fd5b919350915035600160a060020a031661074e565b005b6102466004803603604081101561025e57600080fd5b81019060208101813564010000000081111561027957600080fd5b82018360208201111561028b57600080fd5b803590602001918460018302840111640100000000831117156102ad57600080fd5b919350915035600160a060020a0316610f63565b610340600480360360608110156102d757600080fd5b8101906020810181356401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b9193509150600160a060020a03813516906020013561124d565b604080519115158252519081900360200190f35b610246600480360360a081101561036a57600080fd5b81019060208101813564010000000081111561038557600080fd5b82018360208201111561039757600080fd5b803590602001918460018302840111640100000000831117156103b957600080fd5b9193909290916020810190356401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184600183028401116401000000008311171561040b57600080fd5b91939092909160208101903564010000000081111561042957600080fd5b82018360208201111561043b57600080fd5b8035906020019184600183028401116401000000008311171561045d57600080fd5b9193509150600160a060020a038135169060200135611772565b6060806000806000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051600160a060020a03163314610546576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b600061058787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b905060018181548110151561059857fe5b90600052602060002090600b02016004016000016001828154811015156105bb57fe5b90600052602060002090600b02016004016001016001838154811015156105de57fe5b600091825260209091206006600b90920201015460018054600160a060020a03909216918590811061060c57fe5b60009182526020918290206007600b909202010154845460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928691908301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156107355780601f1061070a57610100808354040283529160200191610735565b820191906000526020600020905b81548152906001019060200180831161071857829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561079e57600080fd5b505afa1580156107b2573d6000803e3d6000fd5b505050506040513d60208110156107c857600080fd5b5051600160a060020a03163314610817576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b60026000848460405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415610bac576003805460010190819055604080516020808201908152918101859052600291600091879187918190606001848480828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020819055506000600180548091906001016109119190611d54565b9050838360018381548110151561092457fe5b6000918252602090912061093e93600b9092020191611d85565b506001808281548110151561094f57fe5b90600052602060002090600b0201600101819055506001808281548110151561097457fe5b90600052602060002090600b020160020181905550600060018281548110151561099a57fe5b90600052602060002090600b02016003018190555060206040519081016040528060008152506001828154811015156109cf57fe5b90600052602060002090600b020160040160000190805190602001906109f6929190611e03565b506040805160208101909152600081526001805483908110610a1457fe5b90600052602060002090600b02016004016001019080519060200190610a3b929190611e03565b506000600182815481101515610a4d57fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393909316929092179091556001805483908110610a9a57fe5b600091825260209091206007600b9092020101556001805482908110610abc57fe5b90600052602060002090600b020160010154600182815481101515610add57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610b1457fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b9690960290930160080180549384018155865292909420935193018054925173ffffffffffffffffffffffffffffffffffffffff19909316939091169290921774ff0000000000000000000000000000000000000000191660a060020a9115159190910217905550610eed565b6000610bed84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600181815481101515610bfe57fe5b60009182526020808320600160a060020a03861684526009600b9093020191909101905260409020541515610d7b576001805482908110610c3b57fe5b600091825260209091206001600b909202018101805482019055805482908110610c6157fe5b90600052602060002090600b020160010154600182815481101515610c8257fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610cb957fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b969096029093016008018054808501825590875293909520905192018054935173ffffffffffffffffffffffffffffffffffffffff19909416929094169190911774ff0000000000000000000000000000000000000000191660a060020a9215159290920291909117909155805482908110610d5c57fe5b600091825260209091206002600b909202010180546001019055610eeb565b6000610dbe85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611c1c915050565b9050600182815481101515610dcf57fe5b90600052602060002090600b020160080181815481101515610ded57fe5b60009182526020909120015460a060020a900460ff16151560011415610e5d576040805160e560020a62461bcd02815260206004820152600f60248201527f616c7265616479206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b60018083815481101515610e6d57fe5b90600052602060002090600b020160080182815481101515610e8b57fe5b6000918252602090912001805491151560a060020a0274ff0000000000000000000000000000000000000000199092169190911790556001805483908110610ecf57fe5b600091825260209091206002600b909202010180546001019055505b505b60408051600160a060020a03831660208201528181529081018390527f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574908490849084908060608101858580828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d6020811015610fdd57600080fd5b5051600160a060020a0316331461102c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250611070915083905082611c6e565b15156001146110c9576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b600061110a86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600061114f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611c1c915050565b905060018281548110151561116057fe5b6000918252602082206002600b90920201018054600019019055600180548490811061118857fe5b90600052602060002090600b0201600801828154811015156111a657fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b6878787604051808060200183600160a060020a0316600160a060020a031681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d60208110156112c957600080fd5b5051600160a060020a03163314611318576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061135c915083905082611c6e565b15156001146113b5576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b6113f687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250611d1e915050565b151560011461144f576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061149088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b90506001818154811015156114a157fe5b60009182526020808320848452600a600b909302019190910181526040808320600160a060020a038a16845290915290205460ff16151560011415611530576040805160e560020a62461bcd02815260206004820152601260248201527f63616e6e6f7420646f75626c6520766f74650000000000000000000000000000604482015290519081900360640190fd5b600180548290811061153e57fe5b600091825260209091206003600b909202010180546001908101909155805481908390811061156957fe5b60009182526020808320858452600b92909202909101600a0181526040808320600160a060020a038b168452825291829020805460ff19169315159390931790925580518281529182018990527f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a1600260018281548110151561161957fe5b90600052602060002090600b02016002015481151561163457fe5b0460018281548110151561164457fe5b90600052602060002090600b020160030154111561176257604080516020810190915260008152600180548390811061167957fe5b90600052602060002090600b020160040160000190805190602001906116a0929190611e03565b5060408051602081019091526000815260018054839081106116be57fe5b90600052602060002090600b020160040160010190805190602001906116e5929190611e03565b5060006001828154811015156116f757fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039390931692909217909155600180548390811061174457fe5b600091825260209091206007600b9092020101555060019250611768565b60009350505b5050949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117c257600080fd5b505afa1580156117d6573d6000803e3d6000fd5b505050506040513d60208110156117ec57600080fd5b5051600160a060020a0316331461183b576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b61187a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d1e915050565b15156118ba5760405160e560020a62461bcd028152600401808060200182810382526034815260200180611fd06034913960400191505060405180910390fd5b60006118fb89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050868660018381548110151561190e57fe5b90600052602060002090600b0201600401600001919061192f929190611d85565b50848460018381548110151561194157fe5b90600052602060002090600b02016004016001019190611962929190611d85565b508260018281548110151561197357fe5b90600052602060002090600b020160040160020160006101000a815481600160a060020a030219169083600160a060020a03160217905550816001828154811015156119bb57fe5b6000918252602082206007600b9092020101919091555b60018054839081106119e057fe5b90600052602060002090600b020160080180549050811015611ae2576001805483908110611a0a57fe5b90600052602060002090600b020160080181815481101515611a2857fe5b60009182526020909120015460a060020a900460ff1615611ada576000600183815481101515611a5457fe5b90600052602060002090600b0201600a0160008481526020019081526020016000206000600185815481101515611a8757fe5b90600052602060002090600b020160080184815481101515611aa557fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790555b6001016119d2565b506000600182815481101515611af457fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611bbd578181015183820152602001611ba5565b50505050905090810190601f168015611bea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b600080611c2884611b74565b905060018082815481101515611c3a57fe5b60009182526020808320600160a060020a03881684526009600b909302019190910190526040902054039150505b92915050565b600080611c7a84611b74565b9050600181815481101515611c8b57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020541515611cc4576000915050611c68565b6000611cd08585611c1c565b9050600182815481101515611ce157fe5b90600052602060002090600b020160080181815481101515611cff57fe5b60009182526020909120015460a060020a900460ff1695945050505050565b6000816001611d2c85611b74565b81548110611d3657fe5b90600052602060002090600b02016004016003015414905092915050565b815481835581811115611d8057600b0281600b028360005260206000209182019101611d809190611e71565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dc65782800160ff19823516178555611df3565b82800160010185558215611df3579182015b82811115611df3578235825591602001919060010190611dd8565b50611dff929150611f03565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e4457805160ff1916838001178555611df3565b82800160010185558215611df3579182015b82811115611df3578251825591602001919060010190611e56565b611f0091905b80821115611dff576000611e8b8282611f1d565b60006001830181905560028301819055600383018190556004830190611eb18282611f1d565b611ebf600183016000611f1d565b5060028101805473ffffffffffffffffffffffffffffffffffffffff1916905560006003909101819055611ef7906008840190611f64565b50600b01611e77565b90565b611f0091905b80821115611dff5760008155600101611f09565b50805460018160011615610100020316600290046000825580601f10611f435750611f61565b601f016020900490600052602060002090810190611f619190611f03565b50565b5080546000825590600052602060002090810190611f619190611f0091905b80821115611dff57805474ffffffffffffffffffffffffffffffffffffffffff19168155600101611f8356fe696e76616c69642063616c6c65720000000000000000000000000000000000006974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a723058208ad471d1b4c0bebbc8d17f94646a45e91d09e066c6345dca8963fb3874d61fb00029 \ No newline at end of file diff --git a/permission/permission.go b/permission/permission.go index 92f8388a5..b5fecdb7c 100644 --- a/permission/permission.go +++ b/permission/permission.go @@ -294,7 +294,7 @@ func (p *PermissionCtrl) monitorQIP714Block() error { defer stopSubscription.Unsubscribe() for { select { - case head := <-chainHeadCh: + case head := <-chainHeadCh: if p.eth.ChainConfig().IsQIP714(head.Block.Number()) { types.SetDefaultAccess() return @@ -653,6 +653,16 @@ func (p *PermissionCtrl) populateInitPermissions() error { } } + // start the cache monitoring functions + for _, f := range []func(){ + p.populateAccountCache, + p.populateNodeCache, + p.populateOrgCache, + p.populateRoleCache, + } { + f() + } + return nil } @@ -853,3 +863,120 @@ func (p *PermissionCtrl) manageRolePermissions() error { }() return nil } + +// getter to get an account record from the contract +func (p *PermissionCtrl) populateAccountCache() { + permAcctInterface := &pbind.AcctManagerSession{ + Contract: p.permAcct, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } + reqCh, respCh := types.AcctInfoMap.GetAcctCacheChannels() + go func() { + stopChan, stopSubscription := p.subscribeStopEvent() + defer stopSubscription.Unsubscribe() + for { + select { + case acctId := <-reqCh: + account, orgId, roleId, status, isAdmin, _ := permAcctInterface.GetAccountDetails(acctId) + if orgId == "NONE" { + respCh <- nil + } + respCh <- &types.AccountInfo{AcctId: account, OrgId: orgId, RoleId: roleId, Status: types.AcctStatus(status.Int64()), IsOrgAdmin: isAdmin} + + case <-stopChan: + return + } + } + }() +} + +// getter to get a org record from the contract +func (p *PermissionCtrl) populateOrgCache() { + permOrgInterface := &pbind.OrgManagerSession{ + Contract: p.permOrg, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } + reqCh, respCh := types.OrgInfoMap.GetOrgCacheChannels() + go func() { + stopChan, stopSubscription := p.subscribeStopEvent() + defer stopSubscription.Unsubscribe() + for { + select { + case orgId := <-reqCh: + org, parentOrgId, ultimateParentId, orgLevel, orgStatus, _ := permOrgInterface.GetOrgDetails(orgId) + if ultimateParentId == "" { + respCh <- nil + } + respCh <- &types.OrgInfo{OrgId: org, ParentOrgId: parentOrgId, UltimateParent: ultimateParentId, Status: types.OrgStatus(orgStatus.Int64()), Level: orgLevel} + + case <-stopChan: + return + + } + } + }() + +} + +// getter to get a role record from the contract +func (p *PermissionCtrl) populateRoleCache(){ + permRoleInterface := &pbind.RoleManagerSession{ + Contract: p.permRole, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } + reqCh, respCh := types.RoleInfoMap.GetRoleCacheChannels() + go func() { + stopChan, stopSubscription := p.subscribeStopEvent() + defer stopSubscription.Unsubscribe() + + for { + select { + case roleKey := <-reqCh: + roleDetails, _ := permRoleInterface.GetRoleDetails(roleKey.RoleId, roleKey.OrgId) + if roleDetails.OrgId == "" { + respCh <- nil + } + respCh <- &types.RoleInfo{OrgId: roleDetails.OrgId, RoleId: roleDetails.RoleId, IsVoter: roleDetails.Voter, IsAdmin: roleDetails.Admin, Access: types.AccessType(roleDetails.AccessType.Int64()), Active: roleDetails.Active} + + case <-stopChan: + return + } + } + }() +} + +// getter to get a node record from the contract +func (p *PermissionCtrl) populateNodeCache() { + permNodeInterface := &pbind.NodeManagerSession{ + Contract: p.permNode, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } + reqCh, respCh := types.NodeInfoMap.GetNodeCacheChannels() + + go func(){ + stopChan, stopSubscription := p.subscribeStopEvent() + defer stopSubscription.Unsubscribe() + + for { + select { + case url := <-reqCh: + nodeDetails, _ := permNodeInterface.GetNodeDetails(url) + if nodeDetails.NodeStatus.Cmp(big.NewInt(0)) == 0 { + respCh <- nil + } + respCh <- &types.NodeInfo{OrgId: nodeDetails.OrgId, Url: nodeDetails.EnodeId, Status: types.NodeStatus(nodeDetails.NodeStatus.Int64())} + case <-stopChan: + return + } + } + }() + +}