From c36ae0f0c5b2682a38fcfa3cfc6e10919b3d111c Mon Sep 17 00:00:00 2001 From: David Date: Wed, 26 Apr 2023 00:01:33 +0800 Subject: [PATCH] feat(core): skip `baseFee` check for anchor transaction (#54) * test: fix testing errors * feat: update baseFee management * feat: update genesis jsons * chore: update workflow --- cmd/evm/internal/t8ntool/execution.go | 2 +- core/state_prefetcher.go | 2 +- core/state_processor.go | 6 ++---- core/state_transition.go | 19 +++++++++++++------ core/taiko_genesis/internal-1.json | 11 ++++------- core/taiko_genesis/internal-2.json | 11 ++++------- eth/state_accessor.go | 2 +- eth/tracers/api.go | 12 ++++++------ eth/tracers/api_test.go | 2 +- .../internal/tracetest/calltrace_test.go | 6 +++--- .../internal/tracetest/flat_calltrace_test.go | 2 +- .../internal/tracetest/prestate_test.go | 2 +- eth/tracers/tracers_test.go | 2 +- les/state_accessor.go | 2 +- 14 files changed, 40 insertions(+), 41 deletions(-) diff --git a/cmd/evm/internal/t8ntool/execution.go b/cmd/evm/internal/t8ntool/execution.go index 5f796c1d6639..837437e49cc3 100644 --- a/cmd/evm/internal/t8ntool/execution.go +++ b/cmd/evm/internal/t8ntool/execution.go @@ -163,7 +163,7 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, } for i, tx := range txs { - msg, err := core.TransactionToMessage(tx, signer, pre.Env.BaseFee) + msg, err := core.TransactionToMessage(tx, signer, pre.Env.BaseFee, i == 0) if err != nil { log.Warn("rejected tx", "index", i, "hash", tx.Hash(), "error", err) rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()}) diff --git a/core/state_prefetcher.go b/core/state_prefetcher.go index c258eee4f4cc..af9486861f90 100644 --- a/core/state_prefetcher.go +++ b/core/state_prefetcher.go @@ -63,7 +63,7 @@ func (p *statePrefetcher) Prefetch(block *types.Block, statedb *state.StateDB, c return } // Convert the transaction into an executable message and pre-cache its sender - msg, err := TransactionToMessage(tx, signer, header.BaseFee) + msg, err := TransactionToMessage(tx, signer, header.BaseFee, i == 0) if err != nil { return // Also invalid block, bail out } diff --git a/core/state_processor.go b/core/state_processor.go index 0c318576eda9..20ab4fbdc001 100644 --- a/core/state_processor.go +++ b/core/state_processor.go @@ -74,7 +74,7 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg vmenv := vm.NewEVM(blockContext, vm.TxContext{}, statedb, p.config, cfg) // Iterate over and process the individual transactions for i, tx := range block.Transactions() { - msg, err := TransactionToMessage(tx, types.MakeSigner(p.config, header.Number), header.BaseFee) + msg, err := TransactionToMessage(tx, types.MakeSigner(p.config, header.Number), header.BaseFee, i == 0) if err != nil { return nil, nil, 0, fmt.Errorf("could not apply tx %d [%v]: %w", i, tx.Hash().Hex(), err) } @@ -147,12 +147,10 @@ func applyTransaction(msg *Message, config *params.ChainConfig, gp *GasPool, sta // for the transaction, gas used and an error if the transaction failed, // indicating the block was invalid. func ApplyTransaction(config *params.ChainConfig, bc ChainContext, author *common.Address, gp *GasPool, statedb *state.StateDB, header *types.Header, tx *types.Transaction, usedGas *uint64, cfg vm.Config, isAnchor bool) (*types.Receipt, error) { - msg, err := TransactionToMessage(tx, types.MakeSigner(config, header.Number), header.BaseFee) + msg, err := TransactionToMessage(tx, types.MakeSigner(config, header.Number), header.BaseFee, isAnchor) if err != nil { return nil, err } - // CHANGE(taiko): mark if this transaction is TaikoL2.anchor - msg.IsAnchor = isAnchor // Create a new context to be used in the EVM environment blockContext := NewEVMBlockContext(header, bc, author) vmenv := vm.NewEVM(blockContext, vm.TxContext{}, statedb, config, cfg) diff --git a/core/state_transition.go b/core/state_transition.go index 1ee895d47d5c..0f7cf9b45a2f 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -141,12 +141,12 @@ type Message struct { // This field will be set to true for operations like RPC eth_call. SkipAccountChecks bool - // CHANGE(taiko): Whteher the current transaction is TaikoL2.anchor. - IsAnchor bool + // CHANGE(taiko): Whteher the current transaction is the first transaction in a block. + IsFirstTx bool } // TransactionToMessage converts a transaction into a Message. -func TransactionToMessage(tx *types.Transaction, s types.Signer, baseFee *big.Int) (*Message, error) { +func TransactionToMessage(tx *types.Transaction, s types.Signer, baseFee *big.Int, isFirstTx bool) (*Message, error) { msg := &Message{ Nonce: tx.Nonce(), GasLimit: tx.Gas(), @@ -158,6 +158,7 @@ func TransactionToMessage(tx *types.Transaction, s types.Signer, baseFee *big.In Data: tx.Data(), AccessList: tx.AccessList(), SkipAccountChecks: false, + IsFirstTx: isFirstTx, } // If baseFee provided, set gasPrice to effectiveGasPrice. if baseFee != nil { @@ -238,7 +239,7 @@ func (st *StateTransition) buyGas() error { balanceCheck.Add(balanceCheck, st.msg.Value) } // CHANGE(taiko): skip balance check for TaikoL2.anchor transaction. - if st.msg.IsAnchor { + if st.isAnchor() { balanceCheck = common.Big0 mgval = common.Big0 } @@ -282,7 +283,7 @@ func (st *StateTransition) preCheck() error { // Make sure that transaction gasFeeCap is greater than the baseFee (post london) if st.evm.ChainConfig().IsLondon(st.evm.Context.BlockNumber) { // Skip the checks if gas fields are zero and baseFee was explicitly disabled (eth_call) - if (!st.evm.Config.NoBaseFee || msg.GasFeeCap.BitLen() > 0 || msg.GasTipCap.BitLen() > 0) && !msg.IsAnchor { + if (!st.evm.Config.NoBaseFee || msg.GasFeeCap.BitLen() > 0 || msg.GasTipCap.BitLen() > 0) && !st.isAnchor() { if l := msg.GasFeeCap.BitLen(); l > 256 { return fmt.Errorf("%w: address %v, maxFeePerGas bit length: %d", ErrFeeCapVeryHigh, msg.From.Hex(), l) @@ -404,7 +405,7 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) { fee.Mul(fee, effectiveTip) st.state.AddBalance(st.evm.Context.Coinbase, fee) // CHANGE(taiko): basefee is not burnt, but sent to a treasure instead. - if st.evm.ChainConfig().Taiko { + if st.evm.ChainConfig().Taiko && st.evm.Context.BaseFee != nil { st.state.AddBalance( st.evm.ChainConfig().Treasure, new(big.Int).Mul(st.evm.Context.BaseFee, new(big.Int).SetUint64(st.gasUsed())), @@ -440,3 +441,9 @@ func (st *StateTransition) refundGas(refundQuotient uint64) { func (st *StateTransition) gasUsed() uint64 { return st.initialGas - st.gasRemaining } + +func (st *StateTransition) isAnchor() bool { + return st.evm.ChainConfig().Taiko && + st.msg.IsFirstTx && + st.msg.From == common.HexToAddress("0x0000777735367b36bC9B61C50022d9D0700dB4Ec") +} diff --git a/core/taiko_genesis/internal-1.json b/core/taiko_genesis/internal-1.json index 3824d1c4e305..d2617424095c 100644 --- a/core/taiko_genesis/internal-1.json +++ b/core/taiko_genesis/internal-1.json @@ -29,9 +29,6 @@ "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { "balance": "0x3782dace9d90000000" }, - "0x0000777735367b36bC9B61C50022d9D0700dB4Ec": { - "balance": "0xfffffffffffffacbbb7ca13a7fffffff" - }, "0x489Fc09698479ac665A7c91502acDB69A047Fe1a": { "contractName": "LibTrieProof", "storage": {}, @@ -69,9 +66,9 @@ "storage": { "0x00000000000000000000000000000000000000000000000000000000000000cb": "0xf167b245aa70c0a5e2f44cd65a94f2b1c5c9e8c8ab059940e4bf1c47d7a39557", "0x00000000000000000000000000000000000000000000000000000000000000cc": "0x0000000000bebc200000000058b8ef1c0000000485b9d2e799564d28c46075dd", - "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f6800000000000000000000000006445dce3" + "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f6800000000000000000000000006447f567" }, - "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063e1848cb01161007c578063e1848cb014610320578063ee82ac5e14610333578063f2fde38b14610346578063f535bd5614610359578063f5c9774014610373578063f5d11edc1461038d57600080fd5b80638da5cb5b146102ad5780638f3ca30d146102be5780639ee512f2146102d1578063a4e6775f146102ea578063c7b96908146102fd578063dac5df781461031757600080fd5b80633d384a4b116101155780633d384a4b1461020d5780633fa8535014610222578063539b8ade1461024d578063591aad8a14610260578063609bbd0614610292578063715018a6146102a557600080fd5b80630ca4dffd1461015257806310da3738146101825780631be2bfa7146101b7578063210c9fe8146101ca5780633ab76e9f146101fc575b600080fd5b6101656101603660046116e7565b6103a7565b6040516001600160a01b0390911681526020015b60405180910390f35b6101a97f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b604051908152602001610179565b6101656101c5366004611734565b6103bd565b60cc546101e490600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610179565b6097546001600160a01b0316610165565b61022061021b3660046117a1565b6103d4565b005b60cc54610235906001600160801b031681565b6040516001600160801b039091168152602001610179565b60cd546101e4906001600160401b031681565b61027361026e3660046117e7565b61063a565b6040805160ff9094168452602084019290925290820152606001610179565b6101a96102a036600461181d565b610875565b6102206108b1565b6065546001600160a01b0316610165565b6102206102cc36600461184b565b6108c5565b61016571777735367b36bc9b61c50022d9d0700db4ec81565b6101a96102f836600461181d565b610c92565b60cd546101e490600160401b90046001600160401b031681565b6101a960cb5481565b6101a961032e36600461188c565b610ccb565b6101a961034136600461181d565b610ce7565b6102206103543660046118d1565b610d34565b60cd546101e490600160801b90046001600160401b031681565b60cc546101e490600160801b90046001600160401b031681565b60cd546101e490600160c01b90046001600160401b031681565b60006103b4468484610dad565b90505b92915050565b60006103ca848484610dad565b90505b9392505050565b3371777735367b36bc9b61c50022d9d0700db4ec1461040657604051636494e9f760e01b815260040160405180910390fd5b6000610413600143611904565b9050804060008061042384610e7d565b915091508160cb541461045c5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527fc7edd3d480c294297f3924d0ffab64074e7fb22e004ea492d5dd691fa1fc99c0910160405180910390a260cc54600090600160c01b90046001600160401b0316156105705760cd546105429061053b906001600160401b031642611904565b4588610f10565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b8048146105a357604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610453565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561065757508360ff16600214155b156106755760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff166001146106a6577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee56106c8565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106fd577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce9081861071f565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610754577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610776565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff86166001036107b0576107a98282600170014551231950b75fc4402da1732fc9bebe19610fb0565b925061081f565b6107f87f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107f38484600170014551231950b75fc4402da1732fc9bebe19610fb0565b610fff565b909250905061081c8282600170014551231950b75fc4402da1732fc9bebe19610fb0565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561086c576108638370014551231950b75fc4402da1732fc9bebe19611904565b92506001851894505b50509250925092565b60008082156108845782610898565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b6108b961101e565b6108c36000611078565b565b600054610100900460ff16158080156108e55750600054600160ff909116105b806108ff5750303b1580156108ff575060005460ff166001145b6109625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610453565b6000805460ff191660011790558015610985576000805461ff0019166101001790555b600146111580610999575063ffffffff4610155b156109b7576040516306cffa2760e01b815260040160405180910390fd5b60014311156109d957604051635a0f9e4160e11b815260040160405180910390fd5b6109e96040830160208401611917565b6001600160401b031615610bee57610a046020830183611917565b6001600160401b03161580610a2f5750610a246060830160408401611917565b6001600160401b0316155b80610a505750610a456080830160608401611917565b6001600160401b0316155b80610a715750610a6660a0830160808401611917565b6001600160401b0316155b15610a8f57604051639cc448b560e01b815260040160405180910390fd5b6000610ad6610aa46060850160408601611917565b610ab16020860186611917565b610ac16080870160608801611917565b610ad160a0880160808901611917565b6110ca565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610b1c57506001600160401b036001600160801b03821610155b80610b30575060cc546001600160801b0316155b15610b4e57604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b836040840160208501611917565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610bbc6060850160408601611917565b610bc69190611948565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610c13836111c9565b610c1c43610e7d565b5060cb554315610c47576000610c33600143611904565b600081815260c96020526040902090409055505b8015610c8d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000808215610ca15782610cb5565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cde8463ffffffff168484610f10565b50949350505050565b6000438210610cf857506000919050565b4382108015610d125750610d0e61010043611904565b8210155b15610d1c57504090565b50600090815260c9602052604090205490565b919050565b610d3c61101e565b6001600160a01b038116610da15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610453565b610daa81611078565b50565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610de090879087906004016119b4565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906119cd565b9050816103cd576040516001600160a01b038216151590610e4890869086906020016119ea565b60405160208183030381529060405290610e755760405162461bcd60e51b81526004016104539190611a48565b509392505050565b600080610e88611615565b60005b60ff81108015610e9e5750806001018510155b15610ed0576000198186030180408360ff83066101008110610ec257610ec2611a5b565b602002015250600101610e8b565b5046611fe082015261200081209250834081610eed60ff87611a71565b6101008110610efe57610efe611a5b565b60200201526120009020919391925050565b600080806207a1206001600160401b03851611610f2e576000610f35565b6207a12084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610f779082610f7085826111e2565b03906111f8565b60cc54909450610fa693506001600160401b03600160801b82041692506001600160801b03169050838761120d565b9150935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610ff557600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b6065546001600160a01b031633146108c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610453565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b03166000036110e6576110e6611a85565b60006110f3600288611948565b90506111116001600160401b038816680755bf798b4a1bf1e4611a9b565b925061113061112b84886001600160401b0316848961120d565b6112cc565b915060006111408484848961120d565b9050600061115a8585856111558b6002611ab5565b61120d565b905060008261116b83612710611ae0565b6111759190611af7565b9050806001600160401b0316876001600160401b0316146111bc576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610453565b5050505094509492505050565b6111d1611339565b6111d9611368565b610daa81611397565b60008183116111f157816103b4565b5090919050565b600081831161120757826103b4565b50919050565b60006001600160801b0385161580159061122f57506001600160801b03841615155b61123b5761123b611a85565b60006001600160401b038316156112525782611255565b60015b9050600061126c856001600160401b0316886113e0565b9050600061128c61127d8488611b0b565b6001600160401b0316896113e0565b90506001600160801b0387166001600160401b0384166112ac8484611904565b6112b69190611af7565b6112c09190611af7565b98975050505050505050565b60006001600160801b038211156113355760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610453565b5090565b600054610100900460ff166113605760405162461bcd60e51b815260040161045390611b32565b6108c3611432565b600054610100900460ff1661138f5760405162461bcd60e51b815260040161045390611b32565b6108c361145f565b6001600160a01b0381166113be57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806113f66001600160801b03841685611ae0565b9050680755bf798b4a1bf1e48110611421576040516372de381d60e01b815260040160405180910390fd5b61142a8161148f565b949350505050565b600054610100900460ff166114595760405162461bcd60e51b815260040161045390611b32565b60018055565b600054610100900460ff166114865760405162461bcd60e51b815260040161045390611b32565b6108c333611078565b6000680248ce36a70cb26b3e1982136114aa57506000919050565b680755bf798b4a1bf1e582126114d357604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261165c57600080fd5b81356001600160401b038082111561167657611676611635565b604051601f8301601f19908116603f0116810190828211818310171561169e5761169e611635565b816040528381528660208588010111156116b757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114610d2f57600080fd5b600080604083850312156116fa57600080fd5b82356001600160401b0381111561171057600080fd5b61171c8582860161164b565b92505061172b602084016116d7565b90509250929050565b60008060006060848603121561174957600080fd5b8335925060208401356001600160401b0381111561176657600080fd5b6117728682870161164b565b925050611781604085016116d7565b90509250925092565b80356001600160401b0381168114610d2f57600080fd5b600080600080608085870312156117b757600080fd5b84359350602085013592506117ce6040860161178a565b91506117dc6060860161178a565b905092959194509250565b600080604083850312156117fa57600080fd5b82359150602083013560ff8116811461181257600080fd5b809150509250929050565b60006020828403121561182f57600080fd5b5035919050565b6001600160a01b0381168114610daa57600080fd5b60008082840360c081121561185f57600080fd5b833561186a81611836565b925060a0601f198201121561187e57600080fd5b506020830190509250929050565b6000806000606084860312156118a157600080fd5b833563ffffffff811681146118b557600080fd5b92506118c36020850161178a565b91506117816040850161178a565b6000602082840312156118e357600080fd5b81356103cd81611836565b634e487b7160e01b600052601160045260246000fd5b818103818111156103b7576103b76118ee565b60006020828403121561192957600080fd5b6103b48261178a565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061196257611962611932565b92169190910492915050565b6000815180845260005b8181101561199457602081850181015186830182015201611978565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103ca604083018461196e565b6000602082840312156119df57600080fd5b81516103cd81611836565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152611a3f8184018561196e565b95945050505050565b6020815260006103b4602083018461196e565b634e487b7160e01b600052603260045260246000fd5b600082611a8057611a80611932565b500690565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b038084168061196257611962611932565b6001600160401b03818116838216028082169190828114611ad857611ad86118ee565b505092915050565b80820281158282048414176103b7576103b76118ee565b600082611b0657611b06611932565b500490565b6001600160401b03818116838216019080821115611b2b57611b2b6118ee565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220b4008f8a5194e802e50bf95b3be935f155909c31a1609e21fb1b63f00e4c256b64736f6c63430008120033", + "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063e1848cb01161007c578063e1848cb014610320578063ee82ac5e14610333578063f2fde38b14610346578063f535bd5614610359578063f5c9774014610373578063f5d11edc1461038d57600080fd5b80638da5cb5b146102ad5780638f3ca30d146102be5780639ee512f2146102d1578063a4e6775f146102ea578063c7b96908146102fd578063dac5df781461031757600080fd5b80633d384a4b116101155780633d384a4b1461020d5780633fa8535014610222578063539b8ade1461024d578063591aad8a14610260578063609bbd0614610292578063715018a6146102a557600080fd5b80630ca4dffd1461015257806310da3738146101825780631be2bfa7146101b7578063210c9fe8146101ca5780633ab76e9f146101fc575b600080fd5b6101656101603660046116e7565b6103a7565b6040516001600160a01b0390911681526020015b60405180910390f35b6101a97f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b604051908152602001610179565b6101656101c5366004611734565b6103bd565b60cc546101e490600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610179565b6097546001600160a01b0316610165565b61022061021b3660046117a1565b6103d4565b005b60cc54610235906001600160801b031681565b6040516001600160801b039091168152602001610179565b60cd546101e4906001600160401b031681565b61027361026e3660046117e7565b61063a565b6040805160ff9094168452602084019290925290820152606001610179565b6101a96102a036600461181d565b610875565b6102206108b1565b6065546001600160a01b0316610165565b6102206102cc36600461184b565b6108c5565b61016571777735367b36bc9b61c50022d9d0700db4ec81565b6101a96102f836600461181d565b610c92565b60cd546101e490600160401b90046001600160401b031681565b6101a960cb5481565b6101a961032e36600461188c565b610ccb565b6101a961034136600461181d565b610ce7565b6102206103543660046118d1565b610d34565b60cd546101e490600160801b90046001600160401b031681565b60cc546101e490600160801b90046001600160401b031681565b60cd546101e490600160c01b90046001600160401b031681565b60006103b4468484610dad565b90505b92915050565b60006103ca848484610dad565b90505b9392505050565b3371777735367b36bc9b61c50022d9d0700db4ec1461040657604051636494e9f760e01b815260040160405180910390fd5b6000610413600143611904565b9050804060008061042384610e7d565b915091508160cb541461045c5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527fc7edd3d480c294297f3924d0ffab64074e7fb22e004ea492d5dd691fa1fc99c0910160405180910390a260cc54600090600160c01b90046001600160401b0316156105705760cd546105429061053b906001600160401b031642611904565b4588610f10565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b8048146105a357604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610453565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561065757508360ff16600214155b156106755760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff166001146106a6577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee56106c8565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106fd577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce9081861071f565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610754577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610776565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff86166001036107b0576107a98282600170014551231950b75fc4402da1732fc9bebe19610fb0565b925061081f565b6107f87f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107f38484600170014551231950b75fc4402da1732fc9bebe19610fb0565b610fff565b909250905061081c8282600170014551231950b75fc4402da1732fc9bebe19610fb0565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561086c576108638370014551231950b75fc4402da1732fc9bebe19611904565b92506001851894505b50509250925092565b60008082156108845782610898565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b6108b961101e565b6108c36000611078565b565b600054610100900460ff16158080156108e55750600054600160ff909116105b806108ff5750303b1580156108ff575060005460ff166001145b6109625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610453565b6000805460ff191660011790558015610985576000805461ff0019166101001790555b600146111580610999575063ffffffff4610155b156109b7576040516306cffa2760e01b815260040160405180910390fd5b60014311156109d957604051635a0f9e4160e11b815260040160405180910390fd5b6109e96040830160208401611917565b6001600160401b031615610bee57610a046020830183611917565b6001600160401b03161580610a2f5750610a246060830160408401611917565b6001600160401b0316155b80610a505750610a456080830160608401611917565b6001600160401b0316155b80610a715750610a6660a0830160808401611917565b6001600160401b0316155b15610a8f57604051639cc448b560e01b815260040160405180910390fd5b6000610ad6610aa46060850160408601611917565b610ab16020860186611917565b610ac16080870160608801611917565b610ad160a0880160808901611917565b6110ca565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610b1c57506001600160401b036001600160801b03821610155b80610b30575060cc546001600160801b0316155b15610b4e57604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b836040840160208501611917565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610bbc6060850160408601611917565b610bc69190611948565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610c13836111c9565b610c1c43610e7d565b5060cb554315610c47576000610c33600143611904565b600081815260c96020526040902090409055505b8015610c8d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000808215610ca15782610cb5565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cde8463ffffffff168484610f10565b50949350505050565b6000438210610cf857506000919050565b4382108015610d125750610d0e61010043611904565b8210155b15610d1c57504090565b50600090815260c9602052604090205490565b919050565b610d3c61101e565b6001600160a01b038116610da15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610453565b610daa81611078565b50565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610de090879087906004016119b4565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906119cd565b9050816103cd576040516001600160a01b038216151590610e4890869086906020016119ea565b60405160208183030381529060405290610e755760405162461bcd60e51b81526004016104539190611a48565b509392505050565b600080610e88611615565b60005b60ff81108015610e9e5750806001018510155b15610ed0576000198186030180408360ff83066101008110610ec257610ec2611a5b565b602002015250600101610e8b565b5046611fe082015261200081209250834081610eed60ff87611a71565b6101008110610efe57610efe611a5b565b60200201526120009020919391925050565b600080806202bf206001600160401b03851611610f2e576000610f35565b6202bf2084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610f779082610f7085826111e2565b03906111f8565b60cc54909450610fa693506001600160401b03600160801b82041692506001600160801b03169050838761120d565b9150935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610ff557600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b6065546001600160a01b031633146108c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610453565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b03166000036110e6576110e6611a85565b60006110f3600288611948565b90506111116001600160401b038816680755bf798b4a1bf1e4611a9b565b925061113061112b84886001600160401b0316848961120d565b6112cc565b915060006111408484848961120d565b9050600061115a8585856111558b6002611ab5565b61120d565b905060008261116b83612710611ae0565b6111759190611af7565b9050806001600160401b0316876001600160401b0316146111bc576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610453565b5050505094509492505050565b6111d1611339565b6111d9611368565b610daa81611397565b60008183116111f157816103b4565b5090919050565b600081831161120757826103b4565b50919050565b60006001600160801b0385161580159061122f57506001600160801b03841615155b61123b5761123b611a85565b60006001600160401b038316156112525782611255565b60015b9050600061126c856001600160401b0316886113e0565b9050600061128c61127d8488611b0b565b6001600160401b0316896113e0565b90506001600160801b0387166001600160401b0384166112ac8484611904565b6112b69190611af7565b6112c09190611af7565b98975050505050505050565b60006001600160801b038211156113355760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610453565b5090565b600054610100900460ff166113605760405162461bcd60e51b815260040161045390611b32565b6108c3611432565b600054610100900460ff1661138f5760405162461bcd60e51b815260040161045390611b32565b6108c361145f565b6001600160a01b0381166113be57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806113f66001600160801b03841685611ae0565b9050680755bf798b4a1bf1e48110611421576040516372de381d60e01b815260040160405180910390fd5b61142a8161148f565b949350505050565b600054610100900460ff166114595760405162461bcd60e51b815260040161045390611b32565b60018055565b600054610100900460ff166114865760405162461bcd60e51b815260040161045390611b32565b6108c333611078565b6000680248ce36a70cb26b3e1982136114aa57506000919050565b680755bf798b4a1bf1e582126114d357604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261165c57600080fd5b81356001600160401b038082111561167657611676611635565b604051601f8301601f19908116603f0116810190828211818310171561169e5761169e611635565b816040528381528660208588010111156116b757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114610d2f57600080fd5b600080604083850312156116fa57600080fd5b82356001600160401b0381111561171057600080fd5b61171c8582860161164b565b92505061172b602084016116d7565b90509250929050565b60008060006060848603121561174957600080fd5b8335925060208401356001600160401b0381111561176657600080fd5b6117728682870161164b565b925050611781604085016116d7565b90509250925092565b80356001600160401b0381168114610d2f57600080fd5b600080600080608085870312156117b757600080fd5b84359350602085013592506117ce6040860161178a565b91506117dc6060860161178a565b905092959194509250565b600080604083850312156117fa57600080fd5b82359150602083013560ff8116811461181257600080fd5b809150509250929050565b60006020828403121561182f57600080fd5b5035919050565b6001600160a01b0381168114610daa57600080fd5b60008082840360c081121561185f57600080fd5b833561186a81611836565b925060a0601f198201121561187e57600080fd5b506020830190509250929050565b6000806000606084860312156118a157600080fd5b833563ffffffff811681146118b557600080fd5b92506118c36020850161178a565b91506117816040850161178a565b6000602082840312156118e357600080fd5b81356103cd81611836565b634e487b7160e01b600052601160045260246000fd5b818103818111156103b7576103b76118ee565b60006020828403121561192957600080fd5b6103b48261178a565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061196257611962611932565b92169190910492915050565b6000815180845260005b8181101561199457602081850181015186830182015201611978565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103ca604083018461196e565b6000602082840312156119df57600080fd5b81516103cd81611836565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152611a3f8184018561196e565b95945050505050565b6020815260006103b4602083018461196e565b634e487b7160e01b600052603260045260246000fd5b600082611a8057611a80611932565b500690565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b038084168061196257611962611932565b6001600160401b03818116838216028082169190828114611ad857611ad86118ee565b505092915050565b80820281158282048414176103b7576103b76118ee565b600082611b0657611b06611932565b500490565b6001600160401b03818116838216019080821115611b2b57611b2b6118ee565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122042ebe6eea7309239f3880d39e251ac2465be367c776314009bd5a6d744b5f7f464736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000004": { @@ -82,7 +79,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x6080604052600436106101235760003560e01c8063715018a6116100a0578063ce70f39b11610064578063ce70f39b1461040e578063d0496d6a1461042e578063f2fde38b1461049d578063f9803919146104bd578063fee99b22146104dd57600080fd5b8063715018a6146103885780638da5cb5b1461039d57806396e17852146103bb578063a4444efd146103ce578063bac443e2146103ee57600080fd5b80635075a9d4116100e75780635075a9d4146102cd578063540be6a3146102fa5780635817b0c31461031a5780635d0bd98614610348578063606b5b741461036857600080fd5b80630ca4dffd146101f257806319ab453c1461022f5780631be2bfa71461024f578063343b643c1461026f5780633ab76e9f146102af57600080fd5b366101ed576101566040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b0316141580156101b657506101a06040518060400160405280600b81526020016a195d1a195c97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b031614155b80156101cd57506065546001600160a01b03163314155b156101eb576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101fe57600080fd5b5061021261020d366004612bef565b6104fd565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b57600080fd5b506101eb61024a366004612c60565b610513565b34801561025b57600080fd5b5061021261026a366004612c7d565b61062b565b34801561027b57600080fd5b5061029f61028a366004612cd7565b600090815260cd602052604090205460ff1690565b6040519015158152602001610226565b3480156102bb57600080fd5b506097546001600160a01b0316610212565b3480156102d957600080fd5b506102ed6102e8366004612cd7565b610642565b6040516102269190612d28565b34801561030657600080fd5b5061029f610315366004612cd7565b61064d565b34801561032657600080fd5b5061033a610335366004612d4f565b610659565b604051908152602001610226565b34801561035457600080fd5b5061029f610363366004612cd7565b61066c565b34801561037457600080fd5b5061033a610383366004612cd7565b61067f565b34801561039457600080fd5b506101eb61068a565b3480156103a957600080fd5b506065546001600160a01b0316610212565b61033a6103c9366004612d4f565b61069e565b3480156103da57600080fd5b5061029f6103e9366004612dcb565b6106cc565b3480156103fa57600080fd5b506101eb610409366004612e1d565b6106e4565b34801561041a57600080fd5b5061029f610429366004612dcb565b610708565b34801561043a57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610226565b3480156104a957600080fd5b506101eb6104b8366004612c60565b610717565b3480156104c957600080fd5b506101eb6104d8366004612e85565b610790565b3480156104e957600080fd5b506101eb6104f8366004612e1d565b6107ae565b600061050a4684846107c4565b90505b92915050565b600054610100900460ff16158080156105335750600054600160ff909116105b8061054d5750303b15801561054d575060005460ff166001145b6105b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105d8576000805461ff0019166101001790555b6105e182610894565b8015610627576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106388484846107c4565b90505b9392505050565b600061050d826108ad565b600061050d30836108d8565b600061050d61066783612eba565b6109b9565b600061067830836109e9565b5092915050565b600061050d82610a72565b610692610aad565b61069c6000610b07565b565b60006106a8610b59565b6106bc60c9306106b785612eba565b610bb2565b90506106c760018055565b919050565b60006106db3086868686610e93565b95945050505050565b6106ec610b59565b6106fa60c930858585610ff6565b61070360018055565b505050565b60006106db30868686866112e7565b61071f610aad565b6001600160a01b0381166107845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b61078d81610b07565b50565b610798610b59565b6107a560c930848461157c565b61062760018055565b6107b6610b59565b6106fa60c9308585856117b4565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906107f7908790879060040161300b565b602060405180830381865afa158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190613024565b90508161063b576040516001600160a01b03821615159061085f9086908690602001613041565b6040516020818303038152906040529061088c5760405162461bcd60e51b81526004016105ac9190613096565b509392505050565b61089c611cb3565b6108a4611ce2565b61078d81611d11565b6000806108b983610a72565b80549091508060038111156108d0576108d0612cf0565b949350505050565b604051630ca4dffd60e01b81526000906001600160a01b03841690630ca4dffd906109079084906004016130a9565b602060405180830381865afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109489190613024565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906130d9565b6000816040516020016109cc91906130f6565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316631be2bfa78460016040518363ffffffff1660e01b8152600401610a1b9291906131f0565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613024565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109cc92919061321e565b6065546001600160a01b0316331461069c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ac565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bab5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105ac565b6002600155565b60808101516000906001600160a01b0316610be0576040516301b1868360e71b815260040160405180910390fd5b600080610bf18585606001516109e9565b91509150811580610c055750468460600151145b15610c235760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c525750806001600160a01b03168460a001516001600160a01b0316145b15610c705760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610c8d9190613256565b610c979190613256565b9050348114610cb957604051632609a19760e21b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd90610ce990600190600401613269565b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190613024565b9050610d3f6001600160a01b03821683611d5a565b8754886000610d4d83613296565b909155508652336020870152466040870152610d68866109b9565b604051630ca4dffd60e01b81529095506001600160a01b03881690630ca4dffd90610d98906000906004016130a9565b602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190613024565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e0691815260200190565b6020604051808303816000875af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906132af565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e7a91906130f6565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316631be2bfa78660006040518363ffffffff1660e01b8152600401610ec59291906131f0565b602060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190613024565b604051630ca4dffd60e01b81529091506001600160a01b03881690630ca4dffd90610f36906000906004016130a9565b602060405180830381865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f779190613024565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610faa9594939291906132c8565b602060405180830381865afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb91906130d9565b979650505050505050565b600061100860a0850160808601612c60565b6001600160a01b03160361102f576040516301b1868360e71b815260040160405180910390fd5b468360400135146110535760405163e822b48d60e01b815260040160405180910390fd5b600061106161066785612eba565b600081815260048801602052604090205490915060ff16151560010361109a5760405163afde133560e01b815260040160405180910390fd5b6110ab8582866060013586866112e7565b6110c85760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff191660011790556110f661010086013560e0870135613256565b9050801561128b57604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd9061112e90600190600401613269565b602060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f9190613024565b90506001600160a01b03811615611204576001600160a01b03811663ba0bbd9561119f60a0890160808a01612c60565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b50505050611289565b600061121660a0880160808901612c60565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114611260576040519150601f19603f3d011682016040523d82523d6000602084013e611265565b606091505b50509050806112875760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112bd60a0880160808901612c60565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113095760405163e822b48d60e01b815260040160405180910390fd5b600085900361132b5760405163a6407c9360e01b815260040160405180910390fd5b6000611339838501856133b2565b60408051630ca4dffd60e01b8152600481019190915260056044820152647461696b6f60d81b60648201526000602482018190529192506001600160a01b03891690630ca4dffd90608401602060405180830381865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c59190613024565b8251610100015160405163a4e6775f60e01b81526001600160801b0390911660048201526001600160a01b03919091169063a4e6775f90602401602060405180830381865afa15801561141c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144091906132af565b90508015806114595750815161145590611e10565b8114155b15611469576000925050506106db565b815160600151604051631be2bfa760e01b815273489Fc09698479ac665A7c91502acDB69A047Fe1a9163a5427462916001600160a01b038c1690631be2bfa7906114ba908c906000906004016131f0565b602060405180830381865afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613024565b6115048b610a72565b602087015160405160e086901b6001600160e01b031916815261152f94939291600391600401613556565b602060405180830381865af415801561154c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157091906130d9565b98975050505050505050565b610140820135158061158b5750805b156115d1576115a060a0830160808401612c60565b6001600160a01b0316336001600160a01b0316146115d15760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115df61066784612eba565b905060016115ec826108ad565b60038111156115fd576115fd612cf0565b1461161b57604051631f6646b560e01b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03861690630ca4dffd9061164b90600190600401613269565b602060405180830381865afa158015611668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168c9190613024565b90506001600160a01b038116156116fc57604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505b6117088685845a611e35565b1561171d57611718826002611f8d565b6117ac565b82156117945761172e826003611f8d565b60008061174160e0870160c08801612c60565b6001600160a01b0316146117645761175f60e0860160c08701612c60565b611774565b61177460a0860160808701612c60565b905061178e6001600160a01b038216610100870135611d5a565b506117ac565b6117ac6001600160a01b038216610100860135611d5a565b505050505050565b6101408301351580156117e857506117d260a0840160808501612c60565b6001600160a01b0316336001600160a01b031614155b156118065760405163398b635960e21b815260040160405180910390fd5b4683606001351461182a5760405163e822b48d60e01b815260040160405180910390fd5b600061183861066785612eba565b90506000611845826108ad565b600381111561185657611856612cf0565b1461187457604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316631be2bfa7866040013560006040518363ffffffff1660e01b81526004016118a99291906131f0565b602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190613024565b604051630ca4dffd60e01b81529091506001600160a01b03871690630ca4dffd9061191a906000906004016130a9565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190613024565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b81526004016119929594939291906132c8565b602060405180830381865afa1580156119af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d391906130d9565b6119f0576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a0b61010088013560e0890135613256565b611a159190613256565b90506000876001600160a01b0316630ca4dffd60016040518263ffffffff1660e01b8152600401611a469190613269565b602060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190613024565b90506001600160a01b03811615801590611aa15750600082115b15611b0157604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050505b611b2860e0880135611b1960a08a0160808b01612c60565b6001600160a01b031690611d5a565b60008030611b3c60c08b0160a08c01612c60565b6001600160a01b03161480611b6957506000611b5e60c08b0160a08c01612c60565b6001600160a01b0316145b15611b7e575060029050610100880135611bf5565b6000611b9060a08b0160808c01612c60565b6001600160a01b0316336001600160a01b031614611bb357896101400135611bb5565b5a5b90506000611bc58d8c8a85611e35565b90508015611bd65760029350611bf2565b60019350611bf26001600160a01b0386166101008d0135611d5a565b50505b611bff8683611f8d565b600080611c1260e08c0160c08d01612c60565b6001600160a01b031614611c3557611c3060e08b0160c08c01612c60565b611c45565b611c4560a08b0160808c01612c60565b90506001600160a01b0381163303611c83576000611c68836101208d0135613256565b9050611c7d6001600160a01b03831682611d5a565b50611ca5565b611c92336101208c0135611d5a565b611ca56001600160a01b03821683611d5a565b505050505050505050505050565b600054610100900460ff16611cda5760405162461bcd60e51b81526004016105ac90613589565b61069c612006565b600054610100900460ff16611d095760405162461bcd60e51b81526004016105ac90613589565b61069c61202d565b6001600160a01b038116611d3857604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d6e57506001600160a01b038216155b15611d77575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b50509050806107035760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016105ac565b600080611e26611e2184600061205d565b61247e565b80516020909101209392505050565b600081600003611e5857604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e7c9190612c60565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ece60c0850160a08601612c60565b6001600160a01b031682610100860135611eec6101608801886135d4565b604051611efa92919061361a565b600060405180830381858888f193505050503d8060008114611f38576040519150601f19603f3d011682016040523d82523d6000602084013e611f3d565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611f9f57611f9f612cf0565b611fa8836108ad565b6003811115611fb957611fb9612cf0565b1461062757611fc882826124c2565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c8233604051611ffa92919061362a565b60405180910390a25050565b600054610100900460ff16610e8d5760405162461bcd60e51b81526004016105ac90613589565b600054610100900460ff166120545760405162461bcd60e51b81526004016105ac90613589565b61069c33610b07565b610200820151606090156120c857612076826011613256565b6001600160401b0381111561208d5761208d612ad1565b6040519080825280602002602001820160405280156120c057816020015b60608152602001906001900390816120ab5790505b509050612137565b6101e0830151156120de57612076826010613256565b6120e982600f613256565b6001600160401b0381111561210057612100612ad1565b60405190808252806020026020018201604052801561213357816020015b606081526020019060019003908161211e5790505b5090505b8251612142906124eb565b8160008151811061215557612155613650565b602002602001018190525061216d83602001516124eb565b8160018151811061218057612180613650565b602002602001018190525061219883604001516124fe565b816002815181106121ab576121ab613650565b60200260200101819052506121c383606001516124eb565b816003815181106121d6576121d6613650565b60200260200101819052506121ee83608001516124eb565b8160048151811061220157612201613650565b60200260200101819052506122198360a001516124eb565b8160058151811061222c5761222c613650565b60200260200101819052506122638360c0015160405160200161224f9190613666565b604051602081830303815290604052612527565b8160068151811061227657612276613650565b602002602001018190525061228e8360e00151612596565b816007815181106122a1576122a1613650565b60200260200101819052506122c38361010001516001600160801b0316612596565b816008815181106122d6576122d6613650565b60200260200101819052506122ef8361012001516125a4565b8160098151811061230257612302613650565b602002602001018190525061231b8361014001516125a4565b81600a8151811061232e5761232e613650565b60200260200101819052506123478361016001516125a4565b81600b8151811061235a5761235a613650565b6020026020010181905250612373836101800151612527565b81600c8151811061238657612386613650565b602002602001018190525061239f836101a001516124eb565b81600d815181106123b2576123b2613650565b60200260200101819052506123e9836101c0015160405160200161224f919060c09190911b6001600160c01b031916815260080190565b81600e815181106123fc576123fc613650565b6020026020010181905250826101e0015160001461244157612422836101e00151612596565b81600f8151811061243557612435613650565b60200260200101819052505b6102008301511561050d5761245a8361020001516124eb565b8160108151811061246d5761246d613650565b602002602001018190525092915050565b6060600061248b836125bb565b9050612499815160c06126f0565b816040516020016124ab92919061369b565b604051602081830303815290604052915050919050565b60006124cd83610a72565b905060008260038111156124e3576124e3612cf0565b909155505050565b606061050d6124f983612898565b612527565b604051606082811b6bffffffffffffffffffffffff191660208301529061050d9060340161224f565b60608082516001148015612555575060808360008151811061254b5761254b613650565b016020015160f81c105b1561256157508161050d565b61256d835160806126f0565b8360405160200161257f92919061369b565b604051602081830303815290604052905092915050565b606061050d6124f98361294a565b606061050d6124f9836001600160401b031661294a565b606081516000036125dc576040805160008082526020820190925290610678565b6000805b8351811015612621578381815181106125fb576125fb613650565b6020026020010151518261260f9190613256565b915061261a81613296565b90506125e0565b6000826001600160401b0381111561263b5761263b612ad1565b6040519080825280601f01601f191660200182016040528015612665576020820181803683370190505b50600092509050602081015b85518310156126e757600086848151811061268e5761268e613650565b6020026020010151905060006020820190506126ac83828451612a74565b8785815181106126be576126be613650565b602002602001015151836126d29190613256565b92505050826126e090613296565b9250612671565b50949350505050565b6060806038841015612757576040805160018082528183019092529060208201818036833701905050905061272583856136ca565b60f81b8160008151811061273b5761273b613650565b60200101906001600160f81b031916908160001a90535061050a565b600060015b61276681876136f9565b156127895761277482613296565b91506127826101008261370d565b905061275c565b612794826001613256565b6001600160401b038111156127ab576127ab612ad1565b6040519080825280601f01601f1916602001820160405280156127d5576020820181803683370190505b5092506127e285836136ca565b6127ed9060376136ca565b60f81b8360008151811061280357612803613650565b60200101906001600160f81b031916908160001a905350600190505b81811161288f576101006128338284613724565b61283f9061010061381b565b61284990886136f9565b6128539190613827565b60f81b83828151811061286857612868613650565b60200101906001600160f81b031916908160001a90535061288881613296565b905061281f565b50509392505050565b60606000826040516020016128af91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126e75783836128f481613296565b94508151811061290657612906613650565b602001015160f81c60f81b82828151811061292357612923613650565b60200101906001600160f81b031916908160001a90535061294381613296565b90506128e0565b606060008260405160200161296191815260200190565b604051602081830303815290604052905060005b60208110156129b65781818151811061299057612990613650565b01602001516001600160f81b0319166000036129b6576129af81613296565b9050612975565b60006129c3826020613724565b6001600160401b038111156129da576129da612ad1565b6040519080825280601f01601f191660200182016040528015612a04576020820181803683370190505b50905060005b81518110156126e7578383612a1e81613296565b945081518110612a3057612a30613650565b602001015160f81c60f81b828281518110612a4d57612a4d613650565b60200101906001600160f81b031916908160001a905350612a6d81613296565b9050612a0a565b8282825b60208110612ab05781518352612a8f602084613256565b9250612a9c602083613256565b9150612aa9602082613724565b9050612a78565b905182516020929092036101000a6000190180199091169116179052505050565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405290565b604080519081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405161022081016001600160401b0381118282101715612b0a57612b0a612ad1565b600082601f830112612b6657600080fd5b81356001600160401b0380821115612b8057612b80612ad1565b604051601f8301601f19908116603f01168101908282118183101715612ba857612ba8612ad1565b81604052838152866020858801011115612bc157600080fd5b836020870160208301376000602085830101528094505050505092915050565b801515811461078d57600080fd5b60008060408385031215612c0257600080fd5b82356001600160401b03811115612c1857600080fd5b612c2485828601612b55565b9250506020830135612c3581612be1565b809150509250929050565b6001600160a01b038116811461078d57600080fd5b80356106c781612c40565b600060208284031215612c7257600080fd5b813561050a81612c40565b600080600060608486031215612c9257600080fd5b8335925060208401356001600160401b03811115612caf57600080fd5b612cbb86828701612b55565b9250506040840135612ccc81612be1565b809150509250925092565b600060208284031215612ce957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612d2457634e487b7160e01b600052602160045260246000fd5b9052565b6020810161050d8284612d06565b60006101a08284031215612d4957600080fd5b50919050565b600060208284031215612d6157600080fd5b81356001600160401b03811115612d7757600080fd5b6108d084828501612d36565b60008083601f840112612d9557600080fd5b5081356001600160401b03811115612dac57600080fd5b602083019150836020828501011115612dc457600080fd5b9250929050565b60008060008060608587031215612de157600080fd5b843593506020850135925060408501356001600160401b03811115612e0557600080fd5b612e1187828801612d83565b95989497509550505050565b600080600060408486031215612e3257600080fd5b83356001600160401b0380821115612e4957600080fd5b612e5587838801612d36565b94506020860135915080821115612e6b57600080fd5b50612e7886828701612d83565b9497909650939450505050565b60008060408385031215612e9857600080fd5b82356001600160401b03811115612eae57600080fd5b612c2485828601612d36565b60006101a08236031215612ecd57600080fd5b612ed5612ae7565b82358152612ee560208401612c55565b60208201526040830135604082015260608301356060820152612f0a60808401612c55565b6080820152612f1b60a08401612c55565b60a0820152612f2c60c08401612c55565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f7857600080fd5b612f8436838801612b55565b83850152610180925082860135915080821115612fa057600080fd5b50612fad36828701612b55565b918301919091525092915050565b60005b83811015612fd6578181015183820152602001612fbe565b50506000910152565b60008151808452612ff7816020860160208601612fbb565b601f01601f19169290920160200192915050565b8281526040602082015260006106386040830184612fdf565b60006020828403121561303657600080fd5b815161050a81612c40565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526106db81840185612fdf565b60208152600061050a6020830184612fdf565b6040808252600e908201526d7369676e616c5f7365727669636560901b6060820152901515602082015260800190565b6000602082840312156130eb57600080fd5b815161050a81612be1565b60208152815160208201526000602083015161311d60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161314c60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131ca6101c0860184612fdf565b90860151858203601f1901838701529092506131e68382612fdf565b9695505050505050565b9182526060602083018190526006908301526562726964676560d01b60808301521515604082015260a00190565b60008351613230818460208801612fbb565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050d5761050d613240565b6040808252600b908201526a195d1a195c97dd985d5b1d60aa1b6060820152901515602082015260800190565b6000600182016132a8576132a8613240565b5060010190565b6000602082840312156132c157600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261332857600080fd5b6040516101008082018281106001600160401b038211171561334c5761334c612ad1565b6040528301818582111561335f57600080fd5b845b82811015613379578035825260209182019101613361565b509195945050505050565b80356001600160801b03811681146106c757600080fd5b80356001600160401b03811681146106c757600080fd5b6000602082840312156133c457600080fd5b81356001600160401b03808211156133db57600080fd5b90830190604082860312156133ef57600080fd5b6133f7612b10565b82358281111561340657600080fd5b8301610300818803121561341957600080fd5b613421612b32565b813581526020820135602082015261343b60408301612c55565b6040820152606082013560608201526080820135608082015260a082013560a082015261346b8860c08401613317565b60c08201526101c08083013560e08301526101e061348a818501613384565b61010084015261020061349e81860161339b565b6101208501526134b1610220860161339b565b6101408501526134c4610240860161339b565b610160850152610260850135878111156134dd57600080fd5b6134e98c828801612b55565b610180860152506102808501356101a08501526135096102a0860161339b565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561353b57600080fd5b61354787828601612b55565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000610feb60a0830184612fdf565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e198436030181126135eb57600080fd5b8301803591506001600160401b0382111561360557600080fd5b602001915036819003821315612dc457600080fd5b8183823760009101908152919050565b604081016136388285612d06565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b600881101561368b57815183526020928301929091019060010161366c565b5050506101008201905092915050565b600083516136ad818460208801612fbb565b8351908301906136c1818360208801612fbb565b01949350505050565b60ff818116838216019081111561050d5761050d613240565b634e487b7160e01b600052601260045260246000fd5b600082613708576137086136e3565b500490565b808202811582820484141761050d5761050d613240565b8181038181111561050d5761050d613240565b600181815b8085111561377257816000190482111561375857613758613240565b8085161561376557918102915b93841c939080029061373c565b509250929050565b6000826137895750600161050d565b816137965750600061050d565b81600181146137ac57600281146137b6576137d2565b600191505061050d565b60ff8411156137c7576137c7613240565b50506001821b61050d565b5060208310610133831016604e8410600b84101617156137f5575081810a61050d565b6137ff8383613737565b806000190482111561381357613813613240565b029392505050565b600061050a838361377a565b600082613836576138366136e3565b50069056fea26469706673582212208eb10bd8da4d703ed3087c309caf1d5f32d6c3129e5e44fcb477ba34eeb14e7264736f6c63430008120033", + "code": "0x6080604052600436106101235760003560e01c8063715018a6116100a0578063ce70f39b11610064578063ce70f39b1461040e578063d0496d6a1461042e578063f2fde38b1461049d578063f9803919146104bd578063fee99b22146104dd57600080fd5b8063715018a6146103885780638da5cb5b1461039d57806396e17852146103bb578063a4444efd146103ce578063bac443e2146103ee57600080fd5b80635075a9d4116100e75780635075a9d4146102cd578063540be6a3146102fa5780635817b0c31461031a5780635d0bd98614610348578063606b5b741461036857600080fd5b80630ca4dffd146101f257806319ab453c1461022f5780631be2bfa71461024f578063343b643c1461026f5780633ab76e9f146102af57600080fd5b366101ed576101566040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b0316141580156101b657506101a06040518060400160405280600b81526020016a195d1a195c97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b031614155b80156101cd57506065546001600160a01b03163314155b156101eb576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101fe57600080fd5b5061021261020d366004612bef565b6104fd565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b57600080fd5b506101eb61024a366004612c60565b610513565b34801561025b57600080fd5b5061021261026a366004612c7d565b61062b565b34801561027b57600080fd5b5061029f61028a366004612cd7565b600090815260cd602052604090205460ff1690565b6040519015158152602001610226565b3480156102bb57600080fd5b506097546001600160a01b0316610212565b3480156102d957600080fd5b506102ed6102e8366004612cd7565b610642565b6040516102269190612d28565b34801561030657600080fd5b5061029f610315366004612cd7565b61064d565b34801561032657600080fd5b5061033a610335366004612d4f565b610659565b604051908152602001610226565b34801561035457600080fd5b5061029f610363366004612cd7565b61066c565b34801561037457600080fd5b5061033a610383366004612cd7565b61067f565b34801561039457600080fd5b506101eb61068a565b3480156103a957600080fd5b506065546001600160a01b0316610212565b61033a6103c9366004612d4f565b61069e565b3480156103da57600080fd5b5061029f6103e9366004612dcb565b6106cc565b3480156103fa57600080fd5b506101eb610409366004612e1d565b6106e4565b34801561041a57600080fd5b5061029f610429366004612dcb565b610708565b34801561043a57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610226565b3480156104a957600080fd5b506101eb6104b8366004612c60565b610717565b3480156104c957600080fd5b506101eb6104d8366004612e85565b610790565b3480156104e957600080fd5b506101eb6104f8366004612e1d565b6107ae565b600061050a4684846107c4565b90505b92915050565b600054610100900460ff16158080156105335750600054600160ff909116105b8061054d5750303b15801561054d575060005460ff166001145b6105b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105d8576000805461ff0019166101001790555b6105e182610894565b8015610627576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106388484846107c4565b90505b9392505050565b600061050d826108ad565b600061050d30836108d8565b600061050d61066783612eba565b6109b9565b600061067830836109e9565b5092915050565b600061050d82610a72565b610692610aad565b61069c6000610b07565b565b60006106a8610b59565b6106bc60c9306106b785612eba565b610bb2565b90506106c760018055565b919050565b60006106db3086868686610e93565b95945050505050565b6106ec610b59565b6106fa60c930858585610ff6565b61070360018055565b505050565b60006106db30868686866112e7565b61071f610aad565b6001600160a01b0381166107845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b61078d81610b07565b50565b610798610b59565b6107a560c930848461157c565b61062760018055565b6107b6610b59565b6106fa60c9308585856117b4565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906107f7908790879060040161300b565b602060405180830381865afa158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190613024565b90508161063b576040516001600160a01b03821615159061085f9086908690602001613041565b6040516020818303038152906040529061088c5760405162461bcd60e51b81526004016105ac9190613096565b509392505050565b61089c611cb3565b6108a4611ce2565b61078d81611d11565b6000806108b983610a72565b80549091508060038111156108d0576108d0612cf0565b949350505050565b604051630ca4dffd60e01b81526000906001600160a01b03841690630ca4dffd906109079084906004016130a9565b602060405180830381865afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109489190613024565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906130d9565b6000816040516020016109cc91906130f6565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316631be2bfa78460016040518363ffffffff1660e01b8152600401610a1b9291906131f0565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613024565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109cc92919061321e565b6065546001600160a01b0316331461069c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ac565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bab5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105ac565b6002600155565b60808101516000906001600160a01b0316610be0576040516301b1868360e71b815260040160405180910390fd5b600080610bf18585606001516109e9565b91509150811580610c055750468460600151145b15610c235760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c525750806001600160a01b03168460a001516001600160a01b0316145b15610c705760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610c8d9190613256565b610c979190613256565b9050348114610cb957604051632609a19760e21b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd90610ce990600190600401613269565b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190613024565b9050610d3f6001600160a01b03821683611d5a565b8754886000610d4d83613296565b909155508652336020870152466040870152610d68866109b9565b604051630ca4dffd60e01b81529095506001600160a01b03881690630ca4dffd90610d98906000906004016130a9565b602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190613024565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e0691815260200190565b6020604051808303816000875af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906132af565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e7a91906130f6565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316631be2bfa78660006040518363ffffffff1660e01b8152600401610ec59291906131f0565b602060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190613024565b604051630ca4dffd60e01b81529091506001600160a01b03881690630ca4dffd90610f36906000906004016130a9565b602060405180830381865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f779190613024565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610faa9594939291906132c8565b602060405180830381865afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb91906130d9565b979650505050505050565b600061100860a0850160808601612c60565b6001600160a01b03160361102f576040516301b1868360e71b815260040160405180910390fd5b468360400135146110535760405163e822b48d60e01b815260040160405180910390fd5b600061106161066785612eba565b600081815260048801602052604090205490915060ff16151560010361109a5760405163afde133560e01b815260040160405180910390fd5b6110ab8582866060013586866112e7565b6110c85760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff191660011790556110f661010086013560e0870135613256565b9050801561128b57604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd9061112e90600190600401613269565b602060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f9190613024565b90506001600160a01b03811615611204576001600160a01b03811663ba0bbd9561119f60a0890160808a01612c60565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b50505050611289565b600061121660a0880160808901612c60565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114611260576040519150601f19603f3d011682016040523d82523d6000602084013e611265565b606091505b50509050806112875760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112bd60a0880160808901612c60565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113095760405163e822b48d60e01b815260040160405180910390fd5b600085900361132b5760405163a6407c9360e01b815260040160405180910390fd5b6000611339838501856133b2565b60408051630ca4dffd60e01b8152600481019190915260056044820152647461696b6f60d81b60648201526000602482018190529192506001600160a01b03891690630ca4dffd90608401602060405180830381865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c59190613024565b8251610100015160405163a4e6775f60e01b81526001600160801b0390911660048201526001600160a01b03919091169063a4e6775f90602401602060405180830381865afa15801561141c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144091906132af565b90508015806114595750815161145590611e10565b8114155b15611469576000925050506106db565b815160600151604051631be2bfa760e01b815273489Fc09698479ac665A7c91502acDB69A047Fe1a9163a5427462916001600160a01b038c1690631be2bfa7906114ba908c906000906004016131f0565b602060405180830381865afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613024565b6115048b610a72565b602087015160405160e086901b6001600160e01b031916815261152f94939291600391600401613556565b602060405180830381865af415801561154c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157091906130d9565b98975050505050505050565b610140820135158061158b5750805b156115d1576115a060a0830160808401612c60565b6001600160a01b0316336001600160a01b0316146115d15760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115df61066784612eba565b905060016115ec826108ad565b60038111156115fd576115fd612cf0565b1461161b57604051631f6646b560e01b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03861690630ca4dffd9061164b90600190600401613269565b602060405180830381865afa158015611668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168c9190613024565b90506001600160a01b038116156116fc57604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505b6117088685845a611e35565b1561171d57611718826002611f8d565b6117ac565b82156117945761172e826003611f8d565b60008061174160e0870160c08801612c60565b6001600160a01b0316146117645761175f60e0860160c08701612c60565b611774565b61177460a0860160808701612c60565b905061178e6001600160a01b038216610100870135611d5a565b506117ac565b6117ac6001600160a01b038216610100860135611d5a565b505050505050565b6101408301351580156117e857506117d260a0840160808501612c60565b6001600160a01b0316336001600160a01b031614155b156118065760405163398b635960e21b815260040160405180910390fd5b4683606001351461182a5760405163e822b48d60e01b815260040160405180910390fd5b600061183861066785612eba565b90506000611845826108ad565b600381111561185657611856612cf0565b1461187457604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316631be2bfa7866040013560006040518363ffffffff1660e01b81526004016118a99291906131f0565b602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190613024565b604051630ca4dffd60e01b81529091506001600160a01b03871690630ca4dffd9061191a906000906004016130a9565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190613024565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b81526004016119929594939291906132c8565b602060405180830381865afa1580156119af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d391906130d9565b6119f0576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a0b61010088013560e0890135613256565b611a159190613256565b90506000876001600160a01b0316630ca4dffd60016040518263ffffffff1660e01b8152600401611a469190613269565b602060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190613024565b90506001600160a01b03811615801590611aa15750600082115b15611b0157604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050505b611b2860e0880135611b1960a08a0160808b01612c60565b6001600160a01b031690611d5a565b60008030611b3c60c08b0160a08c01612c60565b6001600160a01b03161480611b6957506000611b5e60c08b0160a08c01612c60565b6001600160a01b0316145b15611b7e575060029050610100880135611bf5565b6000611b9060a08b0160808c01612c60565b6001600160a01b0316336001600160a01b031614611bb357896101400135611bb5565b5a5b90506000611bc58d8c8a85611e35565b90508015611bd65760029350611bf2565b60019350611bf26001600160a01b0386166101008d0135611d5a565b50505b611bff8683611f8d565b600080611c1260e08c0160c08d01612c60565b6001600160a01b031614611c3557611c3060e08b0160c08c01612c60565b611c45565b611c4560a08b0160808c01612c60565b90506001600160a01b0381163303611c83576000611c68836101208d0135613256565b9050611c7d6001600160a01b03831682611d5a565b50611ca5565b611c92336101208c0135611d5a565b611ca56001600160a01b03821683611d5a565b505050505050505050505050565b600054610100900460ff16611cda5760405162461bcd60e51b81526004016105ac90613589565b61069c612006565b600054610100900460ff16611d095760405162461bcd60e51b81526004016105ac90613589565b61069c61202d565b6001600160a01b038116611d3857604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d6e57506001600160a01b038216155b15611d77575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b50509050806107035760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016105ac565b600080611e26611e2184600061205d565b61247e565b80516020909101209392505050565b600081600003611e5857604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e7c9190612c60565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ece60c0850160a08601612c60565b6001600160a01b031682610100860135611eec6101608801886135d4565b604051611efa92919061361a565b600060405180830381858888f193505050503d8060008114611f38576040519150601f19603f3d011682016040523d82523d6000602084013e611f3d565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611f9f57611f9f612cf0565b611fa8836108ad565b6003811115611fb957611fb9612cf0565b1461062757611fc882826124c2565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c8233604051611ffa92919061362a565b60405180910390a25050565b600054610100900460ff16610e8d5760405162461bcd60e51b81526004016105ac90613589565b600054610100900460ff166120545760405162461bcd60e51b81526004016105ac90613589565b61069c33610b07565b610200820151606090156120c857612076826011613256565b6001600160401b0381111561208d5761208d612ad1565b6040519080825280602002602001820160405280156120c057816020015b60608152602001906001900390816120ab5790505b509050612137565b6101e0830151156120de57612076826010613256565b6120e982600f613256565b6001600160401b0381111561210057612100612ad1565b60405190808252806020026020018201604052801561213357816020015b606081526020019060019003908161211e5790505b5090505b8251612142906124eb565b8160008151811061215557612155613650565b602002602001018190525061216d83602001516124eb565b8160018151811061218057612180613650565b602002602001018190525061219883604001516124fe565b816002815181106121ab576121ab613650565b60200260200101819052506121c383606001516124eb565b816003815181106121d6576121d6613650565b60200260200101819052506121ee83608001516124eb565b8160048151811061220157612201613650565b60200260200101819052506122198360a001516124eb565b8160058151811061222c5761222c613650565b60200260200101819052506122638360c0015160405160200161224f9190613666565b604051602081830303815290604052612527565b8160068151811061227657612276613650565b602002602001018190525061228e8360e00151612596565b816007815181106122a1576122a1613650565b60200260200101819052506122c38361010001516001600160801b0316612596565b816008815181106122d6576122d6613650565b60200260200101819052506122ef8361012001516125a4565b8160098151811061230257612302613650565b602002602001018190525061231b8361014001516125a4565b81600a8151811061232e5761232e613650565b60200260200101819052506123478361016001516125a4565b81600b8151811061235a5761235a613650565b6020026020010181905250612373836101800151612527565b81600c8151811061238657612386613650565b602002602001018190525061239f836101a001516124eb565b81600d815181106123b2576123b2613650565b60200260200101819052506123e9836101c0015160405160200161224f919060c09190911b6001600160c01b031916815260080190565b81600e815181106123fc576123fc613650565b6020026020010181905250826101e0015160001461244157612422836101e00151612596565b81600f8151811061243557612435613650565b60200260200101819052505b6102008301511561050d5761245a8361020001516124eb565b8160108151811061246d5761246d613650565b602002602001018190525092915050565b6060600061248b836125bb565b9050612499815160c06126f0565b816040516020016124ab92919061369b565b604051602081830303815290604052915050919050565b60006124cd83610a72565b905060008260038111156124e3576124e3612cf0565b909155505050565b606061050d6124f983612898565b612527565b604051606082811b6bffffffffffffffffffffffff191660208301529061050d9060340161224f565b60608082516001148015612555575060808360008151811061254b5761254b613650565b016020015160f81c105b1561256157508161050d565b61256d835160806126f0565b8360405160200161257f92919061369b565b604051602081830303815290604052905092915050565b606061050d6124f98361294a565b606061050d6124f9836001600160401b031661294a565b606081516000036125dc576040805160008082526020820190925290610678565b6000805b8351811015612621578381815181106125fb576125fb613650565b6020026020010151518261260f9190613256565b915061261a81613296565b90506125e0565b6000826001600160401b0381111561263b5761263b612ad1565b6040519080825280601f01601f191660200182016040528015612665576020820181803683370190505b50600092509050602081015b85518310156126e757600086848151811061268e5761268e613650565b6020026020010151905060006020820190506126ac83828451612a74565b8785815181106126be576126be613650565b602002602001015151836126d29190613256565b92505050826126e090613296565b9250612671565b50949350505050565b6060806038841015612757576040805160018082528183019092529060208201818036833701905050905061272583856136ca565b60f81b8160008151811061273b5761273b613650565b60200101906001600160f81b031916908160001a90535061050a565b600060015b61276681876136f9565b156127895761277482613296565b91506127826101008261370d565b905061275c565b612794826001613256565b6001600160401b038111156127ab576127ab612ad1565b6040519080825280601f01601f1916602001820160405280156127d5576020820181803683370190505b5092506127e285836136ca565b6127ed9060376136ca565b60f81b8360008151811061280357612803613650565b60200101906001600160f81b031916908160001a905350600190505b81811161288f576101006128338284613724565b61283f9061010061381b565b61284990886136f9565b6128539190613827565b60f81b83828151811061286857612868613650565b60200101906001600160f81b031916908160001a90535061288881613296565b905061281f565b50509392505050565b60606000826040516020016128af91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126e75783836128f481613296565b94508151811061290657612906613650565b602001015160f81c60f81b82828151811061292357612923613650565b60200101906001600160f81b031916908160001a90535061294381613296565b90506128e0565b606060008260405160200161296191815260200190565b604051602081830303815290604052905060005b60208110156129b65781818151811061299057612990613650565b01602001516001600160f81b0319166000036129b6576129af81613296565b9050612975565b60006129c3826020613724565b6001600160401b038111156129da576129da612ad1565b6040519080825280601f01601f191660200182016040528015612a04576020820181803683370190505b50905060005b81518110156126e7578383612a1e81613296565b945081518110612a3057612a30613650565b602001015160f81c60f81b828281518110612a4d57612a4d613650565b60200101906001600160f81b031916908160001a905350612a6d81613296565b9050612a0a565b8282825b60208110612ab05781518352612a8f602084613256565b9250612a9c602083613256565b9150612aa9602082613724565b9050612a78565b905182516020929092036101000a6000190180199091169116179052505050565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405290565b604080519081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405161022081016001600160401b0381118282101715612b0a57612b0a612ad1565b600082601f830112612b6657600080fd5b81356001600160401b0380821115612b8057612b80612ad1565b604051601f8301601f19908116603f01168101908282118183101715612ba857612ba8612ad1565b81604052838152866020858801011115612bc157600080fd5b836020870160208301376000602085830101528094505050505092915050565b801515811461078d57600080fd5b60008060408385031215612c0257600080fd5b82356001600160401b03811115612c1857600080fd5b612c2485828601612b55565b9250506020830135612c3581612be1565b809150509250929050565b6001600160a01b038116811461078d57600080fd5b80356106c781612c40565b600060208284031215612c7257600080fd5b813561050a81612c40565b600080600060608486031215612c9257600080fd5b8335925060208401356001600160401b03811115612caf57600080fd5b612cbb86828701612b55565b9250506040840135612ccc81612be1565b809150509250925092565b600060208284031215612ce957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612d2457634e487b7160e01b600052602160045260246000fd5b9052565b6020810161050d8284612d06565b60006101a08284031215612d4957600080fd5b50919050565b600060208284031215612d6157600080fd5b81356001600160401b03811115612d7757600080fd5b6108d084828501612d36565b60008083601f840112612d9557600080fd5b5081356001600160401b03811115612dac57600080fd5b602083019150836020828501011115612dc457600080fd5b9250929050565b60008060008060608587031215612de157600080fd5b843593506020850135925060408501356001600160401b03811115612e0557600080fd5b612e1187828801612d83565b95989497509550505050565b600080600060408486031215612e3257600080fd5b83356001600160401b0380821115612e4957600080fd5b612e5587838801612d36565b94506020860135915080821115612e6b57600080fd5b50612e7886828701612d83565b9497909650939450505050565b60008060408385031215612e9857600080fd5b82356001600160401b03811115612eae57600080fd5b612c2485828601612d36565b60006101a08236031215612ecd57600080fd5b612ed5612ae7565b82358152612ee560208401612c55565b60208201526040830135604082015260608301356060820152612f0a60808401612c55565b6080820152612f1b60a08401612c55565b60a0820152612f2c60c08401612c55565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f7857600080fd5b612f8436838801612b55565b83850152610180925082860135915080821115612fa057600080fd5b50612fad36828701612b55565b918301919091525092915050565b60005b83811015612fd6578181015183820152602001612fbe565b50506000910152565b60008151808452612ff7816020860160208601612fbb565b601f01601f19169290920160200192915050565b8281526040602082015260006106386040830184612fdf565b60006020828403121561303657600080fd5b815161050a81612c40565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526106db81840185612fdf565b60208152600061050a6020830184612fdf565b6040808252600e908201526d7369676e616c5f7365727669636560901b6060820152901515602082015260800190565b6000602082840312156130eb57600080fd5b815161050a81612be1565b60208152815160208201526000602083015161311d60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161314c60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131ca6101c0860184612fdf565b90860151858203601f1901838701529092506131e68382612fdf565b9695505050505050565b9182526060602083018190526006908301526562726964676560d01b60808301521515604082015260a00190565b60008351613230818460208801612fbb565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050d5761050d613240565b6040808252600b908201526a195d1a195c97dd985d5b1d60aa1b6060820152901515602082015260800190565b6000600182016132a8576132a8613240565b5060010190565b6000602082840312156132c157600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261332857600080fd5b6040516101008082018281106001600160401b038211171561334c5761334c612ad1565b6040528301818582111561335f57600080fd5b845b82811015613379578035825260209182019101613361565b509195945050505050565b80356001600160801b03811681146106c757600080fd5b80356001600160401b03811681146106c757600080fd5b6000602082840312156133c457600080fd5b81356001600160401b03808211156133db57600080fd5b90830190604082860312156133ef57600080fd5b6133f7612b10565b82358281111561340657600080fd5b8301610300818803121561341957600080fd5b613421612b32565b813581526020820135602082015261343b60408301612c55565b6040820152606082013560608201526080820135608082015260a082013560a082015261346b8860c08401613317565b60c08201526101c08083013560e08301526101e061348a818501613384565b61010084015261020061349e81860161339b565b6101208501526134b1610220860161339b565b6101408501526134c4610240860161339b565b610160850152610260850135878111156134dd57600080fd5b6134e98c828801612b55565b610180860152506102808501356101a08501526135096102a0860161339b565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561353b57600080fd5b61354787828601612b55565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000610feb60a0830184612fdf565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e198436030181126135eb57600080fd5b8301803591506001600160401b0382111561360557600080fd5b602001915036819003821315612dc457600080fd5b8183823760009101908152919050565b604081016136388285612d06565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b600881101561368b57815183526020928301929091019060010161366c565b5050506101008201905092915050565b600083516136ad818460208801612fbb565b8351908301906136c1818360208801612fbb565b01949350505050565b60ff818116838216019081111561050d5761050d613240565b634e487b7160e01b600052601260045260246000fd5b600082613708576137086136e3565b500490565b808202811582820484141761050d5761050d613240565b8181038181111561050d5761050d613240565b600181815b8085111561377257816000190482111561375857613758613240565b8085161561376557918102915b93841c939080029061373c565b509250929050565b6000826137895750600161050d565b816137965750600061050d565b81600181146137ac57600281146137b6576137d2565b600191505061050d565b60ff8411156137c7576137c7613240565b50506001821b61050d565b5060208310610133831016604e8410600b84101617156137f5575081810a61050d565b6137ff8383613737565b806000190482111561381357613813613240565b029392505050565b600061050a838361377a565b600082613836576138366136e3565b50069056fea264697066735822122070121f05246570406412e10c8eb43e53cc86def55bb41d395a1641cd8b70ae8d64736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000002": { @@ -93,7 +90,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x6080604052600436106100dd5760003560e01c8063780b64f01161007f5780639aa8605c116100595780639aa8605c14610292578063c287e578146102c3578063ee1490b214610303578063f2fde38b1461031657600080fd5b8063780b64f0146101f55780638da5cb5b146102545780639754149b1461027257600080fd5b80631be2bfa7116100bb5780631be2bfa7146101615780633ab76e9f1461018157806367090ccf1461019f578063715018a6146101e057600080fd5b80630c6fab82146100e25780630ca4dffd1461010457806319ab453c14610141575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611fd3565b610336565b005b34801561011057600080fd5b5061012461011f366004612112565b610577565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014d57600080fd5b5061010261015c366004612163565b61058d565b34801561016d57600080fd5b5061012461017c366004612180565b6106a5565b34801561018d57600080fd5b506097546001600160a01b0316610124565b3480156101ab57600080fd5b506101246101ba3660046121da565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101ec57600080fd5b506101026106bc565b34801561020157600080fd5b506102356102103660046121ff565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610138565b34801561026057600080fd5b506065546001600160a01b0316610124565b34801561027e57600080fd5b5061010261028d366004612218565b6106d0565b34801561029e57600080fd5b506102b26102ad366004612163565b610a33565b604051610138959493929190612307565b3480156102cf57600080fd5b506102f36102de366004612163565b60c96020526000908152604090205460ff1681565b6040519015158152602001610138565b610102610311366004612358565b610b84565b34801561032257600080fd5b50610102610331366004612163565b6113f3565b61033e61146c565b6040518060400160405280600681526020016562726964676560d01b815250610368816000610577565b6001600160a01b0316336001600160a01b03161461039957604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fd91906123f3565b905061043281604001516040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b031681602001516001600160a01b031614610467576040516320258b8760e21b815260040160405180910390fd5b60004687350361049c576104816040880160208901612163565b90506104976001600160a01b03821686866114c5565b61050c565b6104a587611528565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104f357600080fd5b505af1158015610507573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061057160018055565b50505050565b6000610584468484611587565b90505b92915050565b600054610100900460ff16158080156105ad5750600054600160ff909116105b806105c75750303b1580156105c7575060005460ff166001145b61062f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610652576000805461ff0019166101001790555b61065b82611657565b80156106a1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106b2848484611587565b90505b9392505050565b6106c4611670565b6106ce60006116ca565b565b6106d861146c565b60006106ea60a0850160808601612163565b6001600160a01b031603610711576040516372b41cdf60e01b815260040160405180910390fd5b46836040013514610735576040516348bc100560e01b815260040160405180910390fd5b60006107606040518060400160405280600681526020016562726964676560d01b8152506000610577565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b815260040161079091906124c9565b602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906125e7565b600081815260cc6020526040902080546001909101549192506001600160a01b0316908161081257604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b9061084890869060608c0135908b908b90600401612600565b602060405180830381865afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061262a565b6108a6576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b03909116178155905160019091015580156109ba576001600160a01b038216600090815260c9602052604090205460ff1615610996576001600160a01b0382166342e91bb361093160a08a0160808b01612163565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506109ba565b6109ba6109a960a0890160808a01612163565b6001600160a01b03841690836114c5565b6109ca60a0880160808901612163565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af68484604051610a199291906001600160a01b03929092168252602082015260400190565b60405180910390a350505050610a2e60018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a7390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f90612647565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505090806003018054610b0190612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90612647565b8015610b7a5780601f10610b4f57610100808354040283529160200191610b7a565b820191906000526020600020905b815481529060010190602001808311610b5d57829003601f168201915b5050505050905085565b610b8c61146c565b6001600160a01b0387161580610be15750610bcc886040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b0316876001600160a01b0316145b15610bff57604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610c2657604051637c6addb760e01b815260040160405180910390fd5b84600003610c465760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e9d57604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610d5390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7f90612647565b8015610dcc5780601f10610da157610100808354040283529160200191610dcc565b820191906000526020600020905b815481529060010190602001808311610daf57829003601f168201915b50505050508152602001600382018054610de590612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1190612647565b8015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e9657604051633e45a03560e21b815260040160405180910390fd5b50856110fd565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190612690565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9291908101906126ad565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffd91908101906126ad565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906125e7565b90506110846001600160a01b03831633308c61171c565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee91906125e7565b6110f89190612723565b925050505b61118c604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015260408051808201909152600b81526a1d1bdad95b97dd985d5b1d60aa1b60208201526111c8908c9060006106a5565b6001600160a01b031660a08201526080810151604051630637d5c160e11b916111fa918691908e908790602401612744565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526101608201526101408101879052610120810186905261124c8634612723565b60e08201526001600160a01b03851660c0820152610180810184905260408051808201909152600681526562726964676560d01b60208201526000906112929082610577565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b81526004016112be91906127dc565b60206040518083038185885af11580156112dc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130191906125e7565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e886040516113d4939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a4505050506113e960018055565b5050505050505050565b6113fb611670565b6001600160a01b0381166114605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b611469816116ca565b50565b6002600154036114be5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610626565b6002600155565b6040516001600160a01b038316602482015260448101829052610a2e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611754565b8035600090815260cb6020908152604080832083929091839161154f918701908701612163565b6001600160a01b039081168252602082019290925260400160002054169050806105875761157c83611826565b6106b5565b60018055565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906115ba90879087906004016128cc565b602060405180830381865afa1580156115d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fb91906128e5565b9050816106b5576040516001600160a01b0382161515906116229086908690602001612902565b6040516020818303038152906040529061164f5760405162461bcd60e51b81526004016106269190612957565b509392505050565b61165f611aab565b611667611ada565b61146981611b09565b6065546001600160a01b031633146106ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610626565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105719085906323b872dd60e01b906084016114f1565b60006117a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b529092919063ffffffff16565b805190915015610a2e57808060200190518101906117c7919061262a565b610a2e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b600061189f81833561183e6040860160208701612163565b60405161186192916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161188790611fa1565b601f1982820381018352601f90910116604052611b61565b6097549091506001600160a01b0380831691636c0db62b91166118c86040860160208701612163565b85356118da606088016040890161296a565b6118e76060890189612987565b6118f460808b018b612987565b6118fe8c35611c65565b604051602001611910939291906129cd565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119419796959493929190612a16565b600060405180830381600087803b15801561195b57600080fd5b505af115801561196f573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119ac8282612b81565b50508135600090815260cb602090815260408083208493909290916119d691908701908701612163565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316826020016020810190611a379190612163565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a706060870187612987565b611a7d6080890189612987565b611a8d60608b0160408c0161296a565b604051611a9e959493929190612c08565b60405180910390a4919050565b600054610100900460ff16611ad25760405162461bcd60e51b815260040161062690612c45565b6106ce611cf7565b600054610100900460ff16611b015760405162461bcd60e51b815260040161062690612c45565b6106ce611d1e565b6001600160a01b038116611b3057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60606106b28484600085611d4e565b600083471015611bb35760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610626565b8151600003611c045760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610626565b8282516020840186f590506001600160a01b0381166106b55760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610626565b60606000611c7283611e2b565b60010190506000816001600160401b03811115611c9157611c91612041565b6040519080825280601f01601f191660200182016040528015611cbb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611cc557509392505050565b600054610100900460ff166115815760405162461bcd60e51b815260040161062690612c45565b600054610100900460ff16611d455760405162461bcd60e51b815260040161062690612c45565b6106ce336116ca565b606082471015611daf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b600080866001600160a01b03168587604051611dcb9190612c90565b60006040518083038185875af1925050503d8060008114611e08576040519150601f19603f3d011682016040523d82523d6000602084013e611e0d565b606091505b5091509150611e1e87838387611f03565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e6a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e96576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611eb457662386f26fc10000830492506010015b6305f5e1008310611ecc576305f5e100830492506008015b6127108310611ee057612710830492506004015b60648310611ef2576064830492506002015b600a83106105875760010192915050565b60608315611f72578251600003611f6b576001600160a01b0385163b611f6b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b5081611e23565b611e238383815115611f875781518083602001fd5b8060405162461bcd60e51b81526004016106269190612957565b61179b80612cad83390190565b6001600160a01b038116811461146957600080fd5b8035611fce81611fae565b919050565b60008060008060808587031215611fe957600080fd5b84356001600160401b03811115611fff57600080fd5b850160a0818803121561201157600080fd5b9350602085013561202181611fae565b9250604085013561203181611fae565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561207f5761207f612041565b604052919050565b60006001600160401b038211156120a0576120a0612041565b50601f01601f191660200190565b600082601f8301126120bf57600080fd5b81356120d26120cd82612087565b612057565b8181528460208386010111156120e757600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461146957600080fd5b6000806040838503121561212557600080fd5b82356001600160401b0381111561213b57600080fd5b612147858286016120ae565b925050602083013561215881612104565b809150509250929050565b60006020828403121561217557600080fd5b81356106b581611fae565b60008060006060848603121561219557600080fd5b8335925060208401356001600160401b038111156121b257600080fd5b6121be868287016120ae565b92505060408401356121cf81612104565b809150509250925092565b600080604083850312156121ed57600080fd5b82359150602083013561215881611fae565b60006020828403121561221157600080fd5b5035919050565b60008060006040848603121561222d57600080fd5b83356001600160401b038082111561224457600080fd5b908501906101a0828803121561225957600080fd5b9093506020850135908082111561226f57600080fd5b818601915086601f83011261228357600080fd5b81358181111561229257600080fd5b8760208285010111156122a457600080fd5b6020830194508093505050509250925092565b60005b838110156122d25781810151838201526020016122ba565b50506000910152565b600081518084526122f38160208601602086016122b7565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a06060820181905260009061233a908301856122db565b828103608084015261234c81856122db565b98975050505050505050565b600080600080600080600080610100898b03121561237557600080fd5b88359750602089013561238781611fae565b9650604089013561239781611fae565b9550606089013594506080890135935060a0890135925060c08901356123bc81611fae565b915060e08901356001600160401b038111156123d757600080fd5b6123e38b828c016120ae565b9150509295985092959890939650565b60006060828403121561240557600080fd5b604051606081018181106001600160401b038211171561242757612427612041565b60405282518152602083015161243c81611fae565b60208201526040928301519281019290925250919050565b6000808335601e1984360301811261246b57600080fd5b83016020810192503590506001600160401b0381111561248a57600080fd5b80360382131561249957600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081528135602082015260006124e260208401611fc3565b6001600160a01b038116604084015250604083013560608301526060830135608083015261251260808401611fc3565b6001600160a01b03811660a08401525061252e60a08401611fc3565b6001600160a01b03811660c08401525061254a60c08401611fc3565b6001600160a01b03811660e08401525061010060e08401358184015261012081850135818501526101409150808501358285015250610160818501358185015261259681860186612454565b925090506101a061018081818701526125b46101c0870185856124a0565b93506125c281880188612454565b878603601f190184890152935090506125dc8484836124a0565b979650505050505050565b6000602082840312156125f957600080fd5b5051919050565b8481528360208201526060604082015260006126206060830184866124a0565b9695505050505050565b60006020828403121561263c57600080fd5b81516106b581612104565b600181811c9082168061265b57607f821691505b60208210810361267b57634e487b7160e01b600052602260045260246000fd5b50919050565b60ff8116811461146957600080fd5b6000602082840312156126a257600080fd5b81516106b581612681565b6000602082840312156126bf57600080fd5b81516001600160401b038111156126d557600080fd5b8201601f810184136126e657600080fd5b80516126f46120cd82612087565b81815285602083850101111561270957600080fd5b61271a8260208301602086016122b7565b95945050505050565b8181038181111561058757634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261278e6101208501836122db565b91506080880151607f19858403016101008601526127ac83826122db565b9188166020860152506001600160a01b038616604085015291506127cd9050565b82606083015295945050505050565b60208152815160208201526000602083015161280360408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161283260a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526128b06101c08601846122db565b90860151858203601f19018387015290925061262083826122db565b8281526040602082015260006106b260408301846122db565b6000602082840312156128f757600080fd5b81516106b581611fae565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e0820152600061010080606084015261271a818401856122db565b60208152600061058460208301846122db565b60006020828403121561297c57600080fd5b81356106b581612681565b6000808335601e1984360301811261299e57600080fd5b8301803591506001600160401b038211156129b857600080fd5b60200191503681900382131561249957600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b815283516129fb81600c8401602088016122b7565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612a5390830185876124a0565b82810360a0840152612a6581856122db565b9a9950505050505050505050565b601f821115610a2e57600081815260208120601f850160051c81016020861015612a9a5750805b601f850160051c820191505b81811015612ab957828155600101612aa6565b505050505050565b6001600160401b03831115612ad857612ad8612041565b612aec83612ae68354612647565b83612a73565b6000601f841160018114612b205760008515612b085750838201355b600019600387901b1c1916600186901b178355612b7a565b600083815260209020601f19861690835b82811015612b515786850135825560209485019460019092019101612b31565b5086821015612b6e5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612b9781611fae565b81546040850135612ba781612681565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612bdd6060830183612987565b612beb818360028601612ac1565b5050612bfa6080830183612987565b610571818360038601612ac1565b606081526000612c1c6060830187896124a0565b8281036020840152612c2f8186886124a0565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612ca28184602087016122b7565b919091019291505056fe608060405234801561001057600080fd5b5061177b806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806367e828bf116100c35780638da5cb5b1161007c5780638da5cb5b146102ed57806395d89b41146102fe578063a457c2d714610306578063a9059cbb14610319578063dd62ed3e1461032c578063f2fde38b1461036557600080fd5b806367e828bf1461024d5780636c0db62b1461028357806370a0823114610296578063715018a6146102bf57806377be18a8146102c75780637cf8ed0d146102da57600080fd5b806323b872dd1161011557806323b872dd146101e3578063313ce567146101f6578063395093511461020b5780633ab76e9f1461021e57806342e91bb31461022f57806349d126051461024457600080fd5b806306fdde0314610152578063095ea7b3146101705780630ca4dffd1461019357806318160ddd146101be5780631be2bfa7146101d0575b600080fd5b61015a610378565b60405161016791906111f0565b60405180910390f35b61018361017e366004611218565b61040a565b6040519015158152602001610167565b6101a66101a13660046112fc565b610424565b6040516001600160a01b039091168152602001610167565b60cb545b604051908152602001610167565b6101a66101de36600461134a565b610438565b6101836101f13660046113a1565b61044d565b60ce5460405160ff9091168152602001610167565b610183610219366004611218565b610483565b6097546001600160a01b03166101a6565b61024261023d366004611218565b6104c2565b005b6101c260fc5481565b61026460fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b6102426102913660046113e2565b610574565b6101c26102a436600461148c565b6001600160a01b0316600090815260c9602052604090205490565b61024261070c565b6102426102d5366004611218565b610720565b60fb546101a6906001600160a01b031681565b6065546001600160a01b03166101a6565b61015a6107c5565b610183610314366004611218565b6107d4565b610183610327366004611218565b610871565b6101c261033a3660046114a9565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61024261037336600461148c565b6108a6565b606060cc8054610387906114e2565b80601f01602080910402602001604051908101604052809291908181526020018280546103b3906114e2565b80156104005780601f106103d557610100808354040283529160200191610400565b820191906000526020600020905b8154815290600101906020018083116103e357829003601f168201915b5050505050905090565b60003361041881858561091f565b60019150505b92915050565b6000610431468484610a43565b9392505050565b6000610445848484610a43565b949350505050565b6000306001600160a01b03841603610478576040516319a6f37760e21b815260040160405180910390fd5b610445848484610b13565b33600081815260ca602090815260408083206001600160a01b038716845290915281205490919061041890829086906104bd908790611532565b61091f565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b8152506104f1816000610424565b6001600160a01b0316336001600160a01b03161461052257604051630d85cccf60e11b815260040160405180910390fd5b61052c8383610b2c565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161056791815260200190565b60405180910390a2505050565b600054610100900460ff16158080156105945750600054600160ff909116105b806105ae5750303b1580156105ae575060005460ff166001145b6106165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610639576000805461ff0019166101001790555b6001600160a01b038616158061064d575084155b8061065757504685145b8061066157508251155b8061066b57508151155b15610689576040516301e25ab360e71b815260040160405180910390fd5b61069287610bd0565b61069d828486610be9565b60fb80546001600160a01b0319166001600160a01b03881617905560fc8590558015610703576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610714610c20565b61071e6000610c7a565b565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525061074f816000610424565b6001600160a01b0316336001600160a01b03161461078057604051630d85cccf60e11b815260040160405180910390fd5b61078a8383610ccc565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161056791815260200190565b606060cd8054610387906114e2565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190838110156108595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b610866828686840361091f565b506001949350505050565b6000306001600160a01b0384160361089c576040516319a6f37760e21b815260040160405180910390fd5b6104318383610ddf565b6108ae610c20565b6001600160a01b0381166109135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61091c81610c7a565b50565b6001600160a01b0383166109815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610a769087908790600401611545565b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab7919061155e565b905081610431576040516001600160a01b038216151590610ade908690869060200161157b565b60405160208183030381529060405290610b0b5760405162461bcd60e51b815260040161060d91906111f0565b509392505050565b600033610b21858285610ded565b610866858585610e7f565b6001600160a01b038216610b825760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060d565b8060cb6000828254610b949190611532565b90915550506001600160a01b038216600090815260c9602052604081208054839290610bc1908490611532565b90915550610bcc9050565b5050565b610bd861104d565b610be061107c565b61091c816110ab565b600054610100900460ff16610c105760405162461bcd60e51b815260040161060d906115d9565b610c1b8383836110f4565b505050565b6065546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d2c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b6001600160a01b038216600090815260c9602052604090205481811015610da05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038316600090815260c960205260408120838303905560cb8054849290610dcf908490611624565b90915550610c1b90508360008483565b600033610418818585610e7f565b6001600160a01b03838116600090815260ca60209081526040808320938616835292905220546000198114610e795781811015610e6c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610e79848484840361091f565b50505050565b6001600160a01b038316610ee35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610f455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b6001600160a01b038316600090815260c9602052604090205481811015610fbd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b03808516600090815260c96020526040808220858503905591851681529081208054849290610ff4908490611532565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104091815260200190565b60405180910390a3610e79565b600054610100900460ff166110745760405162461bcd60e51b815260040161060d906115d9565b61071e61114d565b600054610100900460ff166110a35760405162461bcd60e51b815260040161060d906115d9565b61071e61117a565b6001600160a01b0381166110d257604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661111b5760405162461bcd60e51b815260040161060d906115d9565b60cc6111278482611685565b5060cd6111348382611685565b5060ce805460ff191660ff929092169190911790555050565b600054610100900460ff166111745760405162461bcd60e51b815260040161060d906115d9565b60018055565b600054610100900460ff166111a15760405162461bcd60e51b815260040161060d906115d9565b61071e33610c7a565b6000815180845260005b818110156111d0576020818501810151868301820152016111b4565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061043160208301846111aa565b6001600160a01b038116811461091c57600080fd5b6000806040838503121561122b57600080fd5b823561123681611203565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261126b57600080fd5b813567ffffffffffffffff8082111561128657611286611244565b604051601f8301601f19908116603f011681019082821181831017156112ae576112ae611244565b816040528381528660208588010111156112c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b803580151581146112f757600080fd5b919050565b6000806040838503121561130f57600080fd5b823567ffffffffffffffff81111561132657600080fd5b6113328582860161125a565b925050611341602084016112e7565b90509250929050565b60008060006060848603121561135f57600080fd5b83359250602084013567ffffffffffffffff81111561137d57600080fd5b6113898682870161125a565b925050611398604085016112e7565b90509250925092565b6000806000606084860312156113b657600080fd5b83356113c181611203565b925060208401356113d181611203565b929592945050506040919091013590565b60008060008060008060c087890312156113fb57600080fd5b863561140681611203565b9550602087013561141681611203565b945060408701359350606087013560ff8116811461143357600080fd5b9250608087013567ffffffffffffffff8082111561145057600080fd5b61145c8a838b0161125a565b935060a089013591508082111561147257600080fd5b5061147f89828a0161125a565b9150509295509295509295565b60006020828403121561149e57600080fd5b813561043181611203565b600080604083850312156114bc57600080fd5b82356114c781611203565b915060208301356114d781611203565b809150509250929050565b600181811c908216806114f657607f821691505b60208210810361151657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561041e5761041e61151c565b82815260406020820152600061044560408301846111aa565b60006020828403121561157057600080fd5b815161043181611203565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526115d0818401856111aa565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8181038181111561041e5761041e61151c565b601f821115610c1b57600081815260208120601f850160051c8101602086101561165e5750805b601f850160051c820191505b8181101561167d5782815560010161166a565b505050505050565b815167ffffffffffffffff81111561169f5761169f611244565b6116b3816116ad84546114e2565b84611637565b602080601f8311600181146116e857600084156116d05750858301515b600019600386901b1c1916600185901b17855561167d565b600085815260208120601f198616915b82811015611717578886015182559484019460019091019084016116f8565b50858210156117355787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220ca76596b3503f05be2b029bd48d6388ebec4ff9261948cac40d64bcced6ea6ae64736f6c63430008120033a264697066735822122095877fe6c2bd577e1f202046cf5fb0a7de601b03c3952d9c24d5d47ce07ffda564736f6c63430008120033", + "code": "0x6080604052600436106100dd5760003560e01c8063780b64f01161007f5780639aa8605c116100595780639aa8605c14610292578063c287e578146102c3578063ee1490b214610303578063f2fde38b1461031657600080fd5b8063780b64f0146101f55780638da5cb5b146102545780639754149b1461027257600080fd5b80631be2bfa7116100bb5780631be2bfa7146101615780633ab76e9f1461018157806367090ccf1461019f578063715018a6146101e057600080fd5b80630c6fab82146100e25780630ca4dffd1461010457806319ab453c14610141575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611fd3565b610336565b005b34801561011057600080fd5b5061012461011f366004612112565b610577565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014d57600080fd5b5061010261015c366004612163565b61058d565b34801561016d57600080fd5b5061012461017c366004612180565b6106a5565b34801561018d57600080fd5b506097546001600160a01b0316610124565b3480156101ab57600080fd5b506101246101ba3660046121da565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101ec57600080fd5b506101026106bc565b34801561020157600080fd5b506102356102103660046121ff565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610138565b34801561026057600080fd5b506065546001600160a01b0316610124565b34801561027e57600080fd5b5061010261028d366004612218565b6106d0565b34801561029e57600080fd5b506102b26102ad366004612163565b610a33565b604051610138959493929190612307565b3480156102cf57600080fd5b506102f36102de366004612163565b60c96020526000908152604090205460ff1681565b6040519015158152602001610138565b610102610311366004612358565b610b84565b34801561032257600080fd5b50610102610331366004612163565b6113f3565b61033e61146c565b6040518060400160405280600681526020016562726964676560d01b815250610368816000610577565b6001600160a01b0316336001600160a01b03161461039957604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fd91906123f3565b905061043281604001516040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b031681602001516001600160a01b031614610467576040516320258b8760e21b815260040160405180910390fd5b60004687350361049c576104816040880160208901612163565b90506104976001600160a01b03821686866114c5565b61050c565b6104a587611528565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104f357600080fd5b505af1158015610507573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061057160018055565b50505050565b6000610584468484611587565b90505b92915050565b600054610100900460ff16158080156105ad5750600054600160ff909116105b806105c75750303b1580156105c7575060005460ff166001145b61062f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610652576000805461ff0019166101001790555b61065b82611657565b80156106a1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106b2848484611587565b90505b9392505050565b6106c4611670565b6106ce60006116ca565b565b6106d861146c565b60006106ea60a0850160808601612163565b6001600160a01b031603610711576040516372b41cdf60e01b815260040160405180910390fd5b46836040013514610735576040516348bc100560e01b815260040160405180910390fd5b60006107606040518060400160405280600681526020016562726964676560d01b8152506000610577565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b815260040161079091906124c9565b602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906125e7565b600081815260cc6020526040902080546001909101549192506001600160a01b0316908161081257604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b9061084890869060608c0135908b908b90600401612600565b602060405180830381865afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061262a565b6108a6576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b03909116178155905160019091015580156109ba576001600160a01b038216600090815260c9602052604090205460ff1615610996576001600160a01b0382166342e91bb361093160a08a0160808b01612163565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506109ba565b6109ba6109a960a0890160808a01612163565b6001600160a01b03841690836114c5565b6109ca60a0880160808901612163565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af68484604051610a199291906001600160a01b03929092168252602082015260400190565b60405180910390a350505050610a2e60018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a7390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f90612647565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505090806003018054610b0190612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90612647565b8015610b7a5780601f10610b4f57610100808354040283529160200191610b7a565b820191906000526020600020905b815481529060010190602001808311610b5d57829003601f168201915b5050505050905085565b610b8c61146c565b6001600160a01b0387161580610be15750610bcc886040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b0316876001600160a01b0316145b15610bff57604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610c2657604051637c6addb760e01b815260040160405180910390fd5b84600003610c465760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e9d57604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610d5390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7f90612647565b8015610dcc5780601f10610da157610100808354040283529160200191610dcc565b820191906000526020600020905b815481529060010190602001808311610daf57829003601f168201915b50505050508152602001600382018054610de590612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1190612647565b8015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e9657604051633e45a03560e21b815260040160405180910390fd5b50856110fd565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190612690565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9291908101906126ad565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffd91908101906126ad565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906125e7565b90506110846001600160a01b03831633308c61171c565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee91906125e7565b6110f89190612723565b925050505b61118c604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015260408051808201909152600b81526a1d1bdad95b97dd985d5b1d60aa1b60208201526111c8908c9060006106a5565b6001600160a01b031660a08201526080810151604051630637d5c160e11b916111fa918691908e908790602401612744565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526101608201526101408101879052610120810186905261124c8634612723565b60e08201526001600160a01b03851660c0820152610180810184905260408051808201909152600681526562726964676560d01b60208201526000906112929082610577565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b81526004016112be91906127dc565b60206040518083038185885af11580156112dc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130191906125e7565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e886040516113d4939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a4505050506113e960018055565b5050505050505050565b6113fb611670565b6001600160a01b0381166114605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b611469816116ca565b50565b6002600154036114be5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610626565b6002600155565b6040516001600160a01b038316602482015260448101829052610a2e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611754565b8035600090815260cb6020908152604080832083929091839161154f918701908701612163565b6001600160a01b039081168252602082019290925260400160002054169050806105875761157c83611826565b6106b5565b60018055565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906115ba90879087906004016128cc565b602060405180830381865afa1580156115d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fb91906128e5565b9050816106b5576040516001600160a01b0382161515906116229086908690602001612902565b6040516020818303038152906040529061164f5760405162461bcd60e51b81526004016106269190612957565b509392505050565b61165f611aab565b611667611ada565b61146981611b09565b6065546001600160a01b031633146106ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610626565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105719085906323b872dd60e01b906084016114f1565b60006117a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b529092919063ffffffff16565b805190915015610a2e57808060200190518101906117c7919061262a565b610a2e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b600061189f81833561183e6040860160208701612163565b60405161186192916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161188790611fa1565b601f1982820381018352601f90910116604052611b61565b6097549091506001600160a01b0380831691636c0db62b91166118c86040860160208701612163565b85356118da606088016040890161296a565b6118e76060890189612987565b6118f460808b018b612987565b6118fe8c35611c65565b604051602001611910939291906129cd565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119419796959493929190612a16565b600060405180830381600087803b15801561195b57600080fd5b505af115801561196f573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119ac8282612b81565b50508135600090815260cb602090815260408083208493909290916119d691908701908701612163565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316826020016020810190611a379190612163565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a706060870187612987565b611a7d6080890189612987565b611a8d60608b0160408c0161296a565b604051611a9e959493929190612c08565b60405180910390a4919050565b600054610100900460ff16611ad25760405162461bcd60e51b815260040161062690612c45565b6106ce611cf7565b600054610100900460ff16611b015760405162461bcd60e51b815260040161062690612c45565b6106ce611d1e565b6001600160a01b038116611b3057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60606106b28484600085611d4e565b600083471015611bb35760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610626565b8151600003611c045760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610626565b8282516020840186f590506001600160a01b0381166106b55760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610626565b60606000611c7283611e2b565b60010190506000816001600160401b03811115611c9157611c91612041565b6040519080825280601f01601f191660200182016040528015611cbb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611cc557509392505050565b600054610100900460ff166115815760405162461bcd60e51b815260040161062690612c45565b600054610100900460ff16611d455760405162461bcd60e51b815260040161062690612c45565b6106ce336116ca565b606082471015611daf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b600080866001600160a01b03168587604051611dcb9190612c90565b60006040518083038185875af1925050503d8060008114611e08576040519150601f19603f3d011682016040523d82523d6000602084013e611e0d565b606091505b5091509150611e1e87838387611f03565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e6a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e96576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611eb457662386f26fc10000830492506010015b6305f5e1008310611ecc576305f5e100830492506008015b6127108310611ee057612710830492506004015b60648310611ef2576064830492506002015b600a83106105875760010192915050565b60608315611f72578251600003611f6b576001600160a01b0385163b611f6b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b5081611e23565b611e238383815115611f875781518083602001fd5b8060405162461bcd60e51b81526004016106269190612957565b61179b80612cad83390190565b6001600160a01b038116811461146957600080fd5b8035611fce81611fae565b919050565b60008060008060808587031215611fe957600080fd5b84356001600160401b03811115611fff57600080fd5b850160a0818803121561201157600080fd5b9350602085013561202181611fae565b9250604085013561203181611fae565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561207f5761207f612041565b604052919050565b60006001600160401b038211156120a0576120a0612041565b50601f01601f191660200190565b600082601f8301126120bf57600080fd5b81356120d26120cd82612087565b612057565b8181528460208386010111156120e757600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461146957600080fd5b6000806040838503121561212557600080fd5b82356001600160401b0381111561213b57600080fd5b612147858286016120ae565b925050602083013561215881612104565b809150509250929050565b60006020828403121561217557600080fd5b81356106b581611fae565b60008060006060848603121561219557600080fd5b8335925060208401356001600160401b038111156121b257600080fd5b6121be868287016120ae565b92505060408401356121cf81612104565b809150509250925092565b600080604083850312156121ed57600080fd5b82359150602083013561215881611fae565b60006020828403121561221157600080fd5b5035919050565b60008060006040848603121561222d57600080fd5b83356001600160401b038082111561224457600080fd5b908501906101a0828803121561225957600080fd5b9093506020850135908082111561226f57600080fd5b818601915086601f83011261228357600080fd5b81358181111561229257600080fd5b8760208285010111156122a457600080fd5b6020830194508093505050509250925092565b60005b838110156122d25781810151838201526020016122ba565b50506000910152565b600081518084526122f38160208601602086016122b7565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a06060820181905260009061233a908301856122db565b828103608084015261234c81856122db565b98975050505050505050565b600080600080600080600080610100898b03121561237557600080fd5b88359750602089013561238781611fae565b9650604089013561239781611fae565b9550606089013594506080890135935060a0890135925060c08901356123bc81611fae565b915060e08901356001600160401b038111156123d757600080fd5b6123e38b828c016120ae565b9150509295985092959890939650565b60006060828403121561240557600080fd5b604051606081018181106001600160401b038211171561242757612427612041565b60405282518152602083015161243c81611fae565b60208201526040928301519281019290925250919050565b6000808335601e1984360301811261246b57600080fd5b83016020810192503590506001600160401b0381111561248a57600080fd5b80360382131561249957600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081528135602082015260006124e260208401611fc3565b6001600160a01b038116604084015250604083013560608301526060830135608083015261251260808401611fc3565b6001600160a01b03811660a08401525061252e60a08401611fc3565b6001600160a01b03811660c08401525061254a60c08401611fc3565b6001600160a01b03811660e08401525061010060e08401358184015261012081850135818501526101409150808501358285015250610160818501358185015261259681860186612454565b925090506101a061018081818701526125b46101c0870185856124a0565b93506125c281880188612454565b878603601f190184890152935090506125dc8484836124a0565b979650505050505050565b6000602082840312156125f957600080fd5b5051919050565b8481528360208201526060604082015260006126206060830184866124a0565b9695505050505050565b60006020828403121561263c57600080fd5b81516106b581612104565b600181811c9082168061265b57607f821691505b60208210810361267b57634e487b7160e01b600052602260045260246000fd5b50919050565b60ff8116811461146957600080fd5b6000602082840312156126a257600080fd5b81516106b581612681565b6000602082840312156126bf57600080fd5b81516001600160401b038111156126d557600080fd5b8201601f810184136126e657600080fd5b80516126f46120cd82612087565b81815285602083850101111561270957600080fd5b61271a8260208301602086016122b7565b95945050505050565b8181038181111561058757634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261278e6101208501836122db565b91506080880151607f19858403016101008601526127ac83826122db565b9188166020860152506001600160a01b038616604085015291506127cd9050565b82606083015295945050505050565b60208152815160208201526000602083015161280360408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161283260a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526128b06101c08601846122db565b90860151858203601f19018387015290925061262083826122db565b8281526040602082015260006106b260408301846122db565b6000602082840312156128f757600080fd5b81516106b581611fae565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e0820152600061010080606084015261271a818401856122db565b60208152600061058460208301846122db565b60006020828403121561297c57600080fd5b81356106b581612681565b6000808335601e1984360301811261299e57600080fd5b8301803591506001600160401b038211156129b857600080fd5b60200191503681900382131561249957600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b815283516129fb81600c8401602088016122b7565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612a5390830185876124a0565b82810360a0840152612a6581856122db565b9a9950505050505050505050565b601f821115610a2e57600081815260208120601f850160051c81016020861015612a9a5750805b601f850160051c820191505b81811015612ab957828155600101612aa6565b505050505050565b6001600160401b03831115612ad857612ad8612041565b612aec83612ae68354612647565b83612a73565b6000601f841160018114612b205760008515612b085750838201355b600019600387901b1c1916600186901b178355612b7a565b600083815260209020601f19861690835b82811015612b515786850135825560209485019460019092019101612b31565b5086821015612b6e5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612b9781611fae565b81546040850135612ba781612681565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612bdd6060830183612987565b612beb818360028601612ac1565b5050612bfa6080830183612987565b610571818360038601612ac1565b606081526000612c1c6060830187896124a0565b8281036020840152612c2f8186886124a0565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612ca28184602087016122b7565b919091019291505056fe608060405234801561001057600080fd5b5061177b806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806367e828bf116100c35780638da5cb5b1161007c5780638da5cb5b146102ed57806395d89b41146102fe578063a457c2d714610306578063a9059cbb14610319578063dd62ed3e1461032c578063f2fde38b1461036557600080fd5b806367e828bf1461024d5780636c0db62b1461028357806370a0823114610296578063715018a6146102bf57806377be18a8146102c75780637cf8ed0d146102da57600080fd5b806323b872dd1161011557806323b872dd146101e3578063313ce567146101f6578063395093511461020b5780633ab76e9f1461021e57806342e91bb31461022f57806349d126051461024457600080fd5b806306fdde0314610152578063095ea7b3146101705780630ca4dffd1461019357806318160ddd146101be5780631be2bfa7146101d0575b600080fd5b61015a610378565b60405161016791906111f0565b60405180910390f35b61018361017e366004611218565b61040a565b6040519015158152602001610167565b6101a66101a13660046112fc565b610424565b6040516001600160a01b039091168152602001610167565b60cb545b604051908152602001610167565b6101a66101de36600461134a565b610438565b6101836101f13660046113a1565b61044d565b60ce5460405160ff9091168152602001610167565b610183610219366004611218565b610483565b6097546001600160a01b03166101a6565b61024261023d366004611218565b6104c2565b005b6101c260fc5481565b61026460fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b6102426102913660046113e2565b610574565b6101c26102a436600461148c565b6001600160a01b0316600090815260c9602052604090205490565b61024261070c565b6102426102d5366004611218565b610720565b60fb546101a6906001600160a01b031681565b6065546001600160a01b03166101a6565b61015a6107c5565b610183610314366004611218565b6107d4565b610183610327366004611218565b610871565b6101c261033a3660046114a9565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61024261037336600461148c565b6108a6565b606060cc8054610387906114e2565b80601f01602080910402602001604051908101604052809291908181526020018280546103b3906114e2565b80156104005780601f106103d557610100808354040283529160200191610400565b820191906000526020600020905b8154815290600101906020018083116103e357829003601f168201915b5050505050905090565b60003361041881858561091f565b60019150505b92915050565b6000610431468484610a43565b9392505050565b6000610445848484610a43565b949350505050565b6000306001600160a01b03841603610478576040516319a6f37760e21b815260040160405180910390fd5b610445848484610b13565b33600081815260ca602090815260408083206001600160a01b038716845290915281205490919061041890829086906104bd908790611532565b61091f565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b8152506104f1816000610424565b6001600160a01b0316336001600160a01b03161461052257604051630d85cccf60e11b815260040160405180910390fd5b61052c8383610b2c565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161056791815260200190565b60405180910390a2505050565b600054610100900460ff16158080156105945750600054600160ff909116105b806105ae5750303b1580156105ae575060005460ff166001145b6106165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610639576000805461ff0019166101001790555b6001600160a01b038616158061064d575084155b8061065757504685145b8061066157508251155b8061066b57508151155b15610689576040516301e25ab360e71b815260040160405180910390fd5b61069287610bd0565b61069d828486610be9565b60fb80546001600160a01b0319166001600160a01b03881617905560fc8590558015610703576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610714610c20565b61071e6000610c7a565b565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525061074f816000610424565b6001600160a01b0316336001600160a01b03161461078057604051630d85cccf60e11b815260040160405180910390fd5b61078a8383610ccc565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161056791815260200190565b606060cd8054610387906114e2565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190838110156108595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b610866828686840361091f565b506001949350505050565b6000306001600160a01b0384160361089c576040516319a6f37760e21b815260040160405180910390fd5b6104318383610ddf565b6108ae610c20565b6001600160a01b0381166109135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61091c81610c7a565b50565b6001600160a01b0383166109815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610a769087908790600401611545565b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab7919061155e565b905081610431576040516001600160a01b038216151590610ade908690869060200161157b565b60405160208183030381529060405290610b0b5760405162461bcd60e51b815260040161060d91906111f0565b509392505050565b600033610b21858285610ded565b610866858585610e7f565b6001600160a01b038216610b825760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060d565b8060cb6000828254610b949190611532565b90915550506001600160a01b038216600090815260c9602052604081208054839290610bc1908490611532565b90915550610bcc9050565b5050565b610bd861104d565b610be061107c565b61091c816110ab565b600054610100900460ff16610c105760405162461bcd60e51b815260040161060d906115d9565b610c1b8383836110f4565b505050565b6065546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d2c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b6001600160a01b038216600090815260c9602052604090205481811015610da05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038316600090815260c960205260408120838303905560cb8054849290610dcf908490611624565b90915550610c1b90508360008483565b600033610418818585610e7f565b6001600160a01b03838116600090815260ca60209081526040808320938616835292905220546000198114610e795781811015610e6c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610e79848484840361091f565b50505050565b6001600160a01b038316610ee35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610f455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b6001600160a01b038316600090815260c9602052604090205481811015610fbd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b03808516600090815260c96020526040808220858503905591851681529081208054849290610ff4908490611532565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104091815260200190565b60405180910390a3610e79565b600054610100900460ff166110745760405162461bcd60e51b815260040161060d906115d9565b61071e61114d565b600054610100900460ff166110a35760405162461bcd60e51b815260040161060d906115d9565b61071e61117a565b6001600160a01b0381166110d257604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661111b5760405162461bcd60e51b815260040161060d906115d9565b60cc6111278482611685565b5060cd6111348382611685565b5060ce805460ff191660ff929092169190911790555050565b600054610100900460ff166111745760405162461bcd60e51b815260040161060d906115d9565b60018055565b600054610100900460ff166111a15760405162461bcd60e51b815260040161060d906115d9565b61071e33610c7a565b6000815180845260005b818110156111d0576020818501810151868301820152016111b4565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061043160208301846111aa565b6001600160a01b038116811461091c57600080fd5b6000806040838503121561122b57600080fd5b823561123681611203565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261126b57600080fd5b813567ffffffffffffffff8082111561128657611286611244565b604051601f8301601f19908116603f011681019082821181831017156112ae576112ae611244565b816040528381528660208588010111156112c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b803580151581146112f757600080fd5b919050565b6000806040838503121561130f57600080fd5b823567ffffffffffffffff81111561132657600080fd5b6113328582860161125a565b925050611341602084016112e7565b90509250929050565b60008060006060848603121561135f57600080fd5b83359250602084013567ffffffffffffffff81111561137d57600080fd5b6113898682870161125a565b925050611398604085016112e7565b90509250925092565b6000806000606084860312156113b657600080fd5b83356113c181611203565b925060208401356113d181611203565b929592945050506040919091013590565b60008060008060008060c087890312156113fb57600080fd5b863561140681611203565b9550602087013561141681611203565b945060408701359350606087013560ff8116811461143357600080fd5b9250608087013567ffffffffffffffff8082111561145057600080fd5b61145c8a838b0161125a565b935060a089013591508082111561147257600080fd5b5061147f89828a0161125a565b9150509295509295509295565b60006020828403121561149e57600080fd5b813561043181611203565b600080604083850312156114bc57600080fd5b82356114c781611203565b915060208301356114d781611203565b809150509250929050565b600181811c908216806114f657607f821691505b60208210810361151657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561041e5761041e61151c565b82815260406020820152600061044560408301846111aa565b60006020828403121561157057600080fd5b815161043181611203565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526115d0818401856111aa565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8181038181111561041e5761041e61151c565b601f821115610c1b57600081815260208120601f850160051c8101602086101561165e5750805b601f850160051c820191505b8181101561167d5782815560010161166a565b505050505050565b815167ffffffffffffffff81111561169f5761169f611244565b6116b3816116ad84546114e2565b84611637565b602080601f8311600181146116e857600084156116d05750858301515b600019600386901b1c1916600185901b17855561167d565b600085815260208120601f198616915b82811015611717578886015182559484019460019091019084016116f8565b50858210156117355787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220ca76596b3503f05be2b029bd48d6388ebec4ff9261948cac40d64bcced6ea6ae64736f6c63430008120033a2646970667358221220fd0fe1c995d0ba66857bfae11cff691723308c222d75d146fb0695825748cae564736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000003": { diff --git a/core/taiko_genesis/internal-2.json b/core/taiko_genesis/internal-2.json index 779e23b71623..d170fc7f428c 100644 --- a/core/taiko_genesis/internal-2.json +++ b/core/taiko_genesis/internal-2.json @@ -29,9 +29,6 @@ "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { "balance": "0x3782dace9d90000000" }, - "0x0000777735367b36bC9B61C50022d9D0700dB4Ec": { - "balance": "0xfffffffffffffacbbb7ca13a7fffffff" - }, "0x4F6d0287F08bD8b05DB0272c493A2e9DA9675301": { "contractName": "LibTrieProof", "storage": {}, @@ -69,9 +66,9 @@ "storage": { "0x00000000000000000000000000000000000000000000000000000000000000cb": "0xb1cdc1a3b51cd0ae1113eb88f95dfd26aab10c50b39e31811e63cffc250b0da2", "0x00000000000000000000000000000000000000000000000000000000000000cc": "0x0000000000bebc200000000058b8ef1c0000000485b9d2e799564d28c46075dd", - "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f6800000000000000000000000006445d99c" + "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f6800000000000000000000000006447f6e2" }, - "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063e1848cb01161007c578063e1848cb014610320578063ee82ac5e14610333578063f2fde38b14610346578063f535bd5614610359578063f5c9774014610373578063f5d11edc1461038d57600080fd5b80638da5cb5b146102ad5780638f3ca30d146102be5780639ee512f2146102d1578063a4e6775f146102ea578063c7b96908146102fd578063dac5df781461031757600080fd5b80633d384a4b116101155780633d384a4b1461020d5780633fa8535014610222578063539b8ade1461024d578063591aad8a14610260578063609bbd0614610292578063715018a6146102a557600080fd5b80630ca4dffd1461015257806310da3738146101825780631be2bfa7146101b7578063210c9fe8146101ca5780633ab76e9f146101fc575b600080fd5b6101656101603660046116e7565b6103a7565b6040516001600160a01b0390911681526020015b60405180910390f35b6101a97f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b604051908152602001610179565b6101656101c5366004611734565b6103bd565b60cc546101e490600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610179565b6097546001600160a01b0316610165565b61022061021b3660046117a1565b6103d4565b005b60cc54610235906001600160801b031681565b6040516001600160801b039091168152602001610179565b60cd546101e4906001600160401b031681565b61027361026e3660046117e7565b61063a565b6040805160ff9094168452602084019290925290820152606001610179565b6101a96102a036600461181d565b610875565b6102206108b1565b6065546001600160a01b0316610165565b6102206102cc36600461184b565b6108c5565b61016571777735367b36bc9b61c50022d9d0700db4ec81565b6101a96102f836600461181d565b610c92565b60cd546101e490600160401b90046001600160401b031681565b6101a960cb5481565b6101a961032e36600461188c565b610ccb565b6101a961034136600461181d565b610ce7565b6102206103543660046118d1565b610d34565b60cd546101e490600160801b90046001600160401b031681565b60cc546101e490600160801b90046001600160401b031681565b60cd546101e490600160c01b90046001600160401b031681565b60006103b4468484610dad565b90505b92915050565b60006103ca848484610dad565b90505b9392505050565b3371777735367b36bc9b61c50022d9d0700db4ec1461040657604051636494e9f760e01b815260040160405180910390fd5b6000610413600143611904565b9050804060008061042384610e7d565b915091508160cb541461045c5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527fc7edd3d480c294297f3924d0ffab64074e7fb22e004ea492d5dd691fa1fc99c0910160405180910390a260cc54600090600160c01b90046001600160401b0316156105705760cd546105429061053b906001600160401b031642611904565b4588610f10565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b8048146105a357604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610453565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561065757508360ff16600214155b156106755760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff166001146106a6577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee56106c8565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106fd577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce9081861071f565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610754577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610776565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff86166001036107b0576107a98282600170014551231950b75fc4402da1732fc9bebe19610fb0565b925061081f565b6107f87f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107f38484600170014551231950b75fc4402da1732fc9bebe19610fb0565b610fff565b909250905061081c8282600170014551231950b75fc4402da1732fc9bebe19610fb0565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561086c576108638370014551231950b75fc4402da1732fc9bebe19611904565b92506001851894505b50509250925092565b60008082156108845782610898565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b6108b961101e565b6108c36000611078565b565b600054610100900460ff16158080156108e55750600054600160ff909116105b806108ff5750303b1580156108ff575060005460ff166001145b6109625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610453565b6000805460ff191660011790558015610985576000805461ff0019166101001790555b600146111580610999575063ffffffff4610155b156109b7576040516306cffa2760e01b815260040160405180910390fd5b60014311156109d957604051635a0f9e4160e11b815260040160405180910390fd5b6109e96040830160208401611917565b6001600160401b031615610bee57610a046020830183611917565b6001600160401b03161580610a2f5750610a246060830160408401611917565b6001600160401b0316155b80610a505750610a456080830160608401611917565b6001600160401b0316155b80610a715750610a6660a0830160808401611917565b6001600160401b0316155b15610a8f57604051639cc448b560e01b815260040160405180910390fd5b6000610ad6610aa46060850160408601611917565b610ab16020860186611917565b610ac16080870160608801611917565b610ad160a0880160808901611917565b6110ca565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610b1c57506001600160401b036001600160801b03821610155b80610b30575060cc546001600160801b0316155b15610b4e57604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b836040840160208501611917565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610bbc6060850160408601611917565b610bc69190611948565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610c13836111c9565b610c1c43610e7d565b5060cb554315610c47576000610c33600143611904565b600081815260c96020526040902090409055505b8015610c8d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000808215610ca15782610cb5565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cde8463ffffffff168484610f10565b50949350505050565b6000438210610cf857506000919050565b4382108015610d125750610d0e61010043611904565b8210155b15610d1c57504090565b50600090815260c9602052604090205490565b919050565b610d3c61101e565b6001600160a01b038116610da15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610453565b610daa81611078565b50565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610de090879087906004016119b4565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906119cd565b9050816103cd576040516001600160a01b038216151590610e4890869086906020016119ea565b60405160208183030381529060405290610e755760405162461bcd60e51b81526004016104539190611a48565b509392505050565b600080610e88611615565b60005b60ff81108015610e9e5750806001018510155b15610ed0576000198186030180408360ff83066101008110610ec257610ec2611a5b565b602002015250600101610e8b565b5046611fe082015261200081209250834081610eed60ff87611a71565b6101008110610efe57610efe611a5b565b60200201526120009020919391925050565b600080806207a1206001600160401b03851611610f2e576000610f35565b6207a12084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610f779082610f7085826111e2565b03906111f8565b60cc54909450610fa693506001600160401b03600160801b82041692506001600160801b03169050838761120d565b9150935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610ff557600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b6065546001600160a01b031633146108c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610453565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b03166000036110e6576110e6611a85565b60006110f3600288611948565b90506111116001600160401b038816680755bf798b4a1bf1e4611a9b565b925061113061112b84886001600160401b0316848961120d565b6112cc565b915060006111408484848961120d565b9050600061115a8585856111558b6002611ab5565b61120d565b905060008261116b83612710611ae0565b6111759190611af7565b9050806001600160401b0316876001600160401b0316146111bc576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610453565b5050505094509492505050565b6111d1611339565b6111d9611368565b610daa81611397565b60008183116111f157816103b4565b5090919050565b600081831161120757826103b4565b50919050565b60006001600160801b0385161580159061122f57506001600160801b03841615155b61123b5761123b611a85565b60006001600160401b038316156112525782611255565b60015b9050600061126c856001600160401b0316886113e0565b9050600061128c61127d8488611b0b565b6001600160401b0316896113e0565b90506001600160801b0387166001600160401b0384166112ac8484611904565b6112b69190611af7565b6112c09190611af7565b98975050505050505050565b60006001600160801b038211156113355760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610453565b5090565b600054610100900460ff166113605760405162461bcd60e51b815260040161045390611b32565b6108c3611432565b600054610100900460ff1661138f5760405162461bcd60e51b815260040161045390611b32565b6108c361145f565b6001600160a01b0381166113be57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806113f66001600160801b03841685611ae0565b9050680755bf798b4a1bf1e48110611421576040516372de381d60e01b815260040160405180910390fd5b61142a8161148f565b949350505050565b600054610100900460ff166114595760405162461bcd60e51b815260040161045390611b32565b60018055565b600054610100900460ff166114865760405162461bcd60e51b815260040161045390611b32565b6108c333611078565b6000680248ce36a70cb26b3e1982136114aa57506000919050565b680755bf798b4a1bf1e582126114d357604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261165c57600080fd5b81356001600160401b038082111561167657611676611635565b604051601f8301601f19908116603f0116810190828211818310171561169e5761169e611635565b816040528381528660208588010111156116b757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114610d2f57600080fd5b600080604083850312156116fa57600080fd5b82356001600160401b0381111561171057600080fd5b61171c8582860161164b565b92505061172b602084016116d7565b90509250929050565b60008060006060848603121561174957600080fd5b8335925060208401356001600160401b0381111561176657600080fd5b6117728682870161164b565b925050611781604085016116d7565b90509250925092565b80356001600160401b0381168114610d2f57600080fd5b600080600080608085870312156117b757600080fd5b84359350602085013592506117ce6040860161178a565b91506117dc6060860161178a565b905092959194509250565b600080604083850312156117fa57600080fd5b82359150602083013560ff8116811461181257600080fd5b809150509250929050565b60006020828403121561182f57600080fd5b5035919050565b6001600160a01b0381168114610daa57600080fd5b60008082840360c081121561185f57600080fd5b833561186a81611836565b925060a0601f198201121561187e57600080fd5b506020830190509250929050565b6000806000606084860312156118a157600080fd5b833563ffffffff811681146118b557600080fd5b92506118c36020850161178a565b91506117816040850161178a565b6000602082840312156118e357600080fd5b81356103cd81611836565b634e487b7160e01b600052601160045260246000fd5b818103818111156103b7576103b76118ee565b60006020828403121561192957600080fd5b6103b48261178a565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061196257611962611932565b92169190910492915050565b6000815180845260005b8181101561199457602081850181015186830182015201611978565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103ca604083018461196e565b6000602082840312156119df57600080fd5b81516103cd81611836565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152611a3f8184018561196e565b95945050505050565b6020815260006103b4602083018461196e565b634e487b7160e01b600052603260045260246000fd5b600082611a8057611a80611932565b500690565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b038084168061196257611962611932565b6001600160401b03818116838216028082169190828114611ad857611ad86118ee565b505092915050565b80820281158282048414176103b7576103b76118ee565b600082611b0657611b06611932565b500490565b6001600160401b03818116838216019080821115611b2b57611b2b6118ee565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220b4008f8a5194e802e50bf95b3be935f155909c31a1609e21fb1b63f00e4c256b64736f6c63430008120033", + "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063e1848cb01161007c578063e1848cb014610320578063ee82ac5e14610333578063f2fde38b14610346578063f535bd5614610359578063f5c9774014610373578063f5d11edc1461038d57600080fd5b80638da5cb5b146102ad5780638f3ca30d146102be5780639ee512f2146102d1578063a4e6775f146102ea578063c7b96908146102fd578063dac5df781461031757600080fd5b80633d384a4b116101155780633d384a4b1461020d5780633fa8535014610222578063539b8ade1461024d578063591aad8a14610260578063609bbd0614610292578063715018a6146102a557600080fd5b80630ca4dffd1461015257806310da3738146101825780631be2bfa7146101b7578063210c9fe8146101ca5780633ab76e9f146101fc575b600080fd5b6101656101603660046116e7565b6103a7565b6040516001600160a01b0390911681526020015b60405180910390f35b6101a97f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b604051908152602001610179565b6101656101c5366004611734565b6103bd565b60cc546101e490600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610179565b6097546001600160a01b0316610165565b61022061021b3660046117a1565b6103d4565b005b60cc54610235906001600160801b031681565b6040516001600160801b039091168152602001610179565b60cd546101e4906001600160401b031681565b61027361026e3660046117e7565b61063a565b6040805160ff9094168452602084019290925290820152606001610179565b6101a96102a036600461181d565b610875565b6102206108b1565b6065546001600160a01b0316610165565b6102206102cc36600461184b565b6108c5565b61016571777735367b36bc9b61c50022d9d0700db4ec81565b6101a96102f836600461181d565b610c92565b60cd546101e490600160401b90046001600160401b031681565b6101a960cb5481565b6101a961032e36600461188c565b610ccb565b6101a961034136600461181d565b610ce7565b6102206103543660046118d1565b610d34565b60cd546101e490600160801b90046001600160401b031681565b60cc546101e490600160801b90046001600160401b031681565b60cd546101e490600160c01b90046001600160401b031681565b60006103b4468484610dad565b90505b92915050565b60006103ca848484610dad565b90505b9392505050565b3371777735367b36bc9b61c50022d9d0700db4ec1461040657604051636494e9f760e01b815260040160405180910390fd5b6000610413600143611904565b9050804060008061042384610e7d565b915091508160cb541461045c5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527fc7edd3d480c294297f3924d0ffab64074e7fb22e004ea492d5dd691fa1fc99c0910160405180910390a260cc54600090600160c01b90046001600160401b0316156105705760cd546105429061053b906001600160401b031642611904565b4588610f10565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b8048146105a357604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610453565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561065757508360ff16600214155b156106755760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff166001146106a6577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee56106c8565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106fd577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce9081861071f565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610754577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610776565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff86166001036107b0576107a98282600170014551231950b75fc4402da1732fc9bebe19610fb0565b925061081f565b6107f87f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107f38484600170014551231950b75fc4402da1732fc9bebe19610fb0565b610fff565b909250905061081c8282600170014551231950b75fc4402da1732fc9bebe19610fb0565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561086c576108638370014551231950b75fc4402da1732fc9bebe19611904565b92506001851894505b50509250925092565b60008082156108845782610898565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b6108b961101e565b6108c36000611078565b565b600054610100900460ff16158080156108e55750600054600160ff909116105b806108ff5750303b1580156108ff575060005460ff166001145b6109625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610453565b6000805460ff191660011790558015610985576000805461ff0019166101001790555b600146111580610999575063ffffffff4610155b156109b7576040516306cffa2760e01b815260040160405180910390fd5b60014311156109d957604051635a0f9e4160e11b815260040160405180910390fd5b6109e96040830160208401611917565b6001600160401b031615610bee57610a046020830183611917565b6001600160401b03161580610a2f5750610a246060830160408401611917565b6001600160401b0316155b80610a505750610a456080830160608401611917565b6001600160401b0316155b80610a715750610a6660a0830160808401611917565b6001600160401b0316155b15610a8f57604051639cc448b560e01b815260040160405180910390fd5b6000610ad6610aa46060850160408601611917565b610ab16020860186611917565b610ac16080870160608801611917565b610ad160a0880160808901611917565b6110ca565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610b1c57506001600160401b036001600160801b03821610155b80610b30575060cc546001600160801b0316155b15610b4e57604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b836040840160208501611917565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610bbc6060850160408601611917565b610bc69190611948565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610c13836111c9565b610c1c43610e7d565b5060cb554315610c47576000610c33600143611904565b600081815260c96020526040902090409055505b8015610c8d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000808215610ca15782610cb5565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cde8463ffffffff168484610f10565b50949350505050565b6000438210610cf857506000919050565b4382108015610d125750610d0e61010043611904565b8210155b15610d1c57504090565b50600090815260c9602052604090205490565b919050565b610d3c61101e565b6001600160a01b038116610da15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610453565b610daa81611078565b50565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610de090879087906004016119b4565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906119cd565b9050816103cd576040516001600160a01b038216151590610e4890869086906020016119ea565b60405160208183030381529060405290610e755760405162461bcd60e51b81526004016104539190611a48565b509392505050565b600080610e88611615565b60005b60ff81108015610e9e5750806001018510155b15610ed0576000198186030180408360ff83066101008110610ec257610ec2611a5b565b602002015250600101610e8b565b5046611fe082015261200081209250834081610eed60ff87611a71565b6101008110610efe57610efe611a5b565b60200201526120009020919391925050565b600080806202bf206001600160401b03851611610f2e576000610f35565b6202bf2084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610f779082610f7085826111e2565b03906111f8565b60cc54909450610fa693506001600160401b03600160801b82041692506001600160801b03169050838761120d565b9150935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610ff557600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b6065546001600160a01b031633146108c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610453565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b03166000036110e6576110e6611a85565b60006110f3600288611948565b90506111116001600160401b038816680755bf798b4a1bf1e4611a9b565b925061113061112b84886001600160401b0316848961120d565b6112cc565b915060006111408484848961120d565b9050600061115a8585856111558b6002611ab5565b61120d565b905060008261116b83612710611ae0565b6111759190611af7565b9050806001600160401b0316876001600160401b0316146111bc576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610453565b5050505094509492505050565b6111d1611339565b6111d9611368565b610daa81611397565b60008183116111f157816103b4565b5090919050565b600081831161120757826103b4565b50919050565b60006001600160801b0385161580159061122f57506001600160801b03841615155b61123b5761123b611a85565b60006001600160401b038316156112525782611255565b60015b9050600061126c856001600160401b0316886113e0565b9050600061128c61127d8488611b0b565b6001600160401b0316896113e0565b90506001600160801b0387166001600160401b0384166112ac8484611904565b6112b69190611af7565b6112c09190611af7565b98975050505050505050565b60006001600160801b038211156113355760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610453565b5090565b600054610100900460ff166113605760405162461bcd60e51b815260040161045390611b32565b6108c3611432565b600054610100900460ff1661138f5760405162461bcd60e51b815260040161045390611b32565b6108c361145f565b6001600160a01b0381166113be57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806113f66001600160801b03841685611ae0565b9050680755bf798b4a1bf1e48110611421576040516372de381d60e01b815260040160405180910390fd5b61142a8161148f565b949350505050565b600054610100900460ff166114595760405162461bcd60e51b815260040161045390611b32565b60018055565b600054610100900460ff166114865760405162461bcd60e51b815260040161045390611b32565b6108c333611078565b6000680248ce36a70cb26b3e1982136114aa57506000919050565b680755bf798b4a1bf1e582126114d357604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261165c57600080fd5b81356001600160401b038082111561167657611676611635565b604051601f8301601f19908116603f0116810190828211818310171561169e5761169e611635565b816040528381528660208588010111156116b757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114610d2f57600080fd5b600080604083850312156116fa57600080fd5b82356001600160401b0381111561171057600080fd5b61171c8582860161164b565b92505061172b602084016116d7565b90509250929050565b60008060006060848603121561174957600080fd5b8335925060208401356001600160401b0381111561176657600080fd5b6117728682870161164b565b925050611781604085016116d7565b90509250925092565b80356001600160401b0381168114610d2f57600080fd5b600080600080608085870312156117b757600080fd5b84359350602085013592506117ce6040860161178a565b91506117dc6060860161178a565b905092959194509250565b600080604083850312156117fa57600080fd5b82359150602083013560ff8116811461181257600080fd5b809150509250929050565b60006020828403121561182f57600080fd5b5035919050565b6001600160a01b0381168114610daa57600080fd5b60008082840360c081121561185f57600080fd5b833561186a81611836565b925060a0601f198201121561187e57600080fd5b506020830190509250929050565b6000806000606084860312156118a157600080fd5b833563ffffffff811681146118b557600080fd5b92506118c36020850161178a565b91506117816040850161178a565b6000602082840312156118e357600080fd5b81356103cd81611836565b634e487b7160e01b600052601160045260246000fd5b818103818111156103b7576103b76118ee565b60006020828403121561192957600080fd5b6103b48261178a565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061196257611962611932565b92169190910492915050565b6000815180845260005b8181101561199457602081850181015186830182015201611978565b506000602082860101526020601f19601f83011685010191505092915050565b8281526040602082015260006103ca604083018461196e565b6000602082840312156119df57600080fd5b81516103cd81611836565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e08201526000610100806060840152611a3f8184018561196e565b95945050505050565b6020815260006103b4602083018461196e565b634e487b7160e01b600052603260045260246000fd5b600082611a8057611a80611932565b500690565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b038084168061196257611962611932565b6001600160401b03818116838216028082169190828114611ad857611ad86118ee565b505092915050565b80820281158282048414176103b7576103b76118ee565b600082611b0657611b06611932565b500490565b6001600160401b03818116838216019080821115611b2b57611b2b6118ee565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122042ebe6eea7309239f3880d39e251ac2465be367c776314009bd5a6d744b5f7f464736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000004": { @@ -82,7 +79,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x6080604052600436106101235760003560e01c8063715018a6116100a0578063ce70f39b11610064578063ce70f39b1461040e578063d0496d6a1461042e578063f2fde38b1461049d578063f9803919146104bd578063fee99b22146104dd57600080fd5b8063715018a6146103885780638da5cb5b1461039d57806396e17852146103bb578063a4444efd146103ce578063bac443e2146103ee57600080fd5b80635075a9d4116100e75780635075a9d4146102cd578063540be6a3146102fa5780635817b0c31461031a5780635d0bd98614610348578063606b5b741461036857600080fd5b80630ca4dffd146101f257806319ab453c1461022f5780631be2bfa71461024f578063343b643c1461026f5780633ab76e9f146102af57600080fd5b366101ed576101566040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b0316141580156101b657506101a06040518060400160405280600b81526020016a195d1a195c97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b031614155b80156101cd57506065546001600160a01b03163314155b156101eb576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101fe57600080fd5b5061021261020d366004612bef565b6104fd565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b57600080fd5b506101eb61024a366004612c60565b610513565b34801561025b57600080fd5b5061021261026a366004612c7d565b61062b565b34801561027b57600080fd5b5061029f61028a366004612cd7565b600090815260cd602052604090205460ff1690565b6040519015158152602001610226565b3480156102bb57600080fd5b506097546001600160a01b0316610212565b3480156102d957600080fd5b506102ed6102e8366004612cd7565b610642565b6040516102269190612d28565b34801561030657600080fd5b5061029f610315366004612cd7565b61064d565b34801561032657600080fd5b5061033a610335366004612d4f565b610659565b604051908152602001610226565b34801561035457600080fd5b5061029f610363366004612cd7565b61066c565b34801561037457600080fd5b5061033a610383366004612cd7565b61067f565b34801561039457600080fd5b506101eb61068a565b3480156103a957600080fd5b506065546001600160a01b0316610212565b61033a6103c9366004612d4f565b61069e565b3480156103da57600080fd5b5061029f6103e9366004612dcb565b6106cc565b3480156103fa57600080fd5b506101eb610409366004612e1d565b6106e4565b34801561041a57600080fd5b5061029f610429366004612dcb565b610708565b34801561043a57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610226565b3480156104a957600080fd5b506101eb6104b8366004612c60565b610717565b3480156104c957600080fd5b506101eb6104d8366004612e85565b610790565b3480156104e957600080fd5b506101eb6104f8366004612e1d565b6107ae565b600061050a4684846107c4565b90505b92915050565b600054610100900460ff16158080156105335750600054600160ff909116105b8061054d5750303b15801561054d575060005460ff166001145b6105b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105d8576000805461ff0019166101001790555b6105e182610894565b8015610627576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106388484846107c4565b90505b9392505050565b600061050d826108ad565b600061050d30836108d8565b600061050d61066783612eba565b6109b9565b600061067830836109e9565b5092915050565b600061050d82610a72565b610692610aad565b61069c6000610b07565b565b60006106a8610b59565b6106bc60c9306106b785612eba565b610bb2565b90506106c760018055565b919050565b60006106db3086868686610e93565b95945050505050565b6106ec610b59565b6106fa60c930858585610ff6565b61070360018055565b505050565b60006106db30868686866112e7565b61071f610aad565b6001600160a01b0381166107845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b61078d81610b07565b50565b610798610b59565b6107a560c930848461157c565b61062760018055565b6107b6610b59565b6106fa60c9308585856117b4565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906107f7908790879060040161300b565b602060405180830381865afa158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190613024565b90508161063b576040516001600160a01b03821615159061085f9086908690602001613041565b6040516020818303038152906040529061088c5760405162461bcd60e51b81526004016105ac9190613096565b509392505050565b61089c611cb3565b6108a4611ce2565b61078d81611d11565b6000806108b983610a72565b80549091508060038111156108d0576108d0612cf0565b949350505050565b604051630ca4dffd60e01b81526000906001600160a01b03841690630ca4dffd906109079084906004016130a9565b602060405180830381865afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109489190613024565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906130d9565b6000816040516020016109cc91906130f6565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316631be2bfa78460016040518363ffffffff1660e01b8152600401610a1b9291906131f0565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613024565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109cc92919061321e565b6065546001600160a01b0316331461069c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ac565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bab5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105ac565b6002600155565b60808101516000906001600160a01b0316610be0576040516301b1868360e71b815260040160405180910390fd5b600080610bf18585606001516109e9565b91509150811580610c055750468460600151145b15610c235760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c525750806001600160a01b03168460a001516001600160a01b0316145b15610c705760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610c8d9190613256565b610c979190613256565b9050348114610cb957604051632609a19760e21b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd90610ce990600190600401613269565b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190613024565b9050610d3f6001600160a01b03821683611d5a565b8754886000610d4d83613296565b909155508652336020870152466040870152610d68866109b9565b604051630ca4dffd60e01b81529095506001600160a01b03881690630ca4dffd90610d98906000906004016130a9565b602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190613024565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e0691815260200190565b6020604051808303816000875af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906132af565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e7a91906130f6565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316631be2bfa78660006040518363ffffffff1660e01b8152600401610ec59291906131f0565b602060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190613024565b604051630ca4dffd60e01b81529091506001600160a01b03881690630ca4dffd90610f36906000906004016130a9565b602060405180830381865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f779190613024565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610faa9594939291906132c8565b602060405180830381865afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb91906130d9565b979650505050505050565b600061100860a0850160808601612c60565b6001600160a01b03160361102f576040516301b1868360e71b815260040160405180910390fd5b468360400135146110535760405163e822b48d60e01b815260040160405180910390fd5b600061106161066785612eba565b600081815260048801602052604090205490915060ff16151560010361109a5760405163afde133560e01b815260040160405180910390fd5b6110ab8582866060013586866112e7565b6110c85760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff191660011790556110f661010086013560e0870135613256565b9050801561128b57604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd9061112e90600190600401613269565b602060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f9190613024565b90506001600160a01b03811615611204576001600160a01b03811663ba0bbd9561119f60a0890160808a01612c60565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b50505050611289565b600061121660a0880160808901612c60565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114611260576040519150601f19603f3d011682016040523d82523d6000602084013e611265565b606091505b50509050806112875760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112bd60a0880160808901612c60565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113095760405163e822b48d60e01b815260040160405180910390fd5b600085900361132b5760405163a6407c9360e01b815260040160405180910390fd5b6000611339838501856133b2565b60408051630ca4dffd60e01b8152600481019190915260056044820152647461696b6f60d81b60648201526000602482018190529192506001600160a01b03891690630ca4dffd90608401602060405180830381865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c59190613024565b8251610100015160405163a4e6775f60e01b81526001600160801b0390911660048201526001600160a01b03919091169063a4e6775f90602401602060405180830381865afa15801561141c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144091906132af565b90508015806114595750815161145590611e10565b8114155b15611469576000925050506106db565b815160600151604051631be2bfa760e01b8152734F6d0287F08bD8b05DB0272c493A2e9DA96753019163a5427462916001600160a01b038c1690631be2bfa7906114ba908c906000906004016131f0565b602060405180830381865afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613024565b6115048b610a72565b602087015160405160e086901b6001600160e01b031916815261152f94939291600391600401613556565b602060405180830381865af415801561154c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157091906130d9565b98975050505050505050565b610140820135158061158b5750805b156115d1576115a060a0830160808401612c60565b6001600160a01b0316336001600160a01b0316146115d15760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115df61066784612eba565b905060016115ec826108ad565b60038111156115fd576115fd612cf0565b1461161b57604051631f6646b560e01b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03861690630ca4dffd9061164b90600190600401613269565b602060405180830381865afa158015611668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168c9190613024565b90506001600160a01b038116156116fc57604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505b6117088685845a611e35565b1561171d57611718826002611f8d565b6117ac565b82156117945761172e826003611f8d565b60008061174160e0870160c08801612c60565b6001600160a01b0316146117645761175f60e0860160c08701612c60565b611774565b61177460a0860160808701612c60565b905061178e6001600160a01b038216610100870135611d5a565b506117ac565b6117ac6001600160a01b038216610100860135611d5a565b505050505050565b6101408301351580156117e857506117d260a0840160808501612c60565b6001600160a01b0316336001600160a01b031614155b156118065760405163398b635960e21b815260040160405180910390fd5b4683606001351461182a5760405163e822b48d60e01b815260040160405180910390fd5b600061183861066785612eba565b90506000611845826108ad565b600381111561185657611856612cf0565b1461187457604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316631be2bfa7866040013560006040518363ffffffff1660e01b81526004016118a99291906131f0565b602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190613024565b604051630ca4dffd60e01b81529091506001600160a01b03871690630ca4dffd9061191a906000906004016130a9565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190613024565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b81526004016119929594939291906132c8565b602060405180830381865afa1580156119af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d391906130d9565b6119f0576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a0b61010088013560e0890135613256565b611a159190613256565b90506000876001600160a01b0316630ca4dffd60016040518263ffffffff1660e01b8152600401611a469190613269565b602060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190613024565b90506001600160a01b03811615801590611aa15750600082115b15611b0157604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050505b611b2860e0880135611b1960a08a0160808b01612c60565b6001600160a01b031690611d5a565b60008030611b3c60c08b0160a08c01612c60565b6001600160a01b03161480611b6957506000611b5e60c08b0160a08c01612c60565b6001600160a01b0316145b15611b7e575060029050610100880135611bf5565b6000611b9060a08b0160808c01612c60565b6001600160a01b0316336001600160a01b031614611bb357896101400135611bb5565b5a5b90506000611bc58d8c8a85611e35565b90508015611bd65760029350611bf2565b60019350611bf26001600160a01b0386166101008d0135611d5a565b50505b611bff8683611f8d565b600080611c1260e08c0160c08d01612c60565b6001600160a01b031614611c3557611c3060e08b0160c08c01612c60565b611c45565b611c4560a08b0160808c01612c60565b90506001600160a01b0381163303611c83576000611c68836101208d0135613256565b9050611c7d6001600160a01b03831682611d5a565b50611ca5565b611c92336101208c0135611d5a565b611ca56001600160a01b03821683611d5a565b505050505050505050505050565b600054610100900460ff16611cda5760405162461bcd60e51b81526004016105ac90613589565b61069c612006565b600054610100900460ff16611d095760405162461bcd60e51b81526004016105ac90613589565b61069c61202d565b6001600160a01b038116611d3857604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d6e57506001600160a01b038216155b15611d77575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b50509050806107035760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016105ac565b600080611e26611e2184600061205d565b61247e565b80516020909101209392505050565b600081600003611e5857604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e7c9190612c60565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ece60c0850160a08601612c60565b6001600160a01b031682610100860135611eec6101608801886135d4565b604051611efa92919061361a565b600060405180830381858888f193505050503d8060008114611f38576040519150601f19603f3d011682016040523d82523d6000602084013e611f3d565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611f9f57611f9f612cf0565b611fa8836108ad565b6003811115611fb957611fb9612cf0565b1461062757611fc882826124c2565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c8233604051611ffa92919061362a565b60405180910390a25050565b600054610100900460ff16610e8d5760405162461bcd60e51b81526004016105ac90613589565b600054610100900460ff166120545760405162461bcd60e51b81526004016105ac90613589565b61069c33610b07565b610200820151606090156120c857612076826011613256565b6001600160401b0381111561208d5761208d612ad1565b6040519080825280602002602001820160405280156120c057816020015b60608152602001906001900390816120ab5790505b509050612137565b6101e0830151156120de57612076826010613256565b6120e982600f613256565b6001600160401b0381111561210057612100612ad1565b60405190808252806020026020018201604052801561213357816020015b606081526020019060019003908161211e5790505b5090505b8251612142906124eb565b8160008151811061215557612155613650565b602002602001018190525061216d83602001516124eb565b8160018151811061218057612180613650565b602002602001018190525061219883604001516124fe565b816002815181106121ab576121ab613650565b60200260200101819052506121c383606001516124eb565b816003815181106121d6576121d6613650565b60200260200101819052506121ee83608001516124eb565b8160048151811061220157612201613650565b60200260200101819052506122198360a001516124eb565b8160058151811061222c5761222c613650565b60200260200101819052506122638360c0015160405160200161224f9190613666565b604051602081830303815290604052612527565b8160068151811061227657612276613650565b602002602001018190525061228e8360e00151612596565b816007815181106122a1576122a1613650565b60200260200101819052506122c38361010001516001600160801b0316612596565b816008815181106122d6576122d6613650565b60200260200101819052506122ef8361012001516125a4565b8160098151811061230257612302613650565b602002602001018190525061231b8361014001516125a4565b81600a8151811061232e5761232e613650565b60200260200101819052506123478361016001516125a4565b81600b8151811061235a5761235a613650565b6020026020010181905250612373836101800151612527565b81600c8151811061238657612386613650565b602002602001018190525061239f836101a001516124eb565b81600d815181106123b2576123b2613650565b60200260200101819052506123e9836101c0015160405160200161224f919060c09190911b6001600160c01b031916815260080190565b81600e815181106123fc576123fc613650565b6020026020010181905250826101e0015160001461244157612422836101e00151612596565b81600f8151811061243557612435613650565b60200260200101819052505b6102008301511561050d5761245a8361020001516124eb565b8160108151811061246d5761246d613650565b602002602001018190525092915050565b6060600061248b836125bb565b9050612499815160c06126f0565b816040516020016124ab92919061369b565b604051602081830303815290604052915050919050565b60006124cd83610a72565b905060008260038111156124e3576124e3612cf0565b909155505050565b606061050d6124f983612898565b612527565b604051606082811b6bffffffffffffffffffffffff191660208301529061050d9060340161224f565b60608082516001148015612555575060808360008151811061254b5761254b613650565b016020015160f81c105b1561256157508161050d565b61256d835160806126f0565b8360405160200161257f92919061369b565b604051602081830303815290604052905092915050565b606061050d6124f98361294a565b606061050d6124f9836001600160401b031661294a565b606081516000036125dc576040805160008082526020820190925290610678565b6000805b8351811015612621578381815181106125fb576125fb613650565b6020026020010151518261260f9190613256565b915061261a81613296565b90506125e0565b6000826001600160401b0381111561263b5761263b612ad1565b6040519080825280601f01601f191660200182016040528015612665576020820181803683370190505b50600092509050602081015b85518310156126e757600086848151811061268e5761268e613650565b6020026020010151905060006020820190506126ac83828451612a74565b8785815181106126be576126be613650565b602002602001015151836126d29190613256565b92505050826126e090613296565b9250612671565b50949350505050565b6060806038841015612757576040805160018082528183019092529060208201818036833701905050905061272583856136ca565b60f81b8160008151811061273b5761273b613650565b60200101906001600160f81b031916908160001a90535061050a565b600060015b61276681876136f9565b156127895761277482613296565b91506127826101008261370d565b905061275c565b612794826001613256565b6001600160401b038111156127ab576127ab612ad1565b6040519080825280601f01601f1916602001820160405280156127d5576020820181803683370190505b5092506127e285836136ca565b6127ed9060376136ca565b60f81b8360008151811061280357612803613650565b60200101906001600160f81b031916908160001a905350600190505b81811161288f576101006128338284613724565b61283f9061010061381b565b61284990886136f9565b6128539190613827565b60f81b83828151811061286857612868613650565b60200101906001600160f81b031916908160001a90535061288881613296565b905061281f565b50509392505050565b60606000826040516020016128af91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126e75783836128f481613296565b94508151811061290657612906613650565b602001015160f81c60f81b82828151811061292357612923613650565b60200101906001600160f81b031916908160001a90535061294381613296565b90506128e0565b606060008260405160200161296191815260200190565b604051602081830303815290604052905060005b60208110156129b65781818151811061299057612990613650565b01602001516001600160f81b0319166000036129b6576129af81613296565b9050612975565b60006129c3826020613724565b6001600160401b038111156129da576129da612ad1565b6040519080825280601f01601f191660200182016040528015612a04576020820181803683370190505b50905060005b81518110156126e7578383612a1e81613296565b945081518110612a3057612a30613650565b602001015160f81c60f81b828281518110612a4d57612a4d613650565b60200101906001600160f81b031916908160001a905350612a6d81613296565b9050612a0a565b8282825b60208110612ab05781518352612a8f602084613256565b9250612a9c602083613256565b9150612aa9602082613724565b9050612a78565b905182516020929092036101000a6000190180199091169116179052505050565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405290565b604080519081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405161022081016001600160401b0381118282101715612b0a57612b0a612ad1565b600082601f830112612b6657600080fd5b81356001600160401b0380821115612b8057612b80612ad1565b604051601f8301601f19908116603f01168101908282118183101715612ba857612ba8612ad1565b81604052838152866020858801011115612bc157600080fd5b836020870160208301376000602085830101528094505050505092915050565b801515811461078d57600080fd5b60008060408385031215612c0257600080fd5b82356001600160401b03811115612c1857600080fd5b612c2485828601612b55565b9250506020830135612c3581612be1565b809150509250929050565b6001600160a01b038116811461078d57600080fd5b80356106c781612c40565b600060208284031215612c7257600080fd5b813561050a81612c40565b600080600060608486031215612c9257600080fd5b8335925060208401356001600160401b03811115612caf57600080fd5b612cbb86828701612b55565b9250506040840135612ccc81612be1565b809150509250925092565b600060208284031215612ce957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612d2457634e487b7160e01b600052602160045260246000fd5b9052565b6020810161050d8284612d06565b60006101a08284031215612d4957600080fd5b50919050565b600060208284031215612d6157600080fd5b81356001600160401b03811115612d7757600080fd5b6108d084828501612d36565b60008083601f840112612d9557600080fd5b5081356001600160401b03811115612dac57600080fd5b602083019150836020828501011115612dc457600080fd5b9250929050565b60008060008060608587031215612de157600080fd5b843593506020850135925060408501356001600160401b03811115612e0557600080fd5b612e1187828801612d83565b95989497509550505050565b600080600060408486031215612e3257600080fd5b83356001600160401b0380821115612e4957600080fd5b612e5587838801612d36565b94506020860135915080821115612e6b57600080fd5b50612e7886828701612d83565b9497909650939450505050565b60008060408385031215612e9857600080fd5b82356001600160401b03811115612eae57600080fd5b612c2485828601612d36565b60006101a08236031215612ecd57600080fd5b612ed5612ae7565b82358152612ee560208401612c55565b60208201526040830135604082015260608301356060820152612f0a60808401612c55565b6080820152612f1b60a08401612c55565b60a0820152612f2c60c08401612c55565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f7857600080fd5b612f8436838801612b55565b83850152610180925082860135915080821115612fa057600080fd5b50612fad36828701612b55565b918301919091525092915050565b60005b83811015612fd6578181015183820152602001612fbe565b50506000910152565b60008151808452612ff7816020860160208601612fbb565b601f01601f19169290920160200192915050565b8281526040602082015260006106386040830184612fdf565b60006020828403121561303657600080fd5b815161050a81612c40565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526106db81840185612fdf565b60208152600061050a6020830184612fdf565b6040808252600e908201526d7369676e616c5f7365727669636560901b6060820152901515602082015260800190565b6000602082840312156130eb57600080fd5b815161050a81612be1565b60208152815160208201526000602083015161311d60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161314c60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131ca6101c0860184612fdf565b90860151858203601f1901838701529092506131e68382612fdf565b9695505050505050565b9182526060602083018190526006908301526562726964676560d01b60808301521515604082015260a00190565b60008351613230818460208801612fbb565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050d5761050d613240565b6040808252600b908201526a195d1a195c97dd985d5b1d60aa1b6060820152901515602082015260800190565b6000600182016132a8576132a8613240565b5060010190565b6000602082840312156132c157600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261332857600080fd5b6040516101008082018281106001600160401b038211171561334c5761334c612ad1565b6040528301818582111561335f57600080fd5b845b82811015613379578035825260209182019101613361565b509195945050505050565b80356001600160801b03811681146106c757600080fd5b80356001600160401b03811681146106c757600080fd5b6000602082840312156133c457600080fd5b81356001600160401b03808211156133db57600080fd5b90830190604082860312156133ef57600080fd5b6133f7612b10565b82358281111561340657600080fd5b8301610300818803121561341957600080fd5b613421612b32565b813581526020820135602082015261343b60408301612c55565b6040820152606082013560608201526080820135608082015260a082013560a082015261346b8860c08401613317565b60c08201526101c08083013560e08301526101e061348a818501613384565b61010084015261020061349e81860161339b565b6101208501526134b1610220860161339b565b6101408501526134c4610240860161339b565b610160850152610260850135878111156134dd57600080fd5b6134e98c828801612b55565b610180860152506102808501356101a08501526135096102a0860161339b565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561353b57600080fd5b61354787828601612b55565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000610feb60a0830184612fdf565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e198436030181126135eb57600080fd5b8301803591506001600160401b0382111561360557600080fd5b602001915036819003821315612dc457600080fd5b8183823760009101908152919050565b604081016136388285612d06565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b600881101561368b57815183526020928301929091019060010161366c565b5050506101008201905092915050565b600083516136ad818460208801612fbb565b8351908301906136c1818360208801612fbb565b01949350505050565b60ff818116838216019081111561050d5761050d613240565b634e487b7160e01b600052601260045260246000fd5b600082613708576137086136e3565b500490565b808202811582820484141761050d5761050d613240565b8181038181111561050d5761050d613240565b600181815b8085111561377257816000190482111561375857613758613240565b8085161561376557918102915b93841c939080029061373c565b509250929050565b6000826137895750600161050d565b816137965750600061050d565b81600181146137ac57600281146137b6576137d2565b600191505061050d565b60ff8411156137c7576137c7613240565b50506001821b61050d565b5060208310610133831016604e8410600b84101617156137f5575081810a61050d565b6137ff8383613737565b806000190482111561381357613813613240565b029392505050565b600061050a838361377a565b600082613836576138366136e3565b50069056fea26469706673582212208eb10bd8da4d703ed3087c309caf1d5f32d6c3129e5e44fcb477ba34eeb14e7264736f6c63430008120033", + "code": "0x6080604052600436106101235760003560e01c8063715018a6116100a0578063ce70f39b11610064578063ce70f39b1461040e578063d0496d6a1461042e578063f2fde38b1461049d578063f9803919146104bd578063fee99b22146104dd57600080fd5b8063715018a6146103885780638da5cb5b1461039d57806396e17852146103bb578063a4444efd146103ce578063bac443e2146103ee57600080fd5b80635075a9d4116100e75780635075a9d4146102cd578063540be6a3146102fa5780635817b0c31461031a5780635d0bd98614610348578063606b5b741461036857600080fd5b80630ca4dffd146101f257806319ab453c1461022f5780631be2bfa71461024f578063343b643c1461026f5780633ab76e9f146102af57600080fd5b366101ed576101566040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b0316141580156101b657506101a06040518060400160405280600b81526020016a195d1a195c97dd985d5b1d60aa1b81525060016104fd565b6001600160a01b0316336001600160a01b031614155b80156101cd57506065546001600160a01b03163314155b156101eb576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101fe57600080fd5b5061021261020d366004612bef565b6104fd565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b57600080fd5b506101eb61024a366004612c60565b610513565b34801561025b57600080fd5b5061021261026a366004612c7d565b61062b565b34801561027b57600080fd5b5061029f61028a366004612cd7565b600090815260cd602052604090205460ff1690565b6040519015158152602001610226565b3480156102bb57600080fd5b506097546001600160a01b0316610212565b3480156102d957600080fd5b506102ed6102e8366004612cd7565b610642565b6040516102269190612d28565b34801561030657600080fd5b5061029f610315366004612cd7565b61064d565b34801561032657600080fd5b5061033a610335366004612d4f565b610659565b604051908152602001610226565b34801561035457600080fd5b5061029f610363366004612cd7565b61066c565b34801561037457600080fd5b5061033a610383366004612cd7565b61067f565b34801561039457600080fd5b506101eb61068a565b3480156103a957600080fd5b506065546001600160a01b0316610212565b61033a6103c9366004612d4f565b61069e565b3480156103da57600080fd5b5061029f6103e9366004612dcb565b6106cc565b3480156103fa57600080fd5b506101eb610409366004612e1d565b6106e4565b34801561041a57600080fd5b5061029f610429366004612dcb565b610708565b34801561043a57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610226565b3480156104a957600080fd5b506101eb6104b8366004612c60565b610717565b3480156104c957600080fd5b506101eb6104d8366004612e85565b610790565b3480156104e957600080fd5b506101eb6104f8366004612e1d565b6107ae565b600061050a4684846107c4565b90505b92915050565b600054610100900460ff16158080156105335750600054600160ff909116105b8061054d5750303b15801561054d575060005460ff166001145b6105b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105d8576000805461ff0019166101001790555b6105e182610894565b8015610627576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106388484846107c4565b90505b9392505050565b600061050d826108ad565b600061050d30836108d8565b600061050d61066783612eba565b6109b9565b600061067830836109e9565b5092915050565b600061050d82610a72565b610692610aad565b61069c6000610b07565b565b60006106a8610b59565b6106bc60c9306106b785612eba565b610bb2565b90506106c760018055565b919050565b60006106db3086868686610e93565b95945050505050565b6106ec610b59565b6106fa60c930858585610ff6565b61070360018055565b505050565b60006106db30868686866112e7565b61071f610aad565b6001600160a01b0381166107845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ac565b61078d81610b07565b50565b610798610b59565b6107a560c930848461157c565b61062760018055565b6107b6610b59565b6106fa60c9308585856117b4565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906107f7908790879060040161300b565b602060405180830381865afa158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190613024565b90508161063b576040516001600160a01b03821615159061085f9086908690602001613041565b6040516020818303038152906040529061088c5760405162461bcd60e51b81526004016105ac9190613096565b509392505050565b61089c611cb3565b6108a4611ce2565b61078d81611d11565b6000806108b983610a72565b80549091508060038111156108d0576108d0612cf0565b949350505050565b604051630ca4dffd60e01b81526000906001600160a01b03841690630ca4dffd906109079084906004016130a9565b602060405180830381865afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109489190613024565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906130d9565b6000816040516020016109cc91906130f6565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316631be2bfa78460016040518363ffffffff1660e01b8152600401610a1b9291906131f0565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613024565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109cc92919061321e565b6065546001600160a01b0316331461069c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ac565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bab5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105ac565b6002600155565b60808101516000906001600160a01b0316610be0576040516301b1868360e71b815260040160405180910390fd5b600080610bf18585606001516109e9565b91509150811580610c055750468460600151145b15610c235760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c525750806001600160a01b03168460a001516001600160a01b0316145b15610c705760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610c8d9190613256565b610c979190613256565b9050348114610cb957604051632609a19760e21b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd90610ce990600190600401613269565b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190613024565b9050610d3f6001600160a01b03821683611d5a565b8754886000610d4d83613296565b909155508652336020870152466040870152610d68866109b9565b604051630ca4dffd60e01b81529095506001600160a01b03881690630ca4dffd90610d98906000906004016130a9565b602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190613024565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e0691815260200190565b6020604051808303816000875af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4991906132af565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e7a91906130f6565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316631be2bfa78660006040518363ffffffff1660e01b8152600401610ec59291906131f0565b602060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190613024565b604051630ca4dffd60e01b81529091506001600160a01b03881690630ca4dffd90610f36906000906004016130a9565b602060405180830381865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f779190613024565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610faa9594939291906132c8565b602060405180830381865afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb91906130d9565b979650505050505050565b600061100860a0850160808601612c60565b6001600160a01b03160361102f576040516301b1868360e71b815260040160405180910390fd5b468360400135146110535760405163e822b48d60e01b815260040160405180910390fd5b600061106161066785612eba565b600081815260048801602052604090205490915060ff16151560010361109a5760405163afde133560e01b815260040160405180910390fd5b6110ab8582866060013586866112e7565b6110c85760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff191660011790556110f661010086013560e0870135613256565b9050801561128b57604051630ca4dffd60e01b81526000906001600160a01b03881690630ca4dffd9061112e90600190600401613269565b602060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f9190613024565b90506001600160a01b03811615611204576001600160a01b03811663ba0bbd9561119f60a0890160808a01612c60565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b50505050611289565b600061121660a0880160808901612c60565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114611260576040519150601f19603f3d011682016040523d82523d6000602084013e611265565b606091505b50509050806112875760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112bd60a0880160808901612c60565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113095760405163e822b48d60e01b815260040160405180910390fd5b600085900361132b5760405163a6407c9360e01b815260040160405180910390fd5b6000611339838501856133b2565b60408051630ca4dffd60e01b8152600481019190915260056044820152647461696b6f60d81b60648201526000602482018190529192506001600160a01b03891690630ca4dffd90608401602060405180830381865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c59190613024565b8251610100015160405163a4e6775f60e01b81526001600160801b0390911660048201526001600160a01b03919091169063a4e6775f90602401602060405180830381865afa15801561141c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144091906132af565b90508015806114595750815161145590611e10565b8114155b15611469576000925050506106db565b815160600151604051631be2bfa760e01b8152734F6d0287F08bD8b05DB0272c493A2e9DA96753019163a5427462916001600160a01b038c1690631be2bfa7906114ba908c906000906004016131f0565b602060405180830381865afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613024565b6115048b610a72565b602087015160405160e086901b6001600160e01b031916815261152f94939291600391600401613556565b602060405180830381865af415801561154c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157091906130d9565b98975050505050505050565b610140820135158061158b5750805b156115d1576115a060a0830160808401612c60565b6001600160a01b0316336001600160a01b0316146115d15760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115df61066784612eba565b905060016115ec826108ad565b60038111156115fd576115fd612cf0565b1461161b57604051631f6646b560e01b815260040160405180910390fd5b604051630ca4dffd60e01b81526000906001600160a01b03861690630ca4dffd9061164b90600190600401613269565b602060405180830381865afa158015611668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168c9190613024565b90506001600160a01b038116156116fc57604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505b6117088685845a611e35565b1561171d57611718826002611f8d565b6117ac565b82156117945761172e826003611f8d565b60008061174160e0870160c08801612c60565b6001600160a01b0316146117645761175f60e0860160c08701612c60565b611774565b61177460a0860160808701612c60565b905061178e6001600160a01b038216610100870135611d5a565b506117ac565b6117ac6001600160a01b038216610100860135611d5a565b505050505050565b6101408301351580156117e857506117d260a0840160808501612c60565b6001600160a01b0316336001600160a01b031614155b156118065760405163398b635960e21b815260040160405180910390fd5b4683606001351461182a5760405163e822b48d60e01b815260040160405180910390fd5b600061183861066785612eba565b90506000611845826108ad565b600381111561185657611856612cf0565b1461187457604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316631be2bfa7866040013560006040518363ffffffff1660e01b81526004016118a99291906131f0565b602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190613024565b604051630ca4dffd60e01b81529091506001600160a01b03871690630ca4dffd9061191a906000906004016130a9565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190613024565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b81526004016119929594939291906132c8565b602060405180830381865afa1580156119af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d391906130d9565b6119f0576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a0b61010088013560e0890135613256565b611a159190613256565b90506000876001600160a01b0316630ca4dffd60016040518263ffffffff1660e01b8152600401611a469190613269565b602060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190613024565b90506001600160a01b03811615801590611aa15750600082115b15611b0157604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050505b611b2860e0880135611b1960a08a0160808b01612c60565b6001600160a01b031690611d5a565b60008030611b3c60c08b0160a08c01612c60565b6001600160a01b03161480611b6957506000611b5e60c08b0160a08c01612c60565b6001600160a01b0316145b15611b7e575060029050610100880135611bf5565b6000611b9060a08b0160808c01612c60565b6001600160a01b0316336001600160a01b031614611bb357896101400135611bb5565b5a5b90506000611bc58d8c8a85611e35565b90508015611bd65760029350611bf2565b60019350611bf26001600160a01b0386166101008d0135611d5a565b50505b611bff8683611f8d565b600080611c1260e08c0160c08d01612c60565b6001600160a01b031614611c3557611c3060e08b0160c08c01612c60565b611c45565b611c4560a08b0160808c01612c60565b90506001600160a01b0381163303611c83576000611c68836101208d0135613256565b9050611c7d6001600160a01b03831682611d5a565b50611ca5565b611c92336101208c0135611d5a565b611ca56001600160a01b03821683611d5a565b505050505050505050505050565b600054610100900460ff16611cda5760405162461bcd60e51b81526004016105ac90613589565b61069c612006565b600054610100900460ff16611d095760405162461bcd60e51b81526004016105ac90613589565b61069c61202d565b6001600160a01b038116611d3857604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d6e57506001600160a01b038216155b15611d77575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b50509050806107035760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016105ac565b600080611e26611e2184600061205d565b61247e565b80516020909101209392505050565b600081600003611e5857604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e7c9190612c60565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ece60c0850160a08601612c60565b6001600160a01b031682610100860135611eec6101608801886135d4565b604051611efa92919061361a565b600060405180830381858888f193505050503d8060008114611f38576040519150601f19603f3d011682016040523d82523d6000602084013e611f3d565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611f9f57611f9f612cf0565b611fa8836108ad565b6003811115611fb957611fb9612cf0565b1461062757611fc882826124c2565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c8233604051611ffa92919061362a565b60405180910390a25050565b600054610100900460ff16610e8d5760405162461bcd60e51b81526004016105ac90613589565b600054610100900460ff166120545760405162461bcd60e51b81526004016105ac90613589565b61069c33610b07565b610200820151606090156120c857612076826011613256565b6001600160401b0381111561208d5761208d612ad1565b6040519080825280602002602001820160405280156120c057816020015b60608152602001906001900390816120ab5790505b509050612137565b6101e0830151156120de57612076826010613256565b6120e982600f613256565b6001600160401b0381111561210057612100612ad1565b60405190808252806020026020018201604052801561213357816020015b606081526020019060019003908161211e5790505b5090505b8251612142906124eb565b8160008151811061215557612155613650565b602002602001018190525061216d83602001516124eb565b8160018151811061218057612180613650565b602002602001018190525061219883604001516124fe565b816002815181106121ab576121ab613650565b60200260200101819052506121c383606001516124eb565b816003815181106121d6576121d6613650565b60200260200101819052506121ee83608001516124eb565b8160048151811061220157612201613650565b60200260200101819052506122198360a001516124eb565b8160058151811061222c5761222c613650565b60200260200101819052506122638360c0015160405160200161224f9190613666565b604051602081830303815290604052612527565b8160068151811061227657612276613650565b602002602001018190525061228e8360e00151612596565b816007815181106122a1576122a1613650565b60200260200101819052506122c38361010001516001600160801b0316612596565b816008815181106122d6576122d6613650565b60200260200101819052506122ef8361012001516125a4565b8160098151811061230257612302613650565b602002602001018190525061231b8361014001516125a4565b81600a8151811061232e5761232e613650565b60200260200101819052506123478361016001516125a4565b81600b8151811061235a5761235a613650565b6020026020010181905250612373836101800151612527565b81600c8151811061238657612386613650565b602002602001018190525061239f836101a001516124eb565b81600d815181106123b2576123b2613650565b60200260200101819052506123e9836101c0015160405160200161224f919060c09190911b6001600160c01b031916815260080190565b81600e815181106123fc576123fc613650565b6020026020010181905250826101e0015160001461244157612422836101e00151612596565b81600f8151811061243557612435613650565b60200260200101819052505b6102008301511561050d5761245a8361020001516124eb565b8160108151811061246d5761246d613650565b602002602001018190525092915050565b6060600061248b836125bb565b9050612499815160c06126f0565b816040516020016124ab92919061369b565b604051602081830303815290604052915050919050565b60006124cd83610a72565b905060008260038111156124e3576124e3612cf0565b909155505050565b606061050d6124f983612898565b612527565b604051606082811b6bffffffffffffffffffffffff191660208301529061050d9060340161224f565b60608082516001148015612555575060808360008151811061254b5761254b613650565b016020015160f81c105b1561256157508161050d565b61256d835160806126f0565b8360405160200161257f92919061369b565b604051602081830303815290604052905092915050565b606061050d6124f98361294a565b606061050d6124f9836001600160401b031661294a565b606081516000036125dc576040805160008082526020820190925290610678565b6000805b8351811015612621578381815181106125fb576125fb613650565b6020026020010151518261260f9190613256565b915061261a81613296565b90506125e0565b6000826001600160401b0381111561263b5761263b612ad1565b6040519080825280601f01601f191660200182016040528015612665576020820181803683370190505b50600092509050602081015b85518310156126e757600086848151811061268e5761268e613650565b6020026020010151905060006020820190506126ac83828451612a74565b8785815181106126be576126be613650565b602002602001015151836126d29190613256565b92505050826126e090613296565b9250612671565b50949350505050565b6060806038841015612757576040805160018082528183019092529060208201818036833701905050905061272583856136ca565b60f81b8160008151811061273b5761273b613650565b60200101906001600160f81b031916908160001a90535061050a565b600060015b61276681876136f9565b156127895761277482613296565b91506127826101008261370d565b905061275c565b612794826001613256565b6001600160401b038111156127ab576127ab612ad1565b6040519080825280601f01601f1916602001820160405280156127d5576020820181803683370190505b5092506127e285836136ca565b6127ed9060376136ca565b60f81b8360008151811061280357612803613650565b60200101906001600160f81b031916908160001a905350600190505b81811161288f576101006128338284613724565b61283f9061010061381b565b61284990886136f9565b6128539190613827565b60f81b83828151811061286857612868613650565b60200101906001600160f81b031916908160001a90535061288881613296565b905061281f565b50509392505050565b60606000826040516020016128af91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126e75783836128f481613296565b94508151811061290657612906613650565b602001015160f81c60f81b82828151811061292357612923613650565b60200101906001600160f81b031916908160001a90535061294381613296565b90506128e0565b606060008260405160200161296191815260200190565b604051602081830303815290604052905060005b60208110156129b65781818151811061299057612990613650565b01602001516001600160f81b0319166000036129b6576129af81613296565b9050612975565b60006129c3826020613724565b6001600160401b038111156129da576129da612ad1565b6040519080825280601f01601f191660200182016040528015612a04576020820181803683370190505b50905060005b81518110156126e7578383612a1e81613296565b945081518110612a3057612a30613650565b602001015160f81c60f81b828281518110612a4d57612a4d613650565b60200101906001600160f81b031916908160001a905350612a6d81613296565b9050612a0a565b8282825b60208110612ab05781518352612a8f602084613256565b9250612a9c602083613256565b9150612aa9602082613724565b9050612a78565b905182516020929092036101000a6000190180199091169116179052505050565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405290565b604080519081016001600160401b0381118282101715612b0a57612b0a612ad1565b60405161022081016001600160401b0381118282101715612b0a57612b0a612ad1565b600082601f830112612b6657600080fd5b81356001600160401b0380821115612b8057612b80612ad1565b604051601f8301601f19908116603f01168101908282118183101715612ba857612ba8612ad1565b81604052838152866020858801011115612bc157600080fd5b836020870160208301376000602085830101528094505050505092915050565b801515811461078d57600080fd5b60008060408385031215612c0257600080fd5b82356001600160401b03811115612c1857600080fd5b612c2485828601612b55565b9250506020830135612c3581612be1565b809150509250929050565b6001600160a01b038116811461078d57600080fd5b80356106c781612c40565b600060208284031215612c7257600080fd5b813561050a81612c40565b600080600060608486031215612c9257600080fd5b8335925060208401356001600160401b03811115612caf57600080fd5b612cbb86828701612b55565b9250506040840135612ccc81612be1565b809150509250925092565b600060208284031215612ce957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612d2457634e487b7160e01b600052602160045260246000fd5b9052565b6020810161050d8284612d06565b60006101a08284031215612d4957600080fd5b50919050565b600060208284031215612d6157600080fd5b81356001600160401b03811115612d7757600080fd5b6108d084828501612d36565b60008083601f840112612d9557600080fd5b5081356001600160401b03811115612dac57600080fd5b602083019150836020828501011115612dc457600080fd5b9250929050565b60008060008060608587031215612de157600080fd5b843593506020850135925060408501356001600160401b03811115612e0557600080fd5b612e1187828801612d83565b95989497509550505050565b600080600060408486031215612e3257600080fd5b83356001600160401b0380821115612e4957600080fd5b612e5587838801612d36565b94506020860135915080821115612e6b57600080fd5b50612e7886828701612d83565b9497909650939450505050565b60008060408385031215612e9857600080fd5b82356001600160401b03811115612eae57600080fd5b612c2485828601612d36565b60006101a08236031215612ecd57600080fd5b612ed5612ae7565b82358152612ee560208401612c55565b60208201526040830135604082015260608301356060820152612f0a60808401612c55565b6080820152612f1b60a08401612c55565b60a0820152612f2c60c08401612c55565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f7857600080fd5b612f8436838801612b55565b83850152610180925082860135915080821115612fa057600080fd5b50612fad36828701612b55565b918301919091525092915050565b60005b83811015612fd6578181015183820152602001612fbe565b50506000910152565b60008151808452612ff7816020860160208601612fbb565b601f01601f19169290920160200192915050565b8281526040602082015260006106386040830184612fdf565b60006020828403121561303657600080fd5b815161050a81612c40565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526106db81840185612fdf565b60208152600061050a6020830184612fdf565b6040808252600e908201526d7369676e616c5f7365727669636560901b6060820152901515602082015260800190565b6000602082840312156130eb57600080fd5b815161050a81612be1565b60208152815160208201526000602083015161311d60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161314c60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131ca6101c0860184612fdf565b90860151858203601f1901838701529092506131e68382612fdf565b9695505050505050565b9182526060602083018190526006908301526562726964676560d01b60808301521515604082015260a00190565b60008351613230818460208801612fbb565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050d5761050d613240565b6040808252600b908201526a195d1a195c97dd985d5b1d60aa1b6060820152901515602082015260800190565b6000600182016132a8576132a8613240565b5060010190565b6000602082840312156132c157600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261332857600080fd5b6040516101008082018281106001600160401b038211171561334c5761334c612ad1565b6040528301818582111561335f57600080fd5b845b82811015613379578035825260209182019101613361565b509195945050505050565b80356001600160801b03811681146106c757600080fd5b80356001600160401b03811681146106c757600080fd5b6000602082840312156133c457600080fd5b81356001600160401b03808211156133db57600080fd5b90830190604082860312156133ef57600080fd5b6133f7612b10565b82358281111561340657600080fd5b8301610300818803121561341957600080fd5b613421612b32565b813581526020820135602082015261343b60408301612c55565b6040820152606082013560608201526080820135608082015260a082013560a082015261346b8860c08401613317565b60c08201526101c08083013560e08301526101e061348a818501613384565b61010084015261020061349e81860161339b565b6101208501526134b1610220860161339b565b6101408501526134c4610240860161339b565b610160850152610260850135878111156134dd57600080fd5b6134e98c828801612b55565b610180860152506102808501356101a08501526135096102a0860161339b565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561353b57600080fd5b61354787828601612b55565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000610feb60a0830184612fdf565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e198436030181126135eb57600080fd5b8301803591506001600160401b0382111561360557600080fd5b602001915036819003821315612dc457600080fd5b8183823760009101908152919050565b604081016136388285612d06565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b600881101561368b57815183526020928301929091019060010161366c565b5050506101008201905092915050565b600083516136ad818460208801612fbb565b8351908301906136c1818360208801612fbb565b01949350505050565b60ff818116838216019081111561050d5761050d613240565b634e487b7160e01b600052601260045260246000fd5b600082613708576137086136e3565b500490565b808202811582820484141761050d5761050d613240565b8181038181111561050d5761050d613240565b600181815b8085111561377257816000190482111561375857613758613240565b8085161561376557918102915b93841c939080029061373c565b509250929050565b6000826137895750600161050d565b816137965750600061050d565b81600181146137ac57600281146137b6576137d2565b600191505061050d565b60ff8411156137c7576137c7613240565b50506001821b61050d565b5060208310610133831016604e8410600b84101617156137f5575081810a61050d565b6137ff8383613737565b806000190482111561381357613813613240565b029392505050565b600061050a838361377a565b600082613836576138366136e3565b50069056fea264697066735822122070121f05246570406412e10c8eb43e53cc86def55bb41d395a1641cd8b70ae8d64736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000002": { @@ -93,7 +90,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" }, - "code": "0x6080604052600436106100dd5760003560e01c8063780b64f01161007f5780639aa8605c116100595780639aa8605c14610292578063c287e578146102c3578063ee1490b214610303578063f2fde38b1461031657600080fd5b8063780b64f0146101f55780638da5cb5b146102545780639754149b1461027257600080fd5b80631be2bfa7116100bb5780631be2bfa7146101615780633ab76e9f1461018157806367090ccf1461019f578063715018a6146101e057600080fd5b80630c6fab82146100e25780630ca4dffd1461010457806319ab453c14610141575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611fd3565b610336565b005b34801561011057600080fd5b5061012461011f366004612112565b610577565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014d57600080fd5b5061010261015c366004612163565b61058d565b34801561016d57600080fd5b5061012461017c366004612180565b6106a5565b34801561018d57600080fd5b506097546001600160a01b0316610124565b3480156101ab57600080fd5b506101246101ba3660046121da565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101ec57600080fd5b506101026106bc565b34801561020157600080fd5b506102356102103660046121ff565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610138565b34801561026057600080fd5b506065546001600160a01b0316610124565b34801561027e57600080fd5b5061010261028d366004612218565b6106d0565b34801561029e57600080fd5b506102b26102ad366004612163565b610a33565b604051610138959493929190612307565b3480156102cf57600080fd5b506102f36102de366004612163565b60c96020526000908152604090205460ff1681565b6040519015158152602001610138565b610102610311366004612358565b610b84565b34801561032257600080fd5b50610102610331366004612163565b6113f3565b61033e61146c565b6040518060400160405280600681526020016562726964676560d01b815250610368816000610577565b6001600160a01b0316336001600160a01b03161461039957604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fd91906123f3565b905061043281604001516040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b031681602001516001600160a01b031614610467576040516320258b8760e21b815260040160405180910390fd5b60004687350361049c576104816040880160208901612163565b90506104976001600160a01b03821686866114c5565b61050c565b6104a587611528565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104f357600080fd5b505af1158015610507573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061057160018055565b50505050565b6000610584468484611587565b90505b92915050565b600054610100900460ff16158080156105ad5750600054600160ff909116105b806105c75750303b1580156105c7575060005460ff166001145b61062f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610652576000805461ff0019166101001790555b61065b82611657565b80156106a1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106b2848484611587565b90505b9392505050565b6106c4611670565b6106ce60006116ca565b565b6106d861146c565b60006106ea60a0850160808601612163565b6001600160a01b031603610711576040516372b41cdf60e01b815260040160405180910390fd5b46836040013514610735576040516348bc100560e01b815260040160405180910390fd5b60006107606040518060400160405280600681526020016562726964676560d01b8152506000610577565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b815260040161079091906124c9565b602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906125e7565b600081815260cc6020526040902080546001909101549192506001600160a01b0316908161081257604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b9061084890869060608c0135908b908b90600401612600565b602060405180830381865afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061262a565b6108a6576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b03909116178155905160019091015580156109ba576001600160a01b038216600090815260c9602052604090205460ff1615610996576001600160a01b0382166342e91bb361093160a08a0160808b01612163565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506109ba565b6109ba6109a960a0890160808a01612163565b6001600160a01b03841690836114c5565b6109ca60a0880160808901612163565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af68484604051610a199291906001600160a01b03929092168252602082015260400190565b60405180910390a350505050610a2e60018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a7390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f90612647565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505090806003018054610b0190612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90612647565b8015610b7a5780601f10610b4f57610100808354040283529160200191610b7a565b820191906000526020600020905b815481529060010190602001808311610b5d57829003601f168201915b5050505050905085565b610b8c61146c565b6001600160a01b0387161580610be15750610bcc886040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b0316876001600160a01b0316145b15610bff57604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610c2657604051637c6addb760e01b815260040160405180910390fd5b84600003610c465760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e9d57604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610d5390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7f90612647565b8015610dcc5780601f10610da157610100808354040283529160200191610dcc565b820191906000526020600020905b815481529060010190602001808311610daf57829003601f168201915b50505050508152602001600382018054610de590612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1190612647565b8015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e9657604051633e45a03560e21b815260040160405180910390fd5b50856110fd565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190612690565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9291908101906126ad565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffd91908101906126ad565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906125e7565b90506110846001600160a01b03831633308c61171c565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee91906125e7565b6110f89190612723565b925050505b61118c604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015260408051808201909152600b81526a1d1bdad95b97dd985d5b1d60aa1b60208201526111c8908c9060006106a5565b6001600160a01b031660a08201526080810151604051630637d5c160e11b916111fa918691908e908790602401612744565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526101608201526101408101879052610120810186905261124c8634612723565b60e08201526001600160a01b03851660c0820152610180810184905260408051808201909152600681526562726964676560d01b60208201526000906112929082610577565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b81526004016112be91906127dc565b60206040518083038185885af11580156112dc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130191906125e7565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e886040516113d4939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a4505050506113e960018055565b5050505050505050565b6113fb611670565b6001600160a01b0381166114605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b611469816116ca565b50565b6002600154036114be5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610626565b6002600155565b6040516001600160a01b038316602482015260448101829052610a2e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611754565b8035600090815260cb6020908152604080832083929091839161154f918701908701612163565b6001600160a01b039081168252602082019290925260400160002054169050806105875761157c83611826565b6106b5565b60018055565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906115ba90879087906004016128cc565b602060405180830381865afa1580156115d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fb91906128e5565b9050816106b5576040516001600160a01b0382161515906116229086908690602001612902565b6040516020818303038152906040529061164f5760405162461bcd60e51b81526004016106269190612957565b509392505050565b61165f611aab565b611667611ada565b61146981611b09565b6065546001600160a01b031633146106ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610626565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105719085906323b872dd60e01b906084016114f1565b60006117a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b529092919063ffffffff16565b805190915015610a2e57808060200190518101906117c7919061262a565b610a2e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b600061189f81833561183e6040860160208701612163565b60405161186192916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161188790611fa1565b601f1982820381018352601f90910116604052611b61565b6097549091506001600160a01b0380831691636c0db62b91166118c86040860160208701612163565b85356118da606088016040890161296a565b6118e76060890189612987565b6118f460808b018b612987565b6118fe8c35611c65565b604051602001611910939291906129cd565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119419796959493929190612a16565b600060405180830381600087803b15801561195b57600080fd5b505af115801561196f573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119ac8282612b81565b50508135600090815260cb602090815260408083208493909290916119d691908701908701612163565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316826020016020810190611a379190612163565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a706060870187612987565b611a7d6080890189612987565b611a8d60608b0160408c0161296a565b604051611a9e959493929190612c08565b60405180910390a4919050565b600054610100900460ff16611ad25760405162461bcd60e51b815260040161062690612c45565b6106ce611cf7565b600054610100900460ff16611b015760405162461bcd60e51b815260040161062690612c45565b6106ce611d1e565b6001600160a01b038116611b3057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60606106b28484600085611d4e565b600083471015611bb35760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610626565b8151600003611c045760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610626565b8282516020840186f590506001600160a01b0381166106b55760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610626565b60606000611c7283611e2b565b60010190506000816001600160401b03811115611c9157611c91612041565b6040519080825280601f01601f191660200182016040528015611cbb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611cc557509392505050565b600054610100900460ff166115815760405162461bcd60e51b815260040161062690612c45565b600054610100900460ff16611d455760405162461bcd60e51b815260040161062690612c45565b6106ce336116ca565b606082471015611daf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b600080866001600160a01b03168587604051611dcb9190612c90565b60006040518083038185875af1925050503d8060008114611e08576040519150601f19603f3d011682016040523d82523d6000602084013e611e0d565b606091505b5091509150611e1e87838387611f03565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e6a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e96576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611eb457662386f26fc10000830492506010015b6305f5e1008310611ecc576305f5e100830492506008015b6127108310611ee057612710830492506004015b60648310611ef2576064830492506002015b600a83106105875760010192915050565b60608315611f72578251600003611f6b576001600160a01b0385163b611f6b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b5081611e23565b611e238383815115611f875781518083602001fd5b8060405162461bcd60e51b81526004016106269190612957565b61179b80612cad83390190565b6001600160a01b038116811461146957600080fd5b8035611fce81611fae565b919050565b60008060008060808587031215611fe957600080fd5b84356001600160401b03811115611fff57600080fd5b850160a0818803121561201157600080fd5b9350602085013561202181611fae565b9250604085013561203181611fae565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561207f5761207f612041565b604052919050565b60006001600160401b038211156120a0576120a0612041565b50601f01601f191660200190565b600082601f8301126120bf57600080fd5b81356120d26120cd82612087565b612057565b8181528460208386010111156120e757600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461146957600080fd5b6000806040838503121561212557600080fd5b82356001600160401b0381111561213b57600080fd5b612147858286016120ae565b925050602083013561215881612104565b809150509250929050565b60006020828403121561217557600080fd5b81356106b581611fae565b60008060006060848603121561219557600080fd5b8335925060208401356001600160401b038111156121b257600080fd5b6121be868287016120ae565b92505060408401356121cf81612104565b809150509250925092565b600080604083850312156121ed57600080fd5b82359150602083013561215881611fae565b60006020828403121561221157600080fd5b5035919050565b60008060006040848603121561222d57600080fd5b83356001600160401b038082111561224457600080fd5b908501906101a0828803121561225957600080fd5b9093506020850135908082111561226f57600080fd5b818601915086601f83011261228357600080fd5b81358181111561229257600080fd5b8760208285010111156122a457600080fd5b6020830194508093505050509250925092565b60005b838110156122d25781810151838201526020016122ba565b50506000910152565b600081518084526122f38160208601602086016122b7565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a06060820181905260009061233a908301856122db565b828103608084015261234c81856122db565b98975050505050505050565b600080600080600080600080610100898b03121561237557600080fd5b88359750602089013561238781611fae565b9650604089013561239781611fae565b9550606089013594506080890135935060a0890135925060c08901356123bc81611fae565b915060e08901356001600160401b038111156123d757600080fd5b6123e38b828c016120ae565b9150509295985092959890939650565b60006060828403121561240557600080fd5b604051606081018181106001600160401b038211171561242757612427612041565b60405282518152602083015161243c81611fae565b60208201526040928301519281019290925250919050565b6000808335601e1984360301811261246b57600080fd5b83016020810192503590506001600160401b0381111561248a57600080fd5b80360382131561249957600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081528135602082015260006124e260208401611fc3565b6001600160a01b038116604084015250604083013560608301526060830135608083015261251260808401611fc3565b6001600160a01b03811660a08401525061252e60a08401611fc3565b6001600160a01b03811660c08401525061254a60c08401611fc3565b6001600160a01b03811660e08401525061010060e08401358184015261012081850135818501526101409150808501358285015250610160818501358185015261259681860186612454565b925090506101a061018081818701526125b46101c0870185856124a0565b93506125c281880188612454565b878603601f190184890152935090506125dc8484836124a0565b979650505050505050565b6000602082840312156125f957600080fd5b5051919050565b8481528360208201526060604082015260006126206060830184866124a0565b9695505050505050565b60006020828403121561263c57600080fd5b81516106b581612104565b600181811c9082168061265b57607f821691505b60208210810361267b57634e487b7160e01b600052602260045260246000fd5b50919050565b60ff8116811461146957600080fd5b6000602082840312156126a257600080fd5b81516106b581612681565b6000602082840312156126bf57600080fd5b81516001600160401b038111156126d557600080fd5b8201601f810184136126e657600080fd5b80516126f46120cd82612087565b81815285602083850101111561270957600080fd5b61271a8260208301602086016122b7565b95945050505050565b8181038181111561058757634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261278e6101208501836122db565b91506080880151607f19858403016101008601526127ac83826122db565b9188166020860152506001600160a01b038616604085015291506127cd9050565b82606083015295945050505050565b60208152815160208201526000602083015161280360408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161283260a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526128b06101c08601846122db565b90860151858203601f19018387015290925061262083826122db565b8281526040602082015260006106b260408301846122db565b6000602082840312156128f757600080fd5b81516106b581611fae565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e0820152600061010080606084015261271a818401856122db565b60208152600061058460208301846122db565b60006020828403121561297c57600080fd5b81356106b581612681565b6000808335601e1984360301811261299e57600080fd5b8301803591506001600160401b038211156129b857600080fd5b60200191503681900382131561249957600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b815283516129fb81600c8401602088016122b7565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612a5390830185876124a0565b82810360a0840152612a6581856122db565b9a9950505050505050505050565b601f821115610a2e57600081815260208120601f850160051c81016020861015612a9a5750805b601f850160051c820191505b81811015612ab957828155600101612aa6565b505050505050565b6001600160401b03831115612ad857612ad8612041565b612aec83612ae68354612647565b83612a73565b6000601f841160018114612b205760008515612b085750838201355b600019600387901b1c1916600186901b178355612b7a565b600083815260209020601f19861690835b82811015612b515786850135825560209485019460019092019101612b31565b5086821015612b6e5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612b9781611fae565b81546040850135612ba781612681565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612bdd6060830183612987565b612beb818360028601612ac1565b5050612bfa6080830183612987565b610571818360038601612ac1565b606081526000612c1c6060830187896124a0565b8281036020840152612c2f8186886124a0565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612ca28184602087016122b7565b919091019291505056fe608060405234801561001057600080fd5b5061177b806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806367e828bf116100c35780638da5cb5b1161007c5780638da5cb5b146102ed57806395d89b41146102fe578063a457c2d714610306578063a9059cbb14610319578063dd62ed3e1461032c578063f2fde38b1461036557600080fd5b806367e828bf1461024d5780636c0db62b1461028357806370a0823114610296578063715018a6146102bf57806377be18a8146102c75780637cf8ed0d146102da57600080fd5b806323b872dd1161011557806323b872dd146101e3578063313ce567146101f6578063395093511461020b5780633ab76e9f1461021e57806342e91bb31461022f57806349d126051461024457600080fd5b806306fdde0314610152578063095ea7b3146101705780630ca4dffd1461019357806318160ddd146101be5780631be2bfa7146101d0575b600080fd5b61015a610378565b60405161016791906111f0565b60405180910390f35b61018361017e366004611218565b61040a565b6040519015158152602001610167565b6101a66101a13660046112fc565b610424565b6040516001600160a01b039091168152602001610167565b60cb545b604051908152602001610167565b6101a66101de36600461134a565b610438565b6101836101f13660046113a1565b61044d565b60ce5460405160ff9091168152602001610167565b610183610219366004611218565b610483565b6097546001600160a01b03166101a6565b61024261023d366004611218565b6104c2565b005b6101c260fc5481565b61026460fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b6102426102913660046113e2565b610574565b6101c26102a436600461148c565b6001600160a01b0316600090815260c9602052604090205490565b61024261070c565b6102426102d5366004611218565b610720565b60fb546101a6906001600160a01b031681565b6065546001600160a01b03166101a6565b61015a6107c5565b610183610314366004611218565b6107d4565b610183610327366004611218565b610871565b6101c261033a3660046114a9565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61024261037336600461148c565b6108a6565b606060cc8054610387906114e2565b80601f01602080910402602001604051908101604052809291908181526020018280546103b3906114e2565b80156104005780601f106103d557610100808354040283529160200191610400565b820191906000526020600020905b8154815290600101906020018083116103e357829003601f168201915b5050505050905090565b60003361041881858561091f565b60019150505b92915050565b6000610431468484610a43565b9392505050565b6000610445848484610a43565b949350505050565b6000306001600160a01b03841603610478576040516319a6f37760e21b815260040160405180910390fd5b610445848484610b13565b33600081815260ca602090815260408083206001600160a01b038716845290915281205490919061041890829086906104bd908790611532565b61091f565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b8152506104f1816000610424565b6001600160a01b0316336001600160a01b03161461052257604051630d85cccf60e11b815260040160405180910390fd5b61052c8383610b2c565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161056791815260200190565b60405180910390a2505050565b600054610100900460ff16158080156105945750600054600160ff909116105b806105ae5750303b1580156105ae575060005460ff166001145b6106165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610639576000805461ff0019166101001790555b6001600160a01b038616158061064d575084155b8061065757504685145b8061066157508251155b8061066b57508151155b15610689576040516301e25ab360e71b815260040160405180910390fd5b61069287610bd0565b61069d828486610be9565b60fb80546001600160a01b0319166001600160a01b03881617905560fc8590558015610703576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610714610c20565b61071e6000610c7a565b565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525061074f816000610424565b6001600160a01b0316336001600160a01b03161461078057604051630d85cccf60e11b815260040160405180910390fd5b61078a8383610ccc565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161056791815260200190565b606060cd8054610387906114e2565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190838110156108595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b610866828686840361091f565b506001949350505050565b6000306001600160a01b0384160361089c576040516319a6f37760e21b815260040160405180910390fd5b6104318383610ddf565b6108ae610c20565b6001600160a01b0381166109135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61091c81610c7a565b50565b6001600160a01b0383166109815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610a769087908790600401611545565b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab7919061155e565b905081610431576040516001600160a01b038216151590610ade908690869060200161157b565b60405160208183030381529060405290610b0b5760405162461bcd60e51b815260040161060d91906111f0565b509392505050565b600033610b21858285610ded565b610866858585610e7f565b6001600160a01b038216610b825760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060d565b8060cb6000828254610b949190611532565b90915550506001600160a01b038216600090815260c9602052604081208054839290610bc1908490611532565b90915550610bcc9050565b5050565b610bd861104d565b610be061107c565b61091c816110ab565b600054610100900460ff16610c105760405162461bcd60e51b815260040161060d906115d9565b610c1b8383836110f4565b505050565b6065546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d2c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b6001600160a01b038216600090815260c9602052604090205481811015610da05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038316600090815260c960205260408120838303905560cb8054849290610dcf908490611624565b90915550610c1b90508360008483565b600033610418818585610e7f565b6001600160a01b03838116600090815260ca60209081526040808320938616835292905220546000198114610e795781811015610e6c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610e79848484840361091f565b50505050565b6001600160a01b038316610ee35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610f455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b6001600160a01b038316600090815260c9602052604090205481811015610fbd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b03808516600090815260c96020526040808220858503905591851681529081208054849290610ff4908490611532565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104091815260200190565b60405180910390a3610e79565b600054610100900460ff166110745760405162461bcd60e51b815260040161060d906115d9565b61071e61114d565b600054610100900460ff166110a35760405162461bcd60e51b815260040161060d906115d9565b61071e61117a565b6001600160a01b0381166110d257604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661111b5760405162461bcd60e51b815260040161060d906115d9565b60cc6111278482611685565b5060cd6111348382611685565b5060ce805460ff191660ff929092169190911790555050565b600054610100900460ff166111745760405162461bcd60e51b815260040161060d906115d9565b60018055565b600054610100900460ff166111a15760405162461bcd60e51b815260040161060d906115d9565b61071e33610c7a565b6000815180845260005b818110156111d0576020818501810151868301820152016111b4565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061043160208301846111aa565b6001600160a01b038116811461091c57600080fd5b6000806040838503121561122b57600080fd5b823561123681611203565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261126b57600080fd5b813567ffffffffffffffff8082111561128657611286611244565b604051601f8301601f19908116603f011681019082821181831017156112ae576112ae611244565b816040528381528660208588010111156112c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b803580151581146112f757600080fd5b919050565b6000806040838503121561130f57600080fd5b823567ffffffffffffffff81111561132657600080fd5b6113328582860161125a565b925050611341602084016112e7565b90509250929050565b60008060006060848603121561135f57600080fd5b83359250602084013567ffffffffffffffff81111561137d57600080fd5b6113898682870161125a565b925050611398604085016112e7565b90509250925092565b6000806000606084860312156113b657600080fd5b83356113c181611203565b925060208401356113d181611203565b929592945050506040919091013590565b60008060008060008060c087890312156113fb57600080fd5b863561140681611203565b9550602087013561141681611203565b945060408701359350606087013560ff8116811461143357600080fd5b9250608087013567ffffffffffffffff8082111561145057600080fd5b61145c8a838b0161125a565b935060a089013591508082111561147257600080fd5b5061147f89828a0161125a565b9150509295509295509295565b60006020828403121561149e57600080fd5b813561043181611203565b600080604083850312156114bc57600080fd5b82356114c781611203565b915060208301356114d781611203565b809150509250929050565b600181811c908216806114f657607f821691505b60208210810361151657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561041e5761041e61151c565b82815260406020820152600061044560408301846111aa565b60006020828403121561157057600080fd5b815161043181611203565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526115d0818401856111aa565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8181038181111561041e5761041e61151c565b601f821115610c1b57600081815260208120601f850160051c8101602086101561165e5750805b601f850160051c820191505b8181101561167d5782815560010161166a565b505050505050565b815167ffffffffffffffff81111561169f5761169f611244565b6116b3816116ad84546114e2565b84611637565b602080601f8311600181146116e857600084156116d05750858301515b600019600386901b1c1916600185901b17855561167d565b600085815260208120601f198616915b82811015611717578886015182559484019460019091019084016116f8565b50858210156117355787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220ca76596b3503f05be2b029bd48d6388ebec4ff9261948cac40d64bcced6ea6ae64736f6c63430008120033a264697066735822122095877fe6c2bd577e1f202046cf5fb0a7de601b03c3952d9c24d5d47ce07ffda564736f6c63430008120033", + "code": "0x6080604052600436106100dd5760003560e01c8063780b64f01161007f5780639aa8605c116100595780639aa8605c14610292578063c287e578146102c3578063ee1490b214610303578063f2fde38b1461031657600080fd5b8063780b64f0146101f55780638da5cb5b146102545780639754149b1461027257600080fd5b80631be2bfa7116100bb5780631be2bfa7146101615780633ab76e9f1461018157806367090ccf1461019f578063715018a6146101e057600080fd5b80630c6fab82146100e25780630ca4dffd1461010457806319ab453c14610141575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611fd3565b610336565b005b34801561011057600080fd5b5061012461011f366004612112565b610577565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014d57600080fd5b5061010261015c366004612163565b61058d565b34801561016d57600080fd5b5061012461017c366004612180565b6106a5565b34801561018d57600080fd5b506097546001600160a01b0316610124565b3480156101ab57600080fd5b506101246101ba3660046121da565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101ec57600080fd5b506101026106bc565b34801561020157600080fd5b506102356102103660046121ff565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610138565b34801561026057600080fd5b506065546001600160a01b0316610124565b34801561027e57600080fd5b5061010261028d366004612218565b6106d0565b34801561029e57600080fd5b506102b26102ad366004612163565b610a33565b604051610138959493929190612307565b3480156102cf57600080fd5b506102f36102de366004612163565b60c96020526000908152604090205460ff1681565b6040519015158152602001610138565b610102610311366004612358565b610b84565b34801561032257600080fd5b50610102610331366004612163565b6113f3565b61033e61146c565b6040518060400160405280600681526020016562726964676560d01b815250610368816000610577565b6001600160a01b0316336001600160a01b03161461039957604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fd91906123f3565b905061043281604001516040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b031681602001516001600160a01b031614610467576040516320258b8760e21b815260040160405180910390fd5b60004687350361049c576104816040880160208901612163565b90506104976001600160a01b03821686866114c5565b61050c565b6104a587611528565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104f357600080fd5b505af1158015610507573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061057160018055565b50505050565b6000610584468484611587565b90505b92915050565b600054610100900460ff16158080156105ad5750600054600160ff909116105b806105c75750303b1580156105c7575060005460ff166001145b61062f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610652576000805461ff0019166101001790555b61065b82611657565b80156106a1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006106b2848484611587565b90505b9392505050565b6106c4611670565b6106ce60006116ca565b565b6106d861146c565b60006106ea60a0850160808601612163565b6001600160a01b031603610711576040516372b41cdf60e01b815260040160405180910390fd5b46836040013514610735576040516348bc100560e01b815260040160405180910390fd5b60006107606040518060400160405280600681526020016562726964676560d01b8152506000610577565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b815260040161079091906124c9565b602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906125e7565b600081815260cc6020526040902080546001909101549192506001600160a01b0316908161081257604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b9061084890869060608c0135908b908b90600401612600565b602060405180830381865afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061262a565b6108a6576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b03909116178155905160019091015580156109ba576001600160a01b038216600090815260c9602052604090205460ff1615610996576001600160a01b0382166342e91bb361093160a08a0160808b01612163565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506109ba565b6109ba6109a960a0890160808a01612163565b6001600160a01b03841690836114c5565b6109ca60a0880160808901612163565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af68484604051610a199291906001600160a01b03929092168252602082015260400190565b60405180910390a350505050610a2e60018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a7390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f90612647565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505090806003018054610b0190612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90612647565b8015610b7a5780601f10610b4f57610100808354040283529160200191610b7a565b820191906000526020600020905b815481529060010190602001808311610b5d57829003601f168201915b5050505050905085565b610b8c61146c565b6001600160a01b0387161580610be15750610bcc886040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525060006106a5565b6001600160a01b0316876001600160a01b0316145b15610bff57604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610c2657604051637c6addb760e01b815260040160405180910390fd5b84600003610c465760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e9d57604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610d5390612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7f90612647565b8015610dcc5780601f10610da157610100808354040283529160200191610dcc565b820191906000526020600020905b815481529060010190602001808311610daf57829003601f168201915b50505050508152602001600382018054610de590612647565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1190612647565b8015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e9657604051633e45a03560e21b815260040160405180910390fd5b50856110fd565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190612690565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9291908101906126ad565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffd91908101906126ad565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906125e7565b90506110846001600160a01b03831633308c61171c565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee91906125e7565b6110f89190612723565b925050505b61118c604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015260408051808201909152600b81526a1d1bdad95b97dd985d5b1d60aa1b60208201526111c8908c9060006106a5565b6001600160a01b031660a08201526080810151604051630637d5c160e11b916111fa918691908e908790602401612744565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526101608201526101408101879052610120810186905261124c8634612723565b60e08201526001600160a01b03851660c0820152610180810184905260408051808201909152600681526562726964676560d01b60208201526000906112929082610577565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b81526004016112be91906127dc565b60206040518083038185885af11580156112dc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130191906125e7565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e886040516113d4939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a4505050506113e960018055565b5050505050505050565b6113fb611670565b6001600160a01b0381166114605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b611469816116ca565b50565b6002600154036114be5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610626565b6002600155565b6040516001600160a01b038316602482015260448101829052610a2e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611754565b8035600090815260cb6020908152604080832083929091839161154f918701908701612163565b6001600160a01b039081168252602082019290925260400160002054169050806105875761157c83611826565b6106b5565b60018055565b609754604051631083571360e31b81526000916001600160a01b03169063841ab898906115ba90879087906004016128cc565b602060405180830381865afa1580156115d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fb91906128e5565b9050816106b5576040516001600160a01b0382161515906116229086908690602001612902565b6040516020818303038152906040529061164f5760405162461bcd60e51b81526004016106269190612957565b509392505050565b61165f611aab565b611667611ada565b61146981611b09565b6065546001600160a01b031633146106ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610626565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105719085906323b872dd60e01b906084016114f1565b60006117a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b529092919063ffffffff16565b805190915015610a2e57808060200190518101906117c7919061262a565b610a2e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b600061189f81833561183e6040860160208701612163565b60405161186192916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161188790611fa1565b601f1982820381018352601f90910116604052611b61565b6097549091506001600160a01b0380831691636c0db62b91166118c86040860160208701612163565b85356118da606088016040890161296a565b6118e76060890189612987565b6118f460808b018b612987565b6118fe8c35611c65565b604051602001611910939291906129cd565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119419796959493929190612a16565b600060405180830381600087803b15801561195b57600080fd5b505af115801561196f573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119ac8282612b81565b50508135600090815260cb602090815260408083208493909290916119d691908701908701612163565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316826020016020810190611a379190612163565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a706060870187612987565b611a7d6080890189612987565b611a8d60608b0160408c0161296a565b604051611a9e959493929190612c08565b60405180910390a4919050565b600054610100900460ff16611ad25760405162461bcd60e51b815260040161062690612c45565b6106ce611cf7565b600054610100900460ff16611b015760405162461bcd60e51b815260040161062690612c45565b6106ce611d1e565b6001600160a01b038116611b3057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60606106b28484600085611d4e565b600083471015611bb35760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610626565b8151600003611c045760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610626565b8282516020840186f590506001600160a01b0381166106b55760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610626565b60606000611c7283611e2b565b60010190506000816001600160401b03811115611c9157611c91612041565b6040519080825280601f01601f191660200182016040528015611cbb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611cc557509392505050565b600054610100900460ff166115815760405162461bcd60e51b815260040161062690612c45565b600054610100900460ff16611d455760405162461bcd60e51b815260040161062690612c45565b6106ce336116ca565b606082471015611daf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b600080866001600160a01b03168587604051611dcb9190612c90565b60006040518083038185875af1925050503d8060008114611e08576040519150601f19603f3d011682016040523d82523d6000602084013e611e0d565b606091505b5091509150611e1e87838387611f03565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e6a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e96576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611eb457662386f26fc10000830492506010015b6305f5e1008310611ecc576305f5e100830492506008015b6127108310611ee057612710830492506004015b60648310611ef2576064830492506002015b600a83106105875760010192915050565b60608315611f72578251600003611f6b576001600160a01b0385163b611f6b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b5081611e23565b611e238383815115611f875781518083602001fd5b8060405162461bcd60e51b81526004016106269190612957565b61179b80612cad83390190565b6001600160a01b038116811461146957600080fd5b8035611fce81611fae565b919050565b60008060008060808587031215611fe957600080fd5b84356001600160401b03811115611fff57600080fd5b850160a0818803121561201157600080fd5b9350602085013561202181611fae565b9250604085013561203181611fae565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561207f5761207f612041565b604052919050565b60006001600160401b038211156120a0576120a0612041565b50601f01601f191660200190565b600082601f8301126120bf57600080fd5b81356120d26120cd82612087565b612057565b8181528460208386010111156120e757600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461146957600080fd5b6000806040838503121561212557600080fd5b82356001600160401b0381111561213b57600080fd5b612147858286016120ae565b925050602083013561215881612104565b809150509250929050565b60006020828403121561217557600080fd5b81356106b581611fae565b60008060006060848603121561219557600080fd5b8335925060208401356001600160401b038111156121b257600080fd5b6121be868287016120ae565b92505060408401356121cf81612104565b809150509250925092565b600080604083850312156121ed57600080fd5b82359150602083013561215881611fae565b60006020828403121561221157600080fd5b5035919050565b60008060006040848603121561222d57600080fd5b83356001600160401b038082111561224457600080fd5b908501906101a0828803121561225957600080fd5b9093506020850135908082111561226f57600080fd5b818601915086601f83011261228357600080fd5b81358181111561229257600080fd5b8760208285010111156122a457600080fd5b6020830194508093505050509250925092565b60005b838110156122d25781810151838201526020016122ba565b50506000910152565b600081518084526122f38160208601602086016122b7565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a06060820181905260009061233a908301856122db565b828103608084015261234c81856122db565b98975050505050505050565b600080600080600080600080610100898b03121561237557600080fd5b88359750602089013561238781611fae565b9650604089013561239781611fae565b9550606089013594506080890135935060a0890135925060c08901356123bc81611fae565b915060e08901356001600160401b038111156123d757600080fd5b6123e38b828c016120ae565b9150509295985092959890939650565b60006060828403121561240557600080fd5b604051606081018181106001600160401b038211171561242757612427612041565b60405282518152602083015161243c81611fae565b60208201526040928301519281019290925250919050565b6000808335601e1984360301811261246b57600080fd5b83016020810192503590506001600160401b0381111561248a57600080fd5b80360382131561249957600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081528135602082015260006124e260208401611fc3565b6001600160a01b038116604084015250604083013560608301526060830135608083015261251260808401611fc3565b6001600160a01b03811660a08401525061252e60a08401611fc3565b6001600160a01b03811660c08401525061254a60c08401611fc3565b6001600160a01b03811660e08401525061010060e08401358184015261012081850135818501526101409150808501358285015250610160818501358185015261259681860186612454565b925090506101a061018081818701526125b46101c0870185856124a0565b93506125c281880188612454565b878603601f190184890152935090506125dc8484836124a0565b979650505050505050565b6000602082840312156125f957600080fd5b5051919050565b8481528360208201526060604082015260006126206060830184866124a0565b9695505050505050565b60006020828403121561263c57600080fd5b81516106b581612104565b600181811c9082168061265b57607f821691505b60208210810361267b57634e487b7160e01b600052602260045260246000fd5b50919050565b60ff8116811461146957600080fd5b6000602082840312156126a257600080fd5b81516106b581612681565b6000602082840312156126bf57600080fd5b81516001600160401b038111156126d557600080fd5b8201601f810184136126e657600080fd5b80516126f46120cd82612087565b81815285602083850101111561270957600080fd5b61271a8260208301602086016122b7565b95945050505050565b8181038181111561058757634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261278e6101208501836122db565b91506080880151607f19858403016101008601526127ac83826122db565b9188166020860152506001600160a01b038616604085015291506127cd9050565b82606083015295945050505050565b60208152815160208201526000602083015161280360408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161283260a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526128b06101c08601846122db565b90860151858203601f19018387015290925061262083826122db565b8281526040602082015260006106b260408301846122db565b6000602082840312156128f757600080fd5b81516106b581611fae565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e0820152600061010080606084015261271a818401856122db565b60208152600061058460208301846122db565b60006020828403121561297c57600080fd5b81356106b581612681565b6000808335601e1984360301811261299e57600080fd5b8301803591506001600160401b038211156129b857600080fd5b60200191503681900382131561249957600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b815283516129fb81600c8401602088016122b7565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612a5390830185876124a0565b82810360a0840152612a6581856122db565b9a9950505050505050505050565b601f821115610a2e57600081815260208120601f850160051c81016020861015612a9a5750805b601f850160051c820191505b81811015612ab957828155600101612aa6565b505050505050565b6001600160401b03831115612ad857612ad8612041565b612aec83612ae68354612647565b83612a73565b6000601f841160018114612b205760008515612b085750838201355b600019600387901b1c1916600186901b178355612b7a565b600083815260209020601f19861690835b82811015612b515786850135825560209485019460019092019101612b31565b5086821015612b6e5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612b9781611fae565b81546040850135612ba781612681565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612bdd6060830183612987565b612beb818360028601612ac1565b5050612bfa6080830183612987565b610571818360038601612ac1565b606081526000612c1c6060830187896124a0565b8281036020840152612c2f8186886124a0565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612ca28184602087016122b7565b919091019291505056fe608060405234801561001057600080fd5b5061177b806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806367e828bf116100c35780638da5cb5b1161007c5780638da5cb5b146102ed57806395d89b41146102fe578063a457c2d714610306578063a9059cbb14610319578063dd62ed3e1461032c578063f2fde38b1461036557600080fd5b806367e828bf1461024d5780636c0db62b1461028357806370a0823114610296578063715018a6146102bf57806377be18a8146102c75780637cf8ed0d146102da57600080fd5b806323b872dd1161011557806323b872dd146101e3578063313ce567146101f6578063395093511461020b5780633ab76e9f1461021e57806342e91bb31461022f57806349d126051461024457600080fd5b806306fdde0314610152578063095ea7b3146101705780630ca4dffd1461019357806318160ddd146101be5780631be2bfa7146101d0575b600080fd5b61015a610378565b60405161016791906111f0565b60405180910390f35b61018361017e366004611218565b61040a565b6040519015158152602001610167565b6101a66101a13660046112fc565b610424565b6040516001600160a01b039091168152602001610167565b60cb545b604051908152602001610167565b6101a66101de36600461134a565b610438565b6101836101f13660046113a1565b61044d565b60ce5460405160ff9091168152602001610167565b610183610219366004611218565b610483565b6097546001600160a01b03166101a6565b61024261023d366004611218565b6104c2565b005b6101c260fc5481565b61026460fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b6102426102913660046113e2565b610574565b6101c26102a436600461148c565b6001600160a01b0316600090815260c9602052604090205490565b61024261070c565b6102426102d5366004611218565b610720565b60fb546101a6906001600160a01b031681565b6065546001600160a01b03166101a6565b61015a6107c5565b610183610314366004611218565b6107d4565b610183610327366004611218565b610871565b6101c261033a3660046114a9565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61024261037336600461148c565b6108a6565b606060cc8054610387906114e2565b80601f01602080910402602001604051908101604052809291908181526020018280546103b3906114e2565b80156104005780601f106103d557610100808354040283529160200191610400565b820191906000526020600020905b8154815290600101906020018083116103e357829003601f168201915b5050505050905090565b60003361041881858561091f565b60019150505b92915050565b6000610431468484610a43565b9392505050565b6000610445848484610a43565b949350505050565b6000306001600160a01b03841603610478576040516319a6f37760e21b815260040160405180910390fd5b610445848484610b13565b33600081815260ca602090815260408083206001600160a01b038716845290915281205490919061041890829086906104bd908790611532565b61091f565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b8152506104f1816000610424565b6001600160a01b0316336001600160a01b03161461052257604051630d85cccf60e11b815260040160405180910390fd5b61052c8383610b2c565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161056791815260200190565b60405180910390a2505050565b600054610100900460ff16158080156105945750600054600160ff909116105b806105ae5750303b1580156105ae575060005460ff166001145b6106165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610639576000805461ff0019166101001790555b6001600160a01b038616158061064d575084155b8061065757504685145b8061066157508251155b8061066b57508151155b15610689576040516301e25ab360e71b815260040160405180910390fd5b61069287610bd0565b61069d828486610be9565b60fb80546001600160a01b0319166001600160a01b03881617905560fc8590558015610703576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610714610c20565b61071e6000610c7a565b565b6040518060400160405280600b81526020016a1d1bdad95b97dd985d5b1d60aa1b81525061074f816000610424565b6001600160a01b0316336001600160a01b03161461078057604051630d85cccf60e11b815260040160405180910390fd5b61078a8383610ccc565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161056791815260200190565b606060cd8054610387906114e2565b33600081815260ca602090815260408083206001600160a01b0387168452909152812054909190838110156108595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b610866828686840361091f565b506001949350505050565b6000306001600160a01b0384160361089c576040516319a6f37760e21b815260040160405180910390fd5b6104318383610ddf565b6108ae610c20565b6001600160a01b0381166109135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61091c81610c7a565b50565b6001600160a01b0383166109815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b609754604051631083571360e31b81526000916001600160a01b03169063841ab89890610a769087908790600401611545565b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab7919061155e565b905081610431576040516001600160a01b038216151590610ade908690869060200161157b565b60405160208183030381529060405290610b0b5760405162461bcd60e51b815260040161060d91906111f0565b509392505050565b600033610b21858285610ded565b610866858585610e7f565b6001600160a01b038216610b825760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060d565b8060cb6000828254610b949190611532565b90915550506001600160a01b038216600090815260c9602052604081208054839290610bc1908490611532565b90915550610bcc9050565b5050565b610bd861104d565b610be061107c565b61091c816110ab565b600054610100900460ff16610c105760405162461bcd60e51b815260040161060d906115d9565b610c1b8383836110f4565b505050565b6065546001600160a01b0316331461071e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d2c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b6001600160a01b038216600090815260c9602052604090205481811015610da05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038316600090815260c960205260408120838303905560cb8054849290610dcf908490611624565b90915550610c1b90508360008483565b600033610418818585610e7f565b6001600160a01b03838116600090815260ca60209081526040808320938616835292905220546000198114610e795781811015610e6c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610e79848484840361091f565b50505050565b6001600160a01b038316610ee35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610f455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b6001600160a01b038316600090815260c9602052604090205481811015610fbd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b03808516600090815260c96020526040808220858503905591851681529081208054849290610ff4908490611532565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161104091815260200190565b60405180910390a3610e79565b600054610100900460ff166110745760405162461bcd60e51b815260040161060d906115d9565b61071e61114d565b600054610100900460ff166110a35760405162461bcd60e51b815260040161060d906115d9565b61071e61117a565b6001600160a01b0381166110d257604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661111b5760405162461bcd60e51b815260040161060d906115d9565b60cc6111278482611685565b5060cd6111348382611685565b5060ce805460ff191660ff929092169190911790555050565b600054610100900460ff166111745760405162461bcd60e51b815260040161060d906115d9565b60018055565b600054610100900460ff166111a15760405162461bcd60e51b815260040161060d906115d9565b61071e33610c7a565b6000815180845260005b818110156111d0576020818501810151868301820152016111b4565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061043160208301846111aa565b6001600160a01b038116811461091c57600080fd5b6000806040838503121561122b57600080fd5b823561123681611203565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261126b57600080fd5b813567ffffffffffffffff8082111561128657611286611244565b604051601f8301601f19908116603f011681019082821181831017156112ae576112ae611244565b816040528381528660208588010111156112c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b803580151581146112f757600080fd5b919050565b6000806040838503121561130f57600080fd5b823567ffffffffffffffff81111561132657600080fd5b6113328582860161125a565b925050611341602084016112e7565b90509250929050565b60008060006060848603121561135f57600080fd5b83359250602084013567ffffffffffffffff81111561137d57600080fd5b6113898682870161125a565b925050611398604085016112e7565b90509250925092565b6000806000606084860312156113b657600080fd5b83356113c181611203565b925060208401356113d181611203565b929592945050506040919091013590565b60008060008060008060c087890312156113fb57600080fd5b863561140681611203565b9550602087013561141681611203565b945060408701359350606087013560ff8116811461143357600080fd5b9250608087013567ffffffffffffffff8082111561145057600080fd5b61145c8a838b0161125a565b935060a089013591508082111561147257600080fd5b5061147f89828a0161125a565b9150509295509295509295565b60006020828403121561149e57600080fd5b813561043181611203565b600080604083850312156114bc57600080fd5b82356114c781611203565b915060208301356114d781611203565b809150509250929050565b600181811c908216806114f657607f821691505b60208210810361151657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561041e5761041e61151c565b82815260406020820152600061044560408301846111aa565b60006020828403121561157057600080fd5b815161043181611203565b60808152600c60808201526b20a91d3d32b937a0b232391d60a11b60a082015282602082015260c06040820152600160c0820152601760f91b60e082015260006101008060608401526115d0818401856111aa565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8181038181111561041e5761041e61151c565b601f821115610c1b57600081815260208120601f850160051c8101602086101561165e5750805b601f850160051c820191505b8181101561167d5782815560010161166a565b505050505050565b815167ffffffffffffffff81111561169f5761169f611244565b6116b3816116ad84546114e2565b84611637565b602080601f8311600181146116e857600084156116d05750858301515b600019600386901b1c1916600185901b17855561167d565b600085815260208120601f198616915b82811015611717578886015182559484019460019091019084016116f8565b50858210156117355787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220ca76596b3503f05be2b029bd48d6388ebec4ff9261948cac40d64bcced6ea6ae64736f6c63430008120033a2646970667358221220fd0fe1c995d0ba66857bfae11cff691723308c222d75d146fb0695825748cae564736f6c63430008120033", "balance": "0x0" }, "0x0000777700000000000000000000000000000003": { diff --git a/eth/state_accessor.go b/eth/state_accessor.go index 59b471425542..68d40ac97a99 100644 --- a/eth/state_accessor.go +++ b/eth/state_accessor.go @@ -212,7 +212,7 @@ func (eth *Ethereum) stateAtTransaction(ctx context.Context, block *types.Block, signer := types.MakeSigner(eth.blockchain.Config(), block.Number()) for idx, tx := range block.Transactions() { // Assemble the transaction call message and return if the requested offset - msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) + msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), idx == 0) txContext := core.NewEVMTxContext(msg) context := core.NewEVMBlockContext(block.Header(), eth.blockchain, nil) if idx == txIndex { diff --git a/eth/tracers/api.go b/eth/tracers/api.go index 58ad0c3c9ad7..33acfd4509fb 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -293,7 +293,7 @@ func (api *API) traceChain(start, end *types.Block, config *TraceConfig, closed ) // Trace all the transactions contained within for i, tx := range task.block.Transactions() { - msg, _ := core.TransactionToMessage(tx, signer, task.block.BaseFee()) + msg, _ := core.TransactionToMessage(tx, signer, task.block.BaseFee(), i == 0) txctx := &Context{ BlockHash: task.block.Hash(), BlockNumber: task.block.Number(), @@ -554,7 +554,7 @@ func (api *API) IntermediateRoots(ctx context.Context, hash common.Hash, config return nil, err } var ( - msg, _ = core.TransactionToMessage(tx, signer, block.BaseFee()) + msg, _ = core.TransactionToMessage(tx, signer, block.BaseFee(), i == 0) txContext = core.NewEVMTxContext(msg) vmenv = vm.NewEVM(vmctx, txContext, statedb, chainConfig, vm.Config{}) ) @@ -628,7 +628,7 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac ) for i, tx := range txs { // Generate the next state snapshot fast without tracing - msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) + msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), i == 0) txctx := &Context{ BlockHash: blockHash, BlockNumber: block.Number(), @@ -671,7 +671,7 @@ func (api *API) traceBlockParallel(ctx context.Context, block *types.Block, stat defer pend.Done() // Fetch and execute the next transaction trace tasks for task := range jobs { - msg, _ := core.TransactionToMessage(txs[task.index], signer, block.BaseFee()) + msg, _ := core.TransactionToMessage(txs[task.index], signer, block.BaseFee(), task.index == 0) txctx := &Context{ BlockHash: blockHash, BlockNumber: block.Number(), @@ -702,7 +702,7 @@ txloop: } // Generate the next state snapshot fast without tracing - msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) + msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), i == 0) statedb.SetTxContext(tx.Hash(), i) vmenv := vm.NewEVM(blockCtx, core.NewEVMTxContext(msg), statedb, api.backend.ChainConfig(), vm.Config{}) if _, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(msg.GasLimit)); err != nil { @@ -782,7 +782,7 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block for i, tx := range block.Transactions() { // Prepare the transaction for un-traced execution var ( - msg, _ = core.TransactionToMessage(tx, signer, block.BaseFee()) + msg, _ = core.TransactionToMessage(tx, signer, block.BaseFee(), i == 0) txContext = core.NewEVMTxContext(msg) vmConf vm.Config dump *os.File diff --git a/eth/tracers/api_test.go b/eth/tracers/api_test.go index b1eaf60b16c4..af768ea809ca 100644 --- a/eth/tracers/api_test.go +++ b/eth/tracers/api_test.go @@ -171,7 +171,7 @@ func (b *testBackend) StateAtTransaction(ctx context.Context, block *types.Block // Recompute transactions up to the target index. signer := types.MakeSigner(b.chainConfig, block.Number()) for idx, tx := range block.Transactions() { - msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) + msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), idx == 0) txContext := core.NewEVMTxContext(msg) context := core.NewEVMBlockContext(block.Header(), b.chain, nil) if idx == txIndex { diff --git a/eth/tracers/internal/tracetest/calltrace_test.go b/eth/tracers/internal/tracetest/calltrace_test.go index 62182e3a82b4..6f444b943cfa 100644 --- a/eth/tracers/internal/tracetest/calltrace_test.go +++ b/eth/tracers/internal/tracetest/calltrace_test.go @@ -145,7 +145,7 @@ func testCallTracer(tracerName string, dirPath string, t *testing.T) { t.Fatalf("failed to create call tracer: %v", err) } evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) - msg, err := core.TransactionToMessage(tx, signer, nil) + msg, err := core.TransactionToMessage(tx, signer, nil, false) if err != nil { t.Fatalf("failed to prepare transaction for tracing: %v", err) } @@ -220,7 +220,7 @@ func benchTracer(tracerName string, test *callTracerTest, b *testing.B) { b.Fatalf("failed to parse testcase input: %v", err) } signer := types.MakeSigner(test.Genesis.Config, new(big.Int).SetUint64(uint64(test.Context.Number))) - msg, err := core.TransactionToMessage(tx, signer, nil) + msg, err := core.TransactionToMessage(tx, signer, nil, false) if err != nil { b.Fatalf("failed to prepare transaction for tracing: %v", err) } @@ -314,7 +314,7 @@ func TestZeroValueToNotExitCall(t *testing.T) { t.Fatalf("failed to create call tracer: %v", err) } evm := vm.NewEVM(context, txContext, statedb, params.MainnetChainConfig, vm.Config{Debug: true, Tracer: tracer}) - msg, err := core.TransactionToMessage(tx, signer, nil) + msg, err := core.TransactionToMessage(tx, signer, nil, false) if err != nil { t.Fatalf("failed to prepare transaction for tracing: %v", err) } diff --git a/eth/tracers/internal/tracetest/flat_calltrace_test.go b/eth/tracers/internal/tracetest/flat_calltrace_test.go index 8cd5a42bc0c0..8da1d3dc0162 100644 --- a/eth/tracers/internal/tracetest/flat_calltrace_test.go +++ b/eth/tracers/internal/tracetest/flat_calltrace_test.go @@ -109,7 +109,7 @@ func flatCallTracerTestRunner(tracerName string, filename string, dirPath string } evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) - msg, err := core.TransactionToMessage(tx, signer, nil) + msg, err := core.TransactionToMessage(tx, signer, nil, false) if err != nil { return fmt.Errorf("failed to prepare transaction for tracing: %v", err) } diff --git a/eth/tracers/internal/tracetest/prestate_test.go b/eth/tracers/internal/tracetest/prestate_test.go index f578e2f0f5fd..86d62642364a 100644 --- a/eth/tracers/internal/tracetest/prestate_test.go +++ b/eth/tracers/internal/tracetest/prestate_test.go @@ -115,7 +115,7 @@ func testPrestateDiffTracer(tracerName string, dirPath string, t *testing.T) { t.Fatalf("failed to create call tracer: %v", err) } evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) - msg, err := core.TransactionToMessage(tx, signer, nil) + msg, err := core.TransactionToMessage(tx, signer, nil, false) if err != nil { t.Fatalf("failed to prepare transaction for tracing: %v", err) } diff --git a/eth/tracers/tracers_test.go b/eth/tracers/tracers_test.go index 7c5ec65650ee..19bc44a59fe1 100644 --- a/eth/tracers/tracers_test.go +++ b/eth/tracers/tracers_test.go @@ -88,7 +88,7 @@ func BenchmarkTransactionTrace(b *testing.B) { //EnableReturnData: false, }) evm := vm.NewEVM(context, txContext, statedb, params.AllEthashProtocolChanges, vm.Config{Debug: true, Tracer: tracer}) - msg, err := core.TransactionToMessage(tx, signer, nil) + msg, err := core.TransactionToMessage(tx, signer, nil, false) if err != nil { b.Fatalf("failed to prepare transaction for tracing: %v", err) } diff --git a/les/state_accessor.go b/les/state_accessor.go index 030d6b5a5004..68c52486dda7 100644 --- a/les/state_accessor.go +++ b/les/state_accessor.go @@ -60,7 +60,7 @@ func (leth *LightEthereum) stateAtTransaction(ctx context.Context, block *types. signer := types.MakeSigner(leth.blockchain.Config(), block.Number()) for idx, tx := range block.Transactions() { // Assemble the transaction call message and return if the requested offset - msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) + msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), idx == 0) txContext := core.NewEVMTxContext(msg) context := core.NewEVMBlockContext(block.Header(), leth.blockchain, nil) statedb.SetTxContext(tx.Hash(), idx)