diff --git a/kroma-bindings/artifacts.json b/kroma-bindings/artifacts.json index b1363668a2..9a9dbe2c57 100644 --- a/kroma-bindings/artifacts.json +++ b/kroma-bindings/artifacts.json @@ -37,5 +37,6 @@ "WETH9", "ZKMerkleTrie", "ZKTrieHasher", - "ZKVerifier" + "ZKVerifier", + "ZKProofVerifier" ] diff --git a/kroma-bindings/bindings/colosseum.go b/kroma-bindings/bindings/colosseum.go index d4622984c9..33fd07e31e 100644 --- a/kroma-bindings/bindings/colosseum.go +++ b/kroma-bindings/bindings/colosseum.go @@ -31,8 +31,8 @@ var ( // ColosseumMetaData contains all meta data concerning the Colosseum contract. var ColosseumMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_l2Oracle\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"},{\"name\":\"_zkVerifier\",\"type\":\"address\",\"internalType\":\"contractZKVerifier\"},{\"name\":\"_submissionInterval\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_creationPeriodSeconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_bisectionTimeout\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_provingTimeout\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_dummyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_maxTxs\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_segmentsLengths\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"_securityCouncil\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zkMerkleTrie\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BISECTION_TIMEOUT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"CREATION_PERIOD_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DUMMY_HASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_ORACLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_ORACLE_SUBMISSION_INTERVAL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_TXS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROVING_TIMEOUT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SECURITY_COUNCIL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ZK_MERKLE_TRIE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ZK_VERIFIER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractZKVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bisect\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pos\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_segments\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cancelChallenge\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengerTimeout\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challenges\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"turn\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"timeoutAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"asserter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"challenger\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"segSize\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"segStart\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createChallenge\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_l1BlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_segments\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deletedOutputs\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"l2BlockNumber\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"dismissChallenge\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_asserter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_publicInputHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceDeleteOutput\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getSegments\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStatus\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumColosseum.ChallengeStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_segmentsLengths\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isInCreationPeriod\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proveFault\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_pos\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTypes.PublicInputProof\",\"components\":[{\"name\":\"srcOutputRootProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.OutputRootProof\",\"components\":[{\"name\":\"version\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"latestBlockhash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dstOutputRootProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.OutputRootProof\",\"components\":[{\"name\":\"version\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"latestBlockhash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"publicInput\",\"type\":\"tuple\",\"internalType\":\"structTypes.PublicInput\",\"components\":[{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"transactionsRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"withdrawalsRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"txHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"blobGasUsed\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"excessBlobGas\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"parentBeaconRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"rlps\",\"type\":\"tuple\",\"internalType\":\"structTypes.BlockHeaderRLP\",\"components\":[{\"name\":\"uncleHash\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"coinbase\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"receiptsRoot\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"logsBloom\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"difficulty\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasUsed\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"extraData\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"mixHash\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nonce\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"l2ToL1MessagePasserBalance\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"l2ToL1MessagePasserCodeHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"merkleProof\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}]},{\"name\":\"_zkproof\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"_pair\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"segmentsLengths\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifiedPublicInputs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Bisected\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"turn\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChallengeCanceled\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChallengeCreated\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"asserter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChallengeDismissed\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChallengerTimedOut\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OutputForceDeleted\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"asseter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Proven\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReadyToProve\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BlockHashMismatched\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BlockHashMismatchedBtwSrcAndDst\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotCancelChallenge\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CreationPeriodPassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FirstSegmentMismatched\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ImproperChallengeStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ImproperChallengeStatusToCancel\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ImproperValidatorStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressGiven\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInclusionProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOutputGiven\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPublicInput\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSegmentsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTurn\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidZKProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1Reorged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LastSegmentMatched\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedGenesisOutput\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyChallengerCanCancel\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutputAlreadyDeleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutputAlreadyFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutputNotDeleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StateRootMismatched\",\"inputs\":[]}]", - Bin: "0x6101c06040523480156200001257600080fd5b50604051620064943803806200649483398101604081905262000035916200038a565b6001600160a01b03808c166080528a811660a05260c089905260e08890526101008790526101208a90526101408690526101608590528281166101805281166101a052620000838362000094565b5050505050505050505050620004e3565b600054610100900460ff1615808015620000b55750600054600160ff909116105b80620000e55750620000d2306200029660201b62002dc81760201c565b158015620000e5575060005460ff166001145b6200014d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff19166001179055801562000171576000805461ff0019166101001790555b6002825162000181919062000458565b15620001a057604051630fbb795f60e41b815260040160405180910390fd5b600160005b83518110156200022557838181518110620001c457620001c46200047b565b602002602001015160016000838152602001908152602001600020819055506001848281518110620001fa57620001fa6200047b565b60200260200101516200020e9190620004a7565b6200021a9083620004c1565b9150600101620001a5565b506101205181146200024a57604051630fbb795f60e41b815260040160405180910390fd5b50801562000292576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b6001600160a01b0381168114620002bb57600080fd5b50565b8051620002cb81620002a5565b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002f857600080fd5b815160206001600160401b0380831115620003175762000317620002d0565b8260051b604051601f19603f830116810181811084821117156200033f576200033f620002d0565b6040529384528581018301938381019250878511156200035e57600080fd5b83870191505b848210156200037f5781518352918301919083019062000364565b979650505050505050565b60008060008060008060008060008060006101608c8e031215620003ad57600080fd5b8b51620003ba81620002a5565b60208d0151909b50620003cd81620002a5565b809a505060408c0151985060608c0151975060808c0151965060a08c0151955060c08c0151945060e08c015193506101008c015160018060401b038111156200041557600080fd5b620004238e828f01620002e6565b935050620004356101208d01620002be565b9150620004466101408d01620002be565b90509295989b509295989b9093969950565b6000826200047657634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015620004bc57620004bc62000491565b500390565b6000816000190483118215151615620004de57620004de62000491565b500290565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc9620006cb600039600081816103d50152613e470152600081816102f6015281816115ba0152818161202a0152818161225e015261351c01526000818161036501528181613f290152613f970152600081816105dc0152613f6301526000818161058e0152818161107f01528181612ca60152612cdf0152600081816105b501528181612e3d015261416a01526000818161031d01526141d10152600081816104da015281816106cc01526126e101526000818161052101526113250152600081816101b7015281816106ed015281816107e50152818161090c01528181610af301528181610b5101528181610c4601528181610d4501528181611442015281816116d9015281816117bf015281816118d601528181611acb01528181611f3b01528181612052015281816120b0015281816121a5015281816123850152818161247a01528181612669015281816128310152818161297801528181612a6d01528181612b6801528181612f8d015281816130820152818161311301528181613254015281816132ce0152818161336001528181613441015281816135a40152818161368501528181613873015281816139680152613a630152615dc96000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c806380ab1313116100ee578063b3e7766d11610097578063d5145ebc11610071578063d5145ebc146105d7578063e39a219c146105fe578063e9371a2c14610611578063fc9d84df1461063157600080fd5b8063b3e7766d14610569578063cfb4474d14610589578063d2ee3075146105b057600080fd5b80639ded3952116100c85780639ded39521461051c578063a41483e314610543578063a6ade11f1461055657600080fd5b806380ab1313146104c25780638f3a6c88146104d55780638f86c803146104fc57600080fd5b8063461569b81161015b5780635865b607116101355780635865b607146103d05780635a6b011f146103f757806362fc00db1461049c5780636fe0e559146104af57600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610219610204366004614d98565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c610237366004614dc6565b610644565b005b6102aa61024c366004614dc6565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ed565b61021961035b366004614d98565b6106c7565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6103c36040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ed9190614e4e565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61045a610405366004614d98565b6004602052600090815260409020805460018201546002909201546001600160a01b0390911691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041684565b604080516001600160a01b03909516855260208501939093526fffffffffffffffffffffffffffffffff918216928401929092521660608201526080016101ed565b61023c6104aa366004614e61565b6107a2565b61023c6104bd366004614f85565b610e96565b61023c6104d0366004615067565b61113d565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f61050a366004614d98565b60016020526000908152604090205481565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c610551366004614d98565b611b3c565b61023c610564366004615118565b611bad565b61057c610577366004614dc6565b611e80565b6040516101ed9190615182565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61023c61060c366004614d98565b611ef8565b61062461061f366004614dc6565b612317565b6040516101ed91906151f5565b61023c61063f366004615236565b612349565b600360008381526002602090815260408083206001600160a01b0386168452909152902061067190612dd7565b6005811115610682576106826151c6565b146106b9576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106c38282612eb5565b5050565b6000427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae557856040518263ffffffff1660e01b815260040161073991815260200190565b608060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a919061529a565b604001516fffffffffffffffffffffffffffffffff1661079a9190615341565b101592915050565b6107aa613511565b6107b385613575565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610858919061529a565b6020015114610893576040517f8796efdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526004602052604090206001015482146108dd576040517f90e78fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097f9190615359565b6001600160a01b0316846001600160a01b03161415806109b957506000858152600460205260409020546001600160a01b03848116911614155b156109f0576040517f8036a47f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526003602052604090205460ff16610a38576040517f7458ca2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905587835260049182905280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002019290925590517fe6646723000000000000000000000000000000000000000000000000000000008152908101869052602481018390526001600160a01b0384811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b158015610b3757600080fd5b505af1158015610b4b573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd19190615359565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b8152600401610bfe91815260200190565b602060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f9190615376565b15610e4b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc69190615359565b6040517fab04b8aa000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038581166024830152919091169063ab04b8aa90604401600060405180830381600087803b158015610d2b57600080fd5b505af1158015610d3f573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190615359565b6040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0385811660248301528681166044830152919091169063be995dc290606401600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b505050505b836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610e8791815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610eb65750600054600160ff909116105b80610ed05750303b158015610ed0575060005460ff166001145b610f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610fbe57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60028251610fcc91906153c7565b15611003576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160005b835181101561107c57838181518110611023576110236153db565b602002602001015160016000838152602001908152602001600020819055506001848281518110611056576110566153db565b6020026020010151611068919061540a565b6110729083615421565b9150600101611008565b507f000000000000000000000000000000000000000000000000000000000000000081146110d6576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5080156106c357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b61114687613575565b600087815260026020908152604080832033845290915281209061116982612dd7565b6001830154909150611186908a906001600160a01b031683613651565b15611192575050611b33565b60058160058111156111a6576111a66151c6565b141580156111c6575060048160058111156111c3576111c36151c6565b14155b156111fd576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112388883611219611214368c90038c018c61545e565b613b70565b61122e611214368d90038d0160a08e0161545e565b8b60a08101613c12565b61126060a0880161124d6101408a018a6154ce565b61125b6101608b018b61550c565b613d24565b61128c6112716101c0890189615540565b6101808a01356101a08b013560e08c013560c08d0135613def565b60006112a960208901356112a46101408b018b6154ce565b613f23565b60008181526003602052604090205490915060ff16156112f5576040517f7458ca2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634292dc3e90611362908a908a908a908a9088906004016155f7565b602060405180830381865afa15801561137f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a39190615376565b6113d9576040517f076490f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405142815233908b907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018b90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b5919061529a565b84546020820151604051602481018f905233604482015269010000000000000000009092046001600160a01b03166064830152608482015260a481018490529091506000907f62fc00db000000000000000000000000000000000000000000000000000000009060c40160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263080b91ee926115f19291908690600401615631565b600060405180830381600087803b15801561160b57600080fd5b505af115801561161f573d6000803e3d6000fd5b50505060008d815260046020818152604092839020865181546001600160a01b039182167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178255828801516001830155848801516060909801516fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000000298169790971760029091015582517fb98debbf00000000000000000000000000000000000000000000000000000000815292517f00000000000000000000000000000000000000000000000000000000000000009096169563b98debbf9550838301945090929091908290030181865afa158015611726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174a9190615359565b6001600160a01b031663ad36d6cc8b6040518263ffffffff1660e01b815260040161177791815260200190565b602060405180830381865afa158015611794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b89190615376565b156118d4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561181b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183f9190615359565b83546040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018d90523360248201526001600160a01b0369010000000000000000009092048216604482015291169063be995dc290606401600060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506119d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119569190615359565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018c90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b1580156119b957600080fd5b505af11580156119cd573d6000803e3d6000fd5b505050505b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558d8452600280845282852033865290935290832080547fffffff000000000000000000000000000000000000000000000000000000000016815590810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190611a8090830182614d1a565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018c905260248201523360448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e664672390606401600060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b505050505050505b50505050505050565b600081815260026020908152604080832033845290915290206001810154611b779083906001600160a01b0316611b7284612dd7565b613651565b6106c3576040517f4e9d86f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bb685613575565b60008581526002602090815260408083206001600160a01b0388168452909152812090611be282612dd7565b6001830154909150611bff9088906001600160a01b031683613651565b15611c0b575050611e79565b60006001826005811115611c2157611c216151c6565b03611c3a575060018201546001600160a01b0316611c6d565b6002826005811115611c4e57611c4e6151c6565b03611c6d57508154690100000000000000000090046001600160a01b03165b336001600160a01b03821614611caf576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254600090611cc29060ff16600161566b565b9050611d4d81856002018981548110611cdd57611cdd6153db565b9060005260206000200154866002018a6001611cf99190615341565b81548110611d0957611d096153db565b9060005260206000200154898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613fde92505050565b6000611d58856140e9565b9050611db385888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d9e92508691508d9050615421565b8860040154611dad9190615341565b8461412e565b84547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8316178555611de785614158565b6040805160ff841681524260208201526001600160a01b038b16918c917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611e38856141f6565b611e73576040516001600160a01b038a16908b907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b50505050505b5050505050565b60008281526002602081815260408084206001600160a01b0386168552825292839020909101805483518184028101840190945280845260609392830182828015611eea57602002820191906000526020600020905b815481526020019060010190808311611ed6575b505050505090505b92915050565b611f00613511565b611f0981613575565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fae919061529a565b6020810151909150611fec576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101839052600060248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b15801561209657600080fd5b505af11580156120aa573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121309190615359565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161215d91815260200190565b602060405180830381865afa15801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190615376565b156122cb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122259190615359565b81516040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152918216604482015291169063be995dc290606401600060405180830381600087803b1580156122b257600080fd5b505af11580156122c6573d6000803e3d6000fd5b505050505b80600001516001600160a01b0316827fa620f04b65b1d538481626bf41dc5ee321b5c48e0cc1a7daae213cf7c254b54e4260405161230b91815260200190565b60405180910390a35050565b60008281526002602090815260408083206001600160a01b0385168452909152812061234290612dd7565b9392505050565b84600003612383576040517f2604872b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124059190615359565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b815260040161243291815260200190565b602060405180830381865afa15801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190615376565b156125b3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa9190615359565b6040517f9f8a13d70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690639f8a13d790602401602060405180830381865afa158015612559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257d9190615376565b6125b3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260026020908152604080832033845290915290208054600160ff909116106126375760036125e582612dd7565b60058111156125f6576125f66151c6565b1461262d576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126378633612eb5565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156126b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126dc919061529a565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff166127219190615341565b1015612759576040517fa0388b4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020810151612794576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516001600160a01b031633036127d7576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85158015906127e65750844015155b156128255785854014612825576040517f72f1f56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae55761286160018b61540a565b6040518263ffffffff1660e01b815260040161287f91815260200190565b608060405180830381865afa15801561289c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c0919061529a565b602081015190915061292e576129296001868660008181106128e4576128e46153db565b905060200201358460200151888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613fde92505050565b612976565b612976600182602001518460200151888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613fde92505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f89190615359565b6001600160a01b031663ad36d6cc896040518263ffffffff1660e01b8152600401612a2591815260200190565b602060405180830381865afa158015612a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a669190615376565b15612b66577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aed9190615359565b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690638c1516c790602401600060405180830381600087803b158015612b4957600080fd5b505af1158015612b5d573d6000803e3d6000fd5b50505050612c64565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be89190615359565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018a90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b158015612c4b57600080fd5b505af1158015612c5f573d6000803e3d6000fd5b505050505b612d038386868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050506060860151612cdd91507f0000000000000000000000000000000000000000000000000000000000000000906fffffffffffffffffffffffffffffffff1661540a565b7f000000000000000000000000000000000000000000000000000000000000000061412e565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055612d7b83614158565b815160405142815233916001600160a01b0316908a907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a45050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612df157506000919050565b8154600090612e059060029060ff16615690565b835460ff91909116159150610100900467ffffffffffffffff16421115612e8a578015612e355750600392915050565b8254612e71907f000000000000000000000000000000000000000000000000000000000000000090610100900467ffffffffffffffff16615341565b421115612e815750600392915050565b50600492915050565b612e93836141f6565b612ea05750600592915050565b80612eac576002612342565b60019392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612f3590830182614d1a565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612f8391815260200190565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300d9190615359565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161303a91815260200190565b602060405180830381865afa158015613057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307b9190615376565b15613225577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131029190615359565b6001600160a01b031663be995dc2837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ea09a8866040518263ffffffff1660e01b815260040161315f91815260200190565b602060405180830381865afa15801561317c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a09190615359565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b039081166024830152841660448201526064015b600060405180830381600087803b15801561320957600080fd5b505af115801561321d573d6000803e3d6000fd5b505050505050565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa1580156132a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c79190615376565b1561343f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561332a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334e9190615359565b6001600160a01b03166336b8346983837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ea09a8876040518263ffffffff1660e01b81526004016133ac91815260200190565b602060405180830381865afa1580156133c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ed9190615359565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526001600160a01b0391821660248401521660448201526064016131ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561349d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c19190615359565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d906044016131ef565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614613573576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190615376565b1561364e576040517f5c9d9a2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156136d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f8919061529a565b602001511461370957506000612342565b336001600160a01b0384161461374b576040517f21e62a3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600581111561375f5761375f6151c6565b148061377c5750600382600581111561377a5761377a6151c6565b145b156137b3576040517ff691b6e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055919061382a90830182614d1a565b50600060038201819055600490910155604051428152339085907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f39190615359565b6001600160a01b031663ad36d6cc856040518263ffffffff1660e01b815260040161392091815260200190565b602060405180830381865afa15801561393d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139619190615376565b15613a61577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e89190615359565b6040517fa83871720000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03919091169063a838717290602401600060405180830381600087803b158015613a4457600080fd5b505af1158015613a58573d6000803e3d6000fd5b50505050613b66565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae39190615359565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101869052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b158015613b4d57600080fd5b505af1158015613b61573d6000803e3d6000fd5b505050505b5060019392505050565b6080810151600090613bd257815160208084015160408086015160608701519151613bb595949192910193845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b81516020808401516040808601516060808801516080808a01518551978801989098529386019490945284015282015260a081019190915260c001613bb5565b83856002018781548110613c2857613c286153db565b906000526020600020015414613c6a576040517f224dff3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613c73856141f6565b613cd9578260028601613c87886001615341565b81548110613c9757613c976153db565b906000526020600020015403613cd9576040517f87c1943200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808201351561321d57806060013582608001351461321d576040517f3f126fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001358260e0013514613d65576040517f4d9e774000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610180830135613d9057613d8b613d7d84615730565b613d868461588a565b61420a565b613daa565b613daa613d9c84615730565b613da58461588a565b6142ae565b905080846060013514613de9576040517fb033950600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312e64a7290613eac907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401615a2b565b602060405180830381865afa158015613ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eed9190615376565b611b33576040517ff35959c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060607f0000000000000000000000000000000000000000000000000000000000000000613f56610120850185615540565b90501015613fc357613fc07f0000000000000000000000000000000000000000000000000000000000000000613f90610120860186615540565b613fbb91507f000000000000000000000000000000000000000000000000000000000000000061540a565b6143bf565b90505b613fd684613fd085615730565b8361444b565b949350505050565b805160016000613fee8288615b06565b60ff1681526020019081526020016000205414614037576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008151811061404a5761404a6153db565b6020026020010151831461408a576040517f224dff3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060018251614099919061540a565b815181106140a9576140a96153db565b60200260200101518203613de9576040517f87c1943200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000906001908190839061410390839060ff16615b06565b60ff1681526020019081526020016000205461411f919061540a565b8260030154611ef29190615b29565b82516141439060028601906020860190614d38565b50600484019190915560039092019190915550565b614161816141f6565b6141cc5761418f7f000000000000000000000000000000000000000000000000000000000000000042615341565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b61418f7f000000000000000000000000000000000000000000000000000000000000000042615341565b60006001614203836140e9565b1192915050565b6040805160118082526102408201909252600091829190816020015b60608152602001906001900390816142265790505090506142488484836144bd565b61427784610100015160405160200161426391815260200190565b604051602081830303815290604052614770565b8160108151811061428a5761428a6153db565b602002602001018190525061429e816147db565b8051906020012091505092915050565b6040805160148082526102a08201909252600091829190816020015b60608152602001906001900390816142ca5790505090506142ec8484836144bd565b61430784610100015160405160200161426391815260200190565b8160108151811061431a5761431a6153db565b602002602001018190525061433d84610140015167ffffffffffffffff16614806565b81601181518110614350576143506153db565b602002602001018190525061437384610160015167ffffffffffffffff16614806565b81601281518110614386576143866153db565b60200260200101819052506143ac84610180015160405160200161426391815260200190565b8160138151811061428a5761428a6153db565b606060008267ffffffffffffffff8111156143dc576143dc614eb3565b604051908082528060200260200182016040528015614405578160200160208202803683370190505b50905060005b838110156144435784828281518110614426576144266153db565b60209081029190910101528061443b81615b3d565b91505061440b565b509392505050565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c60405160200161449e9c9b9a99989796959493929190615ba8565b6040516020818303038152906040528051906020012090509392505050565b6144d7836020015160405160200161426391815260200190565b816000815181106144ea576144ea6153db565b602002602001018190525081600001518160018151811061450d5761450d6153db565b6020026020010181905250816020015181600281518110614530576145306153db565b60200260200101819052506145558360e0015160405160200161426391815260200190565b81600381518110614568576145686153db565b602002602001018190525061458d8360c0015160405160200161426391815260200190565b816004815181106145a0576145a06153db565b60200260200101819052508160400151816005815181106145c3576145c36153db565b60200260200101819052508160600151816006815181106145e6576145e66153db565b6020026020010181905250816080015181600781518110614609576146096153db565b602002602001018190525061462b836060015167ffffffffffffffff16614806565b8160088151811061463e5761463e6153db565b6020026020010181905250614660836080015167ffffffffffffffff16614806565b81600981518110614673576146736153db565b60200260200101819052508160a0015181600a81518110614696576146966153db565b60200260200101819052506146b8836040015167ffffffffffffffff16614806565b81600b815181106146cb576146cb6153db565b60200260200101819052508160c0015181600c815181106146ee576146ee6153db565b60200260200101819052508160e0015181600d81518110614711576147116153db565b602002602001018190525081610100015181600e81518110614735576147356153db565b602002602001018190525061474d8360a00151614806565b81600f81518110614760576147606153db565b6020026020010181905250505050565b60608151600114801561479d5750608082600081518110614793576147936153db565b016020015160f81c105b156147a6575090565b6147b282516080614819565b826040516020016147c4929190615c61565b60405160208183030381529060405290505b919050565b60606147e682614a0d565b90506147f4815160c0614819565b816040516020016147c4929190615c61565b6060611ef261481483614b42565b614770565b60606038831015614897576040805160018082528183019092529060208201818036833701905050905061484d828461566b565b60f81b81600081518110614863576148636153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611ef2565b600060015b6148a68186615b29565b156148cc57816148b581615b3d565b92506148c5905061010082615421565b905061489c565b6148d7826001615341565b67ffffffffffffffff8111156148ef576148ef614eb3565b6040519080825280601f01601f191660200182016040528015614919576020820181803683370190505b509250614926848361566b565b61493190603761566b565b60f81b83600081518110614947576149476153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111614a055761010061498f828461540a565b61499b90610100615db0565b6149a59087615b29565b6149af91906153c7565b60f81b8382815181106149c4576149c46153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806149fd81615b3d565b91505061497b565b505092915050565b60608151600003614a2c57505060408051600081526020810190915290565b6000805b8351811015614a7357838181518110614a4b57614a4b6153db565b60200260200101515182614a5f9190615341565b915080614a6b81615b3d565b915050614a30565b8167ffffffffffffffff811115614a8c57614a8c614eb3565b6040519080825280601f01601f191660200182016040528015614ab6576020820181803683370190505b50925060009050602083015b8451821015614b3a576000858381518110614adf57614adf6153db565b602002602001015190506000602082019050614afd83828451614c9f565b868481518110614b0f57614b0f6153db565b60200260200101515183614b239190615341565b925050508180614b3290615b3d565b925050614ac2565b505050919050565b6060600082604051602001614b5991815260200190565b604051602081830303815290604052905060005b6020811015614bc857818181518110614b8857614b886153db565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003614bc85780614bc081615b3d565b915050614b6d565b614bd381602061540a565b67ffffffffffffffff811115614beb57614beb614eb3565b6040519080825280601f01601f191660200182016040528015614c15576020820181803683370190505b50925060005b8351811015614b3a578282614c2f81615b3d565b935081518110614c4157614c416153db565b602001015160f81c60f81b848281518110614c5e57614c5e6153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080614c9781615b3d565b915050614c1b565b8282825b60208110614cdb5781518352614cba602084615341565b9250614cc7602083615341565b9150614cd460208261540a565b9050614ca3565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b508054600082559060005260206000209081019061364e9190614d83565b828054828255906000526020600020908101928215614d73579160200282015b82811115614d73578251825591602001919060010190614d58565b50614d7f929150614d83565b5090565b5b80821115614d7f5760008155600101614d84565b600060208284031215614daa57600080fd5b5035919050565b6001600160a01b038116811461364e57600080fd5b60008060408385031215614dd957600080fd5b823591506020830135614deb81614db1565b809150509250929050565b60005b83811015614e11578181015183820152602001614df9565b83811115613de95750506000910152565b60008151808452614e3a816020860160208601614df6565b601f01601f19169290920160200192915050565b6020815260006123426020830184614e22565b600080600080600060a08688031215614e7957600080fd5b853594506020860135614e8b81614db1565b93506040860135614e9b81614db1565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715614f0657614f06614eb3565b60405290565b604051610120810167ffffffffffffffff81118282101715614f0657614f06614eb3565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f5957614f59614eb3565b604052919050565b600067ffffffffffffffff821115614f7b57614f7b614eb3565b5060051b60200190565b60006020808385031215614f9857600080fd5b823567ffffffffffffffff811115614faf57600080fd5b8301601f81018513614fc057600080fd5b8035614fd3614fce82614f61565b614f30565b81815260059190911b82018301908381019087831115614ff257600080fd5b928401925b8284101561501057833582529284019290840190614ff7565b979650505050505050565b60008083601f84011261502d57600080fd5b50813567ffffffffffffffff81111561504557600080fd5b6020830191508360208260051b850101111561506057600080fd5b9250929050565b600080600080600080600060a0888a03121561508257600080fd5b8735965060208801359550604088013567ffffffffffffffff808211156150a857600080fd5b908901906101e0828c0312156150bd57600080fd5b909550606089013590808211156150d357600080fd5b6150df8b838c0161501b565b909650945060808a01359150808211156150f857600080fd5b506151058a828b0161501b565b989b979a50959850939692959293505050565b60008060008060006080868803121561513057600080fd5b85359450602086013561514281614db1565b935060408601359250606086013567ffffffffffffffff81111561516557600080fd5b6151718882890161501b565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b818110156151ba5783518352928401929184019160010161519e565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310615230577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060008060006080868803121561524e57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561516557600080fd5b80516fffffffffffffffffffffffffffffffff811681146147d657600080fd5b6000608082840312156152ac57600080fd5b6040516080810181811067ffffffffffffffff821117156152cf576152cf614eb3565b60405282516152dd81614db1565b8152602083810151908201526152f56040840161527a565b60408201526153066060840161527a565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561535457615354615312565b500190565b60006020828403121561536b57600080fd5b815161234281614db1565b60006020828403121561538857600080fd5b8151801515811461234257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826153d6576153d6615398565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008282101561541c5761541c615312565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561545957615459615312565b500290565b600060a0828403121561547057600080fd5b60405160a0810181811067ffffffffffffffff8211171561549357615493614eb3565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6183360301811261550257600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261550257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261557557600080fd5b83018035915067ffffffffffffffff82111561559057600080fd5b6020019150600581901b360382131561506057600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156155da57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60608152600061560b6060830187896155a8565b828103602084015261561e8186886155a8565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff831660208201526060604082015260006156626060830184614e22565b95945050505050565b600060ff821660ff84168060ff0382111561568857615688615312565b019392505050565b600060ff8316806156a3576156a3615398565b8060ff84160691505092915050565b803567ffffffffffffffff811681146147d657600080fd5b600082601f8301126156db57600080fd5b813560206156eb614fce83614f61565b82815260059290921b8401810191818101908684111561570a57600080fd5b8286015b84811015615725578035835291830191830161570e565b509695505050505050565b60006101a0823603121561574357600080fd5b61574b614ee2565b8235815260208301356020820152615765604084016156b2565b6040820152615776606084016156b2565b6060820152615787608084016156b2565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff8111156157d257600080fd5b6157de368287016156ca565b8284015250506101406157f28185016156b2565b908201526101606158048482016156b2565b9082015261018092830135928101929092525090565b600082601f83011261582b57600080fd5b813567ffffffffffffffff81111561584557615845614eb3565b6158586020601f19601f84011601614f30565b81815284602083860101111561586d57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120823603121561589d57600080fd5b6158a5614f0c565b823567ffffffffffffffff808211156158bd57600080fd5b6158c93683870161581a565b835260208501359150808211156158df57600080fd5b6158eb3683870161581a565b6020840152604085013591508082111561590457600080fd5b6159103683870161581a565b6040840152606085013591508082111561592957600080fd5b6159353683870161581a565b6060840152608085013591508082111561594e57600080fd5b61595a3683870161581a565b608084015260a085013591508082111561597357600080fd5b61597f3683870161581a565b60a084015260c085013591508082111561599857600080fd5b6159a43683870161581a565b60c084015260e08501359150808211156159bd57600080fd5b6159c93683870161581a565b60e0840152610100915081850135818111156159e457600080fd5b6159f03682880161581a565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b85815260006020608081840152615a456080840188614e22565b8381036040850152858152818101600587901b820183018860005b89811015615aed57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112615aa357600080fd5b8b01868101903567ffffffffffffffff811115615abf57600080fd5b803603821315615ace57600080fd5b615ad9858284615a00565b958801959450505090850190600101615a60565b5050809450505050508260608301529695505050505050565b600060ff821660ff841680821015615b2057615b20615312565b90039392505050565b600082615b3857615b38615398565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615b6e57615b6e615312565b5060010190565b60008151602080840160005b83811015615b9d57815187529582019590820190600101615b81565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d8830152615c4f615c4960da840186615b75565b84615b75565b9e9d5050505050505050505050505050565b60008351615c73818460208801614df6565b835190830190615c87818360208801614df6565b01949350505050565b600181815b80851115615ce957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615ccf57615ccf615312565b80851615615cdc57918102915b93841c9390800290615c95565b509250929050565b600082615d0057506001611ef2565b81615d0d57506000611ef2565b8160018114615d235760028114615d2d57615d49565b6001915050611ef2565b60ff841115615d3e57615d3e615312565b50506001821b611ef2565b5060208310610133831016604e8410600b8410161715615d6c575081810a611ef2565b615d768383615c90565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615da857615da8615312565b029392505050565b60006123428383615cf156fea164736f6c634300080f000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_l2Oracle\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"},{\"name\":\"_zkProofVerifier\",\"type\":\"address\",\"internalType\":\"contractZKProofVerifier\"},{\"name\":\"_submissionInterval\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_creationPeriodSeconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_bisectionTimeout\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_provingTimeout\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_segmentsLengths\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"_securityCouncil\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BISECTION_TIMEOUT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"CREATION_PERIOD_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_ORACLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractL2OutputOracle\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"L2_ORACLE_SUBMISSION_INTERVAL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROVING_TIMEOUT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SECURITY_COUNCIL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ZK_PROOF_VERIFIER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractZKProofVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bisect\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pos\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_segments\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cancelChallenge\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengerTimeout\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challenges\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"turn\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"timeoutAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"asserter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"challenger\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"segSize\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"segStart\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"l1Head\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createChallenge\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_l1BlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1BlockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_segments\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deletedOutputs\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"l2BlockNumber\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"dismissChallenge\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_asserter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_outputRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_publicInputHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"forceDeleteOutput\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getSegments\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStatus\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challenger\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumColosseum.ChallengeStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_segmentsLengths\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isInCreationPeriod\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proveFaultWithZkEvm\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_pos\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_zkEvmProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.ZkEvmProof\",\"components\":[{\"name\":\"publicInputProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.PublicInputProof\",\"components\":[{\"name\":\"srcOutputRootProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.OutputRootProof\",\"components\":[{\"name\":\"version\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"latestBlockhash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dstOutputRootProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.OutputRootProof\",\"components\":[{\"name\":\"version\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"latestBlockhash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"publicInput\",\"type\":\"tuple\",\"internalType\":\"structTypes.PublicInput\",\"components\":[{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"transactionsRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"withdrawalsRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"txHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"blobGasUsed\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"excessBlobGas\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"parentBeaconRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"rlps\",\"type\":\"tuple\",\"internalType\":\"structTypes.BlockHeaderRLP\",\"components\":[{\"name\":\"uncleHash\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"coinbase\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"receiptsRoot\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"logsBloom\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"difficulty\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasUsed\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"extraData\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"mixHash\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nonce\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"l2ToL1MessagePasserBalance\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"l2ToL1MessagePasserCodeHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"merkleProof\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}]},{\"name\":\"proof\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"pair\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proveFaultWithZkVm\",\"inputs\":[{\"name\":\"_outputIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_pos\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_zkVmProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.ZkVmProof\",\"components\":[{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proofBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"segmentsLengths\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifiedPublicInputs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Bisected\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"turn\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChallengeCanceled\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChallengeCreated\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"asserter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChallengeDismissed\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChallengerTimedOut\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OutputForceDeleted\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"asseter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Proven\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReadyToProve\",\"inputs\":[{\"name\":\"outputIndex\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyVerifiedPublicInput\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotCancelChallenge\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CreationPeriodPassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FirstSegmentMismatched\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ImproperChallengeStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ImproperChallengeStatusToCancel\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ImproperValidatorStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressGiven\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOutputGiven\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPublicInputHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSegmentsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTurn\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1Reorged\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LastSegmentMatched\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedGenesisOutput\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyChallengerCanCancel\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutputAlreadyDeleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutputAlreadyFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutputNotDeleted\",\"inputs\":[]}]", + Bin: "0x6101606040523480156200001257600080fd5b5060405162005844380380620058448339810160408190526200003591620002d0565b6001600160a01b0380891660805287811660a05260c086905260e085905261010084905261012087905281166101405262000070826200007e565b50505050505050506200048e565b600054610100900460ff16158080156200009f5750600054600160ff909116105b80620000cf5750620000bc306200028060201b620023bc1760201c565b158015620000cf575060005460ff166001145b620001375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff1916600117905580156200015b576000805461ff0019166101001790555b600282516200016b919062000403565b156200018a57604051630fbb795f60e41b815260040160405180910390fd5b600160005b83518110156200020f57838181518110620001ae57620001ae62000426565b602002602001015160016000838152602001908152602001600020819055506001848281518110620001e457620001e462000426565b6020026020010151620001f8919062000452565b6200020490836200046c565b91506001016200018f565b506101205181146200023457604051630fbb795f60e41b815260040160405180910390fd5b5080156200027c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b6001600160a01b0381168114620002a557600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b8051620002cb816200028f565b919050565b600080600080600080600080610100898b031215620002ee57600080fd5b8851620002fb816200028f565b809850506020808a015162000310816200028f565b60408b015160608c015160808d015160a08e015160c08f0151949c50929a50909850965094506001600160401b03808211156200034c57600080fd5b818c0191508c601f8301126200036157600080fd5b815181811115620003765762000376620002a8565b8060051b604051601f19603f830116810181811085821117156200039e576200039e620002a8565b60405291825284820192508381018501918f831115620003bd57600080fd5b938501935b82851015620003dd57845184529385019392850192620003c2565b809750505050505050620003f460e08a01620002be565b90509295985092959890939650565b6000826200042157634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156200046757620004676200043c565b500390565b60008160001904831182151516156200048957620004896200043c565b500290565b60805160a05160c05160e05161010051610120516101405161520462000640600039600081816102ed015281816115ef0152818161182301528181612b180152613878015260008181610537015281816110140152818161228901526122c201526000818161055e015281816124310152613305015260008181610314015261336c015260008181610497015281816106610152611cc401526000818161045d0152818161350201526135b30152600081816101a1015281816106820152818161077a015281816108a101528181610a8801528181610ae601528181610bdb01528181610cda0152818161150001528181611617015281816116750152818161176a0152818161196801528181611a5d01528181611c4c01528181611e1401528181611f5b015281816120500152818161214b015281816125890152818161267e0152818161270f01528181612850015281816128ca0152818161295c01528181612a3d01528181612ba001528181612c8101528181612e7601528181612f6b01528181613066015281816136e20152818161399701528181613a7d01528181613b940152613d9101526152046000f3fe608060405234801561001057600080fd5b50600436106101975760003560e01c80638f3a6c88116100e3578063cfb4474d1161008c578063e9371a2c11610066578063e9371a2c14610593578063edbb4fb2146105b3578063fc9d84df146105c657600080fd5b8063cfb4474d14610532578063d2ee307514610559578063e39a219c1461058057600080fd5b8063a6ade11f116100bd578063a6ade11f146104ec578063b3e7766d146104ff578063cbdd28141461051f57600080fd5b80638f3a6c88146104925780638f86c803146104b9578063a41483e3146104d957600080fd5b8063461569b81161014557806362fc00db1161011f57806362fc00db146104455780636506e837146104585780636fe0e5591461047f57600080fd5b8063461569b81461034457806354fd4d50146103575780635a6b011f146103a057600080fd5b80632df27fa5116101765780632df27fa51461022857806336086417146102e85780634394c5841461030f57600080fd5b80621c2ff61461019c5780631be4e27e146101e05780631db1b67214610213575b600080fd5b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6102036101ee366004613fe4565b60036020526000908152604090205460ff1681565b60405190151581526020016101d7565b610226610221366004614012565b6105d9565b005b61029a610236366004614012565b60026020908152600092835260408084209091529082529020805460018201546003830154600484015460059094015460ff84169467ffffffffffffffff610100860416946001600160a01b03690100000000000000000090910481169416929187565b6040805160ff909816885267ffffffffffffffff90961660208801526001600160a01b0394851695870195909552929091166060850152608084015260a083015260c082015260e0016101d7565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b6103367f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101d7565b610203610352366004613fe4565b61065c565b6103936040518060400160405280600581526020017f322e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101d791906140ad565b6104036103ae366004613fe4565b6004602052600090815260409020805460018201546002909201546001600160a01b0390911691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041684565b604080516001600160a01b03909516855260208501939093526fffffffffffffffffffffffffffffffff918216928401929092521660608201526080016101d7565b6102266104533660046140c0565b610737565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61022661048d3660046142b3565b610e2b565b6103367f000000000000000000000000000000000000000000000000000000000000000081565b6103366104c7366004613fe4565b60016020526000908152604090205481565b6102266104e7366004613fe4565b6110d2565b6102266104fa36600461433c565b611143565b61051261050d366004614012565b611416565b6040516101d791906143e1565b61022661052d3660046143f4565b61148d565b6103367f000000000000000000000000000000000000000000000000000000000000000081565b6103367f000000000000000000000000000000000000000000000000000000000000000081565b61022661058e366004613fe4565b6114bd565b6105a66105a1366004614012565b6118dc565b6040516101d7919061447a565b6102266105c13660046144bb565b61190e565b6102266105d4366004614507565b61192c565b600360008381526002602090815260408083206001600160a01b03861684529091529020610606906123cb565b60058111156106175761061761444b565b1461064e576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61065882826124a9565b5050565b6000427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae557856040518263ffffffff1660e01b81526004016106ce91815260200190565b608060405180830381865afa1580156106eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070f9190614570565b604001516fffffffffffffffffffffffffffffffff1661072f9190614617565b101592915050565b61073f612b0d565b61074885612b71565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156107c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ed9190614570565b6020015114610828576040517f8796efdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000858152600460205260409020600101548214610872576040517f90e78fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa1580156108f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610914919061462f565b6001600160a01b0316846001600160a01b031614158061094e57506000858152600460205260409020546001600160a01b03848116911614155b15610985576040517f8036a47f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526003602052604090205460ff166109cd576040517fe1cdd3ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905587835260049182905280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002019290925590517fe6646723000000000000000000000000000000000000000000000000000000008152908101869052602481018390526001600160a01b0384811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b158015610acc57600080fd5b505af1158015610ae0573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b66919061462f565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b8152600401610b9391815260200190565b602060405180830381865afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd4919061464c565b15610de0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5b919061462f565b6040517fab04b8aa000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038581166024830152919091169063ab04b8aa90604401600060405180830381600087803b158015610cc057600080fd5b505af1158015610cd4573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5a919061462f565b6040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0385811660248301528681166044830152919091169063be995dc290606401600060405180830381600087803b158015610dc757600080fd5b505af1158015610ddb573d6000803e3d6000fd5b505050505b836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610e1c91815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610e4b5750600054600160ff909116105b80610e655750303b158015610e65575060005460ff166001145b610ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f5357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60028251610f61919061469d565b15610f98576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160005b835181101561101157838181518110610fb857610fb86146b1565b602002602001015160016000838152602001908152602001600020819055506001848281518110610feb57610feb6146b1565b6020026020010151610ffd91906146e0565b61100790836146f7565b9150600101610f9d565b507f0000000000000000000000000000000000000000000000000000000000000000811461106b576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50801561065857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008181526002602090815260408083203384529091529020600181015461110d9083906001600160a01b0316611108846123cb565b612c4d565b610658576040517f4e9d86f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114c85612b71565b60008581526002602090815260408083206001600160a01b0388168452909152812090611178826123cb565b60018301549091506111959088906001600160a01b031683612c4d565b156111a157505061140f565b600060018260058111156111b7576111b761444b565b036111d0575060018201546001600160a01b0316611203565b60028260058111156111e4576111e461444b565b0361120357508154690100000000000000000090046001600160a01b03165b336001600160a01b03821614611245576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82546000906112589060ff166001614734565b90506112e381856002018981548110611273576112736146b1565b9060005260206000200154866002018a600161128f9190614617565b8154811061129f5761129f6146b1565b906000526020600020015489898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061317392505050565b60006112ee8561327e565b90506113498588888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061133492508691508d90506146f7565b88600401546113439190614617565b846132c9565b84547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff831617855561137d856132f3565b6040805160ff841681524260208201526001600160a01b038b16918c917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a36113ce85613391565b611409576040516001600160a01b038a16908b907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b50505050505b5050505050565b60008281526002602081815260408084206001600160a01b038616855282529283902090910180548351818402810184019094528084526060939283018282801561148057602002820191906000526020600020905b81548152602001906001019080831161146c575b5050505050905092915050565b60408051808201909152606080825260208201526114b7848460006114b186614b51565b856133a5565b50505050565b6114c5612b0d565b6114ce81612b71565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115739190614570565b60208101519091506115b1576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101839052600060248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f5919061462f565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161172291815260200190565b602060405180830381865afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611763919061464c565b15611890577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ea919061462f565b81516040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152918216604482015291169063be995dc290606401600060405180830381600087803b15801561187757600080fd5b505af115801561188b573d6000803e3d6000fd5b505050505b80600001516001600160a01b0316827fa620f04b65b1d538481626bf41dc5ee321b5c48e0cc1a7daae213cf7c254b54e426040516118d091815260200190565b60405180910390a35050565b60008281526002602090815260408083206001600160a01b03851684529091528120611907906123cb565b9392505050565b611916613e01565b6114b7848460018461192787614c98565b6133a5565b84600003611966576040517f2604872b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e8919061462f565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b8152600401611a1591815260200190565b602060405180830381865afa158015611a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a56919061464c565b15611b96577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add919061462f565b6040517f9f8a13d70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690639f8a13d790602401602060405180830381865afa158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b60919061464c565b611b96576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260026020908152604080832033845290915290208054600160ff90911610611c1a576003611bc8826123cb565b6005811115611bd957611bd961444b565b14611c10576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c1a86336124a9565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbf9190614570565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff16611d049190614617565b1015611d3c576040517fa0388b4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020810151611d77576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516001600160a01b03163303611dba576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8515801590611dc95750844015155b15611e085785854014611e08576040517f72f1f56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae557611e4460018b6146e0565b6040518263ffffffff1660e01b8152600401611e6291815260200190565b608060405180830381865afa158015611e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea39190614570565b6020810151909150611f1157611f0c600186866000818110611ec757611ec76146b1565b90506020020135846020015188888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061317392505050565b611f59565b611f5960018260200151846020015188888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061317392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdb919061462f565b6001600160a01b031663ad36d6cc896040518263ffffffff1660e01b815260040161200891815260200190565b602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061464c565b15612149577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d0919061462f565b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690638c1516c790602401600060405180830381600087803b15801561212c57600080fd5b505af1158015612140573d6000803e3d6000fd5b50505050612247565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb919061462f565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018a90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b15801561222e57600080fd5b505af1158015612242573d6000803e3d6000fd5b505050505b6122e683868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060608601516122c091507f0000000000000000000000000000000000000000000000000000000000000000906fffffffffffffffffffffffffffffffff166146e0565b7f00000000000000000000000000000000000000000000000000000000000000006132c9565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff00909116176001908117845583810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905561236090436146e0565b40600584015561236f836132f3565b815160405142815233916001600160a01b0316908a907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a45050505050505050565b6001600160a01b03163b151590565b8054600090600160ff90911610156123e557506000919050565b81546000906123f99060029060ff16614d1e565b835460ff91909116159150610100900467ffffffffffffffff1642111561247e5780156124295750600392915050565b8254612465907f000000000000000000000000000000000000000000000000000000000000000090610100900467ffffffffffffffff16614617565b4211156124755750600392915050565b50600492915050565b61248783613391565b6124945750600592915050565b806124a0576002611907565b60019392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055919061252990830182613e28565b6003820160009055600482016000905560058201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff0514260405161257f91815260200190565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612609919061462f565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161263691815260200190565b602060405180830381865afa158015612653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612677919061464c565b15612821577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fe919061462f565b6001600160a01b031663be995dc2837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ea09a8866040518263ffffffff1660e01b815260040161275b91815260200190565b602060405180830381865afa158015612778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279c919061462f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b039081166024830152841660448201526064015b600060405180830381600087803b15801561280557600080fd5b505af1158015612819573d6000803e3d6000fd5b505050505050565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa15801561289f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c3919061464c565b15612a3b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294a919061462f565b6001600160a01b03166336b8346983837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ea09a8876040518263ffffffff1660e01b81526004016129a891815260200190565b602060405180830381865afa1580156129c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e9919061462f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526001600160a01b0391821660248401521660448201526064016127eb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abd919061462f565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d906044016127eb565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b6f576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c13919061464c565b15612c4a576040517f5c9d9a2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015612cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf49190614570565b6020015114612d0557506000611907565b336001600160a01b03841614612d47576040517f21e62a3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826005811115612d5b57612d5b61444b565b1480612d7857506003826005811115612d7657612d7661444b565b145b15612daf576040517ff691b6e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612e2690830182613e28565b5060006003820181905560048201819055600590910155604051428152339085907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef6919061462f565b6001600160a01b031663ad36d6cc856040518263ffffffff1660e01b8152600401612f2391815260200190565b602060405180830381865afa158015612f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f64919061464c565b15613064577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb919061462f565b6040517fa83871720000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03919091169063a838717290602401600060405180830381600087803b15801561304757600080fd5b505af115801561305b573d6000803e3d6000fd5b50505050613169565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e6919061462f565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101869052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b15801561315057600080fd5b505af1158015613164573d6000803e3d6000fd5b505050505b5060019392505050565b8051600160006131838288614d40565b60ff16815260200190815260200160002054146131cc576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000815181106131df576131df6146b1565b6020026020010151831461321f576040517f224dff3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001825161322e91906146e0565b8151811061323e5761323e6146b1565b602002602001015182036114b7576040517f87c1943200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000906001908190839061329890839060ff16614d40565b60ff168152602001908152602001600020546132b491906146e0565b82600301546132c39190614d63565b92915050565b82516132de9060028601906020860190613e46565b50600484019190915560039092019190915550565b6132fc81613391565b6133675761332a7f000000000000000000000000000000000000000000000000000000000000000042614617565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b61332a7f000000000000000000000000000000000000000000000000000000000000000042614617565b6000600161339e8361327e565b1192915050565b6133ae85612b71565b60008581526002602090815260408083203384529091528120906133d1826123cb565b60018301549091506133ee9088906001600160a01b031683612c4d565b156133fa57505061140f565b600581600581111561340e5761340e61444b565b1415801561342e5750600481600581111561342b5761342b61444b565b14155b15613465576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600201878154811061347c5761347c6146b1565b90600052602060002001549050600061349484613391565b6134c557600284016134a7896001614617565b815481106134b7576134b76146b1565b906000526020600020015490505b600087156135835760058501546040517fe674f0e00000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e674f0e09161353b918a9188918891600401614d77565b602060405180830381865afa158015613558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357c9190614dec565b9050613630565b6040517f3955d7a10000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633955d7a1906135ec908a908790879060040161503e565b602060405180830381865afa158015613609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362d9190614dec565b90505b60008181526003602052604090205460ff1615613679576040517fd0cea89800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405142815233908b907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018b90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015613731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137559190614570565b86546020820151604051602481018f905233604482015269010000000000000000009092046001600160a01b03166064830152608482015260a481018490529091506000907f62fc00db000000000000000000000000000000000000000000000000000000009060c401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263080b91ee926138af92919086906004016151bd565b600060405180830381600087803b1580156138c957600080fd5b505af11580156138dd573d6000803e3d6000fd5b50505060008d815260046020818152604092839020865181546001600160a01b039182167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178255828801516001830155848801516060909801516fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000000298169790971760029091015582517fb98debbf00000000000000000000000000000000000000000000000000000000815292517f00000000000000000000000000000000000000000000000000000000000000009096169563b98debbf9550838301945090929091908290030181865afa1580156139e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a08919061462f565b6001600160a01b031663ad36d6cc8b6040518263ffffffff1660e01b8152600401613a3591815260200190565b602060405180830381865afa158015613a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a76919061464c565b15613b92577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613afd919061462f565b85546040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018d90523360248201526001600160a01b0369010000000000000000009092048216604482015291169063be995dc290606401600060405180830381600087803b158015613b7557600080fd5b505af1158015613b89573d6000803e3d6000fd5b50505050613c90565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c14919061462f565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018c90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b158015613c7757600080fd5b505af1158015613c8b573d6000803e3d6000fd5b505050505b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558d8452600280845282852033865290935290832080547fffffff000000000000000000000000000000000000000000000000000000000016815590810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190613d3e90830182613e28565b50600060038201819055600480830182905560059092018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018c905260248201523360448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e664672390606401600060405180830381600087803b158015613ddd57600080fd5b505af1158015613df1573d6000803e3d6000fd5b5050505050505050505050505050565b6040518060600160405280613e14613e91565b815260200160608152602001606081525090565b5080546000825590600052602060002090810190612c4a9190613fcf565b828054828255906000526020600020908101928215613e81579160200282015b82811115613e81578251825591602001919060010190613e66565b50613e8d929150613fcf565b5090565b604080516101808101909152600060e08201818152610100830182905261012083018290526101408301829052610160830191909152819081526040805160a081018252600080825260208281018290529282018190526060820181905260808201529101908152604080516101a0810182526000808252602082810182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e083018290526101008301829052610120830152610140820181905261016082018190526101808201529101908152602001613fb66040518061012001604052806060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b8152600060208201819052604082015260609081015290565b5b80821115613e8d5760008155600101613fd0565b600060208284031215613ff657600080fd5b5035919050565b6001600160a01b0381168114612c4a57600080fd5b6000806040838503121561402557600080fd5b82359150602083013561403781613ffd565b809150509250929050565b6000815180845260005b818110156140685760208185018101518683018201520161404c565b8181111561407a576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119076020830184614042565b600080600080600060a086880312156140d857600080fd5b8535945060208601356140ea81613ffd565b935060408601356140fa81613ffd565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff8111828210171561416557614165614112565b60405290565b604051610120810167ffffffffffffffff8111828210171561416557614165614112565b6040516060810167ffffffffffffffff8111828210171561416557614165614112565b60405160e0810167ffffffffffffffff8111828210171561416557614165614112565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561421c5761421c614112565b604052919050565b600067ffffffffffffffff82111561423e5761423e614112565b5060051b60200190565b600082601f83011261425957600080fd5b8135602061426e61426983614224565b6141d5565b82815260059290921b8401810191818101908684111561428d57600080fd5b8286015b848110156142a85780358352918301918301614291565b509695505050505050565b6000602082840312156142c557600080fd5b813567ffffffffffffffff8111156142dc57600080fd5b6142e884828501614248565b949350505050565b60008083601f84011261430257600080fd5b50813567ffffffffffffffff81111561431a57600080fd5b6020830191508360208260051b850101111561433557600080fd5b9250929050565b60008060008060006080868803121561435457600080fd5b85359450602086013561436681613ffd565b935060408601359250606086013567ffffffffffffffff81111561438957600080fd5b614395888289016142f0565b969995985093965092949392505050565b600081518084526020808501945080840160005b838110156143d6578151875295820195908201906001016143ba565b509495945050505050565b60208152600061190760208301846143a6565b60008060006060848603121561440957600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561442e57600080fd5b84016060818703121561444057600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600683106144b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806000606084860312156144d057600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156144f557600080fd5b84016040818703121561444057600080fd5b60008060008060006080868803121561451f57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561438957600080fd5b80516fffffffffffffffffffffffffffffffff8116811461456b57600080fd5b919050565b60006080828403121561458257600080fd5b6040516080810181811067ffffffffffffffff821117156145a5576145a5614112565b60405282516145b381613ffd565b8152602083810151908201526145cb6040840161454b565b60408201526145dc6060840161454b565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561462a5761462a6145e8565b500190565b60006020828403121561464157600080fd5b815161190781613ffd565b60006020828403121561465e57600080fd5b8151801515811461190757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826146ac576146ac61466e565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156146f2576146f26145e8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561472f5761472f6145e8565b500290565b600060ff821660ff84168060ff03821115614751576147516145e8565b019392505050565b600060a0828403121561476b57600080fd5b60405160a0810181811067ffffffffffffffff8211171561478e5761478e614112565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b803567ffffffffffffffff8116811461456b57600080fd5b60006101a082840312156147f457600080fd5b6147fc614141565b90508135815260208201356020820152614818604083016147c9565b6040820152614829606083016147c9565b606082015261483a608083016147c9565b608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013567ffffffffffffffff81111561488557600080fd5b61489185828601614248565b8284015250506101406148a58184016147c9565b908201526101606148b78382016147c9565b818301525061018080830135818301525092915050565b600082601f8301126148df57600080fd5b813567ffffffffffffffff8111156148f9576148f9614112565b61492a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016141d5565b81815284602083860101111561493f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120828403121561496f57600080fd5b61497761416b565b9050813567ffffffffffffffff8082111561499157600080fd5b61499d858386016148ce565b835260208401359150808211156149b357600080fd5b6149bf858386016148ce565b602084015260408401359150808211156149d857600080fd5b6149e4858386016148ce565b604084015260608401359150808211156149fd57600080fd5b614a09858386016148ce565b60608401526080840135915080821115614a2257600080fd5b614a2e858386016148ce565b608084015260a0840135915080821115614a4757600080fd5b614a53858386016148ce565b60a084015260c0840135915080821115614a6c57600080fd5b614a78858386016148ce565b60c084015260e0840135915080821115614a9157600080fd5b614a9d858386016148ce565b60e084015261010091508184013581811115614ab857600080fd5b614ac4868287016148ce565b8385015250505092915050565b600082601f830112614ae257600080fd5b81356020614af261426983614224565b82815260059290921b84018101918181019086841115614b1157600080fd5b8286015b848110156142a857803567ffffffffffffffff811115614b355760008081fd5b614b438986838b01016148ce565b845250918301918301614b15565b600060608236031215614b6357600080fd5b614b6b61418f565b823567ffffffffffffffff80821115614b8357600080fd5b81850191506101e08236031215614b9957600080fd5b614ba16141b2565b614bab3684614759565b8152614bba3660a08501614759565b602082015261014083013582811115614bd257600080fd5b614bde368286016147e1565b60408301525061016083013582811115614bf757600080fd5b614c033682860161495c565b60608301525061018083013560808201526101a083013560a08201526101c083013582811115614c3257600080fd5b614c3e36828601614ad1565b60c08301525083526020850135915080821115614c5a57600080fd5b614c6636838701614248565b60208401526040850135915080821115614c7f57600080fd5b50614c8c36828601614248565b60408301525092915050565b600060408236031215614caa57600080fd5b6040516040810167ffffffffffffffff8282108183111715614cce57614cce614112565b816040528435915080821115614ce357600080fd5b614cef368387016148ce565b83526020850135915080821115614d0557600080fd5b50614d12368286016148ce565b60208301525092915050565b600060ff831680614d3157614d3161466e565b8060ff84160691505092915050565b600060ff821660ff841680821015614d5a57614d5a6145e8565b90039392505050565b600082614d7257614d7261466e565b500490565b608081526000855160406080840152614d9360c0840182614042565b905060208701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808483030160a0850152614dce8282614042565b60208501979097525050506040810192909252606090910152919050565b600060208284031215614dfe57600080fd5b5051919050565b60006101a082518452602083015160208501526040830151614e33604086018267ffffffffffffffff169052565b506060830151614e4f606086018267ffffffffffffffff169052565b506080830151614e6b608086018267ffffffffffffffff169052565b5060a083015160a085015260c083015160c085015260e083015160e0850152610100808401518186015250610120808401518282870152614eae838701826143a6565b9250505061014080840151614ece8287018267ffffffffffffffff169052565b50506101608381015167ffffffffffffffff16908501526101809283015192909301919091525090565b60006101208251818552614f0e82860182614042565b91505060208301518482036020860152614f288282614042565b91505060408301518482036040860152614f428282614042565b91505060608301518482036060860152614f5c8282614042565b91505060808301518482036080860152614f768282614042565b91505060a083015184820360a0860152614f908282614042565b91505060c083015184820360c0860152614faa8282614042565b91505060e083015184820360e0860152614fc48282614042565b9150506101008084015185830382870152614fdf8382614042565b9695505050505050565b600081518084526020808501808196508360051b8101915082860160005b8581101561503157828403895261501f848351614042565b98850198935090840190600101615007565b5091979650505050505050565b606081526000845160608084015261508560c08401825180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60208181015180516101608601529081015161018085015260408101516101a085015260608101516101c085015260808101516101e08501525060408101516101e06102008501526150db6102a0850182614e05565b905060608201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4080868403016102208701526151188383614ef8565b9250608084015161024087015260a084015161026087015260c084015193508086840301610280870152505061514e8183614fe9565b91505060208601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08085840301608086015261518b83836143a6565b925060408801519150808584030160a0860152506151a982826143a6565b602085019690965250505060400152919050565b8381526fffffffffffffffffffffffffffffffff831660208201526060604082015260006151ee6060830184614042565b9594505050505056fea164736f6c634300080f000a", } // ColosseumABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ColosseumABI = ColosseumMetaData.ABI var ColosseumBin = ColosseumMetaData.Bin // DeployColosseum deploys a new Ethereum contract, binding an instance of Colosseum to it. -func DeployColosseum(auth *bind.TransactOpts, backend bind.ContractBackend, _l2Oracle common.Address, _zkVerifier common.Address, _submissionInterval *big.Int, _creationPeriodSeconds *big.Int, _bisectionTimeout *big.Int, _provingTimeout *big.Int, _dummyHash [32]byte, _maxTxs *big.Int, _segmentsLengths []*big.Int, _securityCouncil common.Address, _zkMerkleTrie common.Address) (common.Address, *types.Transaction, *Colosseum, error) { +func DeployColosseum(auth *bind.TransactOpts, backend bind.ContractBackend, _l2Oracle common.Address, _zkProofVerifier common.Address, _submissionInterval *big.Int, _creationPeriodSeconds *big.Int, _bisectionTimeout *big.Int, _provingTimeout *big.Int, _segmentsLengths []*big.Int, _securityCouncil common.Address) (common.Address, *types.Transaction, *Colosseum, error) { parsed, err := ColosseumMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployColosseum(auth *bind.TransactOpts, backend bind.ContractBackend, _l2O return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ColosseumBin), backend, _l2Oracle, _zkVerifier, _submissionInterval, _creationPeriodSeconds, _bisectionTimeout, _provingTimeout, _dummyHash, _maxTxs, _segmentsLengths, _securityCouncil, _zkMerkleTrie) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ColosseumBin), backend, _l2Oracle, _zkProofVerifier, _submissionInterval, _creationPeriodSeconds, _bisectionTimeout, _provingTimeout, _segmentsLengths, _securityCouncil) if err != nil { return common.Address{}, nil, nil, err } @@ -264,37 +264,6 @@ func (_Colosseum *ColosseumCallerSession) CREATIONPERIODSECONDS() (*big.Int, err return _Colosseum.Contract.CREATIONPERIODSECONDS(&_Colosseum.CallOpts) } -// DUMMYHASH is a free data retrieval call binding the contract method 0xd5145ebc. -// -// Solidity: function DUMMY_HASH() view returns(bytes32) -func (_Colosseum *ColosseumCaller) DUMMYHASH(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _Colosseum.contract.Call(opts, &out, "DUMMY_HASH") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// DUMMYHASH is a free data retrieval call binding the contract method 0xd5145ebc. -// -// Solidity: function DUMMY_HASH() view returns(bytes32) -func (_Colosseum *ColosseumSession) DUMMYHASH() ([32]byte, error) { - return _Colosseum.Contract.DUMMYHASH(&_Colosseum.CallOpts) -} - -// DUMMYHASH is a free data retrieval call binding the contract method 0xd5145ebc. -// -// Solidity: function DUMMY_HASH() view returns(bytes32) -func (_Colosseum *ColosseumCallerSession) DUMMYHASH() ([32]byte, error) { - return _Colosseum.Contract.DUMMYHASH(&_Colosseum.CallOpts) -} - // L2ORACLE is a free data retrieval call binding the contract method 0x001c2ff6. // // Solidity: function L2_ORACLE() view returns(address) @@ -357,37 +326,6 @@ func (_Colosseum *ColosseumCallerSession) L2ORACLESUBMISSIONINTERVAL() (*big.Int return _Colosseum.Contract.L2ORACLESUBMISSIONINTERVAL(&_Colosseum.CallOpts) } -// MAXTXS is a free data retrieval call binding the contract method 0x5375b891. -// -// Solidity: function MAX_TXS() view returns(uint256) -func (_Colosseum *ColosseumCaller) MAXTXS(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Colosseum.contract.Call(opts, &out, "MAX_TXS") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MAXTXS is a free data retrieval call binding the contract method 0x5375b891. -// -// Solidity: function MAX_TXS() view returns(uint256) -func (_Colosseum *ColosseumSession) MAXTXS() (*big.Int, error) { - return _Colosseum.Contract.MAXTXS(&_Colosseum.CallOpts) -} - -// MAXTXS is a free data retrieval call binding the contract method 0x5375b891. -// -// Solidity: function MAX_TXS() view returns(uint256) -func (_Colosseum *ColosseumCallerSession) MAXTXS() (*big.Int, error) { - return _Colosseum.Contract.MAXTXS(&_Colosseum.CallOpts) -} - // PROVINGTIMEOUT is a free data retrieval call binding the contract method 0xd2ee3075. // // Solidity: function PROVING_TIMEOUT() view returns(uint256) @@ -450,43 +388,12 @@ func (_Colosseum *ColosseumCallerSession) SECURITYCOUNCIL() (common.Address, err return _Colosseum.Contract.SECURITYCOUNCIL(&_Colosseum.CallOpts) } -// ZKMERKLETRIE is a free data retrieval call binding the contract method 0x5865b607. -// -// Solidity: function ZK_MERKLE_TRIE() view returns(address) -func (_Colosseum *ColosseumCaller) ZKMERKLETRIE(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Colosseum.contract.Call(opts, &out, "ZK_MERKLE_TRIE") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZKMERKLETRIE is a free data retrieval call binding the contract method 0x5865b607. -// -// Solidity: function ZK_MERKLE_TRIE() view returns(address) -func (_Colosseum *ColosseumSession) ZKMERKLETRIE() (common.Address, error) { - return _Colosseum.Contract.ZKMERKLETRIE(&_Colosseum.CallOpts) -} - -// ZKMERKLETRIE is a free data retrieval call binding the contract method 0x5865b607. +// ZKPROOFVERIFIER is a free data retrieval call binding the contract method 0x6506e837. // -// Solidity: function ZK_MERKLE_TRIE() view returns(address) -func (_Colosseum *ColosseumCallerSession) ZKMERKLETRIE() (common.Address, error) { - return _Colosseum.Contract.ZKMERKLETRIE(&_Colosseum.CallOpts) -} - -// ZKVERIFIER is a free data retrieval call binding the contract method 0x9ded3952. -// -// Solidity: function ZK_VERIFIER() view returns(address) -func (_Colosseum *ColosseumCaller) ZKVERIFIER(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function ZK_PROOF_VERIFIER() view returns(address) +func (_Colosseum *ColosseumCaller) ZKPROOFVERIFIER(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _Colosseum.contract.Call(opts, &out, "ZK_VERIFIER") + err := _Colosseum.contract.Call(opts, &out, "ZK_PROOF_VERIFIER") if err != nil { return *new(common.Address), err @@ -498,23 +405,23 @@ func (_Colosseum *ColosseumCaller) ZKVERIFIER(opts *bind.CallOpts) (common.Addre } -// ZKVERIFIER is a free data retrieval call binding the contract method 0x9ded3952. +// ZKPROOFVERIFIER is a free data retrieval call binding the contract method 0x6506e837. // -// Solidity: function ZK_VERIFIER() view returns(address) -func (_Colosseum *ColosseumSession) ZKVERIFIER() (common.Address, error) { - return _Colosseum.Contract.ZKVERIFIER(&_Colosseum.CallOpts) +// Solidity: function ZK_PROOF_VERIFIER() view returns(address) +func (_Colosseum *ColosseumSession) ZKPROOFVERIFIER() (common.Address, error) { + return _Colosseum.Contract.ZKPROOFVERIFIER(&_Colosseum.CallOpts) } -// ZKVERIFIER is a free data retrieval call binding the contract method 0x9ded3952. +// ZKPROOFVERIFIER is a free data retrieval call binding the contract method 0x6506e837. // -// Solidity: function ZK_VERIFIER() view returns(address) -func (_Colosseum *ColosseumCallerSession) ZKVERIFIER() (common.Address, error) { - return _Colosseum.Contract.ZKVERIFIER(&_Colosseum.CallOpts) +// Solidity: function ZK_PROOF_VERIFIER() view returns(address) +func (_Colosseum *ColosseumCallerSession) ZKPROOFVERIFIER() (common.Address, error) { + return _Colosseum.Contract.ZKPROOFVERIFIER(&_Colosseum.CallOpts) } // Challenges is a free data retrieval call binding the contract method 0x2df27fa5. // -// Solidity: function challenges(uint256 , address ) view returns(uint8 turn, uint64 timeoutAt, address asserter, address challenger, uint256 segSize, uint256 segStart) +// Solidity: function challenges(uint256 , address ) view returns(uint8 turn, uint64 timeoutAt, address asserter, address challenger, uint256 segSize, uint256 segStart, bytes32 l1Head) func (_Colosseum *ColosseumCaller) Challenges(opts *bind.CallOpts, arg0 *big.Int, arg1 common.Address) (struct { Turn uint8 TimeoutAt uint64 @@ -522,6 +429,7 @@ func (_Colosseum *ColosseumCaller) Challenges(opts *bind.CallOpts, arg0 *big.Int Challenger common.Address SegSize *big.Int SegStart *big.Int + L1Head [32]byte }, error) { var out []interface{} err := _Colosseum.contract.Call(opts, &out, "challenges", arg0, arg1) @@ -533,6 +441,7 @@ func (_Colosseum *ColosseumCaller) Challenges(opts *bind.CallOpts, arg0 *big.Int Challenger common.Address SegSize *big.Int SegStart *big.Int + L1Head [32]byte }) if err != nil { return *outstruct, err @@ -544,6 +453,7 @@ func (_Colosseum *ColosseumCaller) Challenges(opts *bind.CallOpts, arg0 *big.Int outstruct.Challenger = *abi.ConvertType(out[3], new(common.Address)).(*common.Address) outstruct.SegSize = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) outstruct.SegStart = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) + outstruct.L1Head = *abi.ConvertType(out[6], new([32]byte)).(*[32]byte) return *outstruct, err @@ -551,7 +461,7 @@ func (_Colosseum *ColosseumCaller) Challenges(opts *bind.CallOpts, arg0 *big.Int // Challenges is a free data retrieval call binding the contract method 0x2df27fa5. // -// Solidity: function challenges(uint256 , address ) view returns(uint8 turn, uint64 timeoutAt, address asserter, address challenger, uint256 segSize, uint256 segStart) +// Solidity: function challenges(uint256 , address ) view returns(uint8 turn, uint64 timeoutAt, address asserter, address challenger, uint256 segSize, uint256 segStart, bytes32 l1Head) func (_Colosseum *ColosseumSession) Challenges(arg0 *big.Int, arg1 common.Address) (struct { Turn uint8 TimeoutAt uint64 @@ -559,13 +469,14 @@ func (_Colosseum *ColosseumSession) Challenges(arg0 *big.Int, arg1 common.Addres Challenger common.Address SegSize *big.Int SegStart *big.Int + L1Head [32]byte }, error) { return _Colosseum.Contract.Challenges(&_Colosseum.CallOpts, arg0, arg1) } // Challenges is a free data retrieval call binding the contract method 0x2df27fa5. // -// Solidity: function challenges(uint256 , address ) view returns(uint8 turn, uint64 timeoutAt, address asserter, address challenger, uint256 segSize, uint256 segStart) +// Solidity: function challenges(uint256 , address ) view returns(uint8 turn, uint64 timeoutAt, address asserter, address challenger, uint256 segSize, uint256 segStart, bytes32 l1Head) func (_Colosseum *ColosseumCallerSession) Challenges(arg0 *big.Int, arg1 common.Address) (struct { Turn uint8 TimeoutAt uint64 @@ -573,6 +484,7 @@ func (_Colosseum *ColosseumCallerSession) Challenges(arg0 *big.Int, arg1 common. Challenger common.Address SegSize *big.Int SegStart *big.Int + L1Head [32]byte }, error) { return _Colosseum.Contract.Challenges(&_Colosseum.CallOpts, arg0, arg1) } @@ -965,25 +877,46 @@ func (_Colosseum *ColosseumTransactorSession) Initialize(_segmentsLengths []*big return _Colosseum.Contract.Initialize(&_Colosseum.TransactOpts, _segmentsLengths) } -// ProveFault is a paid mutator transaction binding the contract method 0x80ab1313. +// ProveFaultWithZkEvm is a paid mutator transaction binding the contract method 0xcbdd2814. +// +// Solidity: function proveFaultWithZkEvm(uint256 _outputIndex, uint256 _pos, (((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[],uint64,uint64,bytes32),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[]) _zkEvmProof) returns() +func (_Colosseum *ColosseumTransactor) ProveFaultWithZkEvm(opts *bind.TransactOpts, _outputIndex *big.Int, _pos *big.Int, _zkEvmProof TypesZkEvmProof) (*types.Transaction, error) { + return _Colosseum.contract.Transact(opts, "proveFaultWithZkEvm", _outputIndex, _pos, _zkEvmProof) +} + +// ProveFaultWithZkEvm is a paid mutator transaction binding the contract method 0xcbdd2814. +// +// Solidity: function proveFaultWithZkEvm(uint256 _outputIndex, uint256 _pos, (((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[],uint64,uint64,bytes32),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[]) _zkEvmProof) returns() +func (_Colosseum *ColosseumSession) ProveFaultWithZkEvm(_outputIndex *big.Int, _pos *big.Int, _zkEvmProof TypesZkEvmProof) (*types.Transaction, error) { + return _Colosseum.Contract.ProveFaultWithZkEvm(&_Colosseum.TransactOpts, _outputIndex, _pos, _zkEvmProof) +} + +// ProveFaultWithZkEvm is a paid mutator transaction binding the contract method 0xcbdd2814. +// +// Solidity: function proveFaultWithZkEvm(uint256 _outputIndex, uint256 _pos, (((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[],uint64,uint64,bytes32),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[]) _zkEvmProof) returns() +func (_Colosseum *ColosseumTransactorSession) ProveFaultWithZkEvm(_outputIndex *big.Int, _pos *big.Int, _zkEvmProof TypesZkEvmProof) (*types.Transaction, error) { + return _Colosseum.Contract.ProveFaultWithZkEvm(&_Colosseum.TransactOpts, _outputIndex, _pos, _zkEvmProof) +} + +// ProveFaultWithZkVm is a paid mutator transaction binding the contract method 0xedbb4fb2. // -// Solidity: function proveFault(uint256 _outputIndex, uint256 _pos, ((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[],uint64,uint64,bytes32),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]) _proof, uint256[] _zkproof, uint256[] _pair) returns() -func (_Colosseum *ColosseumTransactor) ProveFault(opts *bind.TransactOpts, _outputIndex *big.Int, _pos *big.Int, _proof TypesPublicInputProof, _zkproof []*big.Int, _pair []*big.Int) (*types.Transaction, error) { - return _Colosseum.contract.Transact(opts, "proveFault", _outputIndex, _pos, _proof, _zkproof, _pair) +// Solidity: function proveFaultWithZkVm(uint256 _outputIndex, uint256 _pos, (bytes,bytes) _zkVmProof) returns() +func (_Colosseum *ColosseumTransactor) ProveFaultWithZkVm(opts *bind.TransactOpts, _outputIndex *big.Int, _pos *big.Int, _zkVmProof TypesZkVmProof) (*types.Transaction, error) { + return _Colosseum.contract.Transact(opts, "proveFaultWithZkVm", _outputIndex, _pos, _zkVmProof) } -// ProveFault is a paid mutator transaction binding the contract method 0x80ab1313. +// ProveFaultWithZkVm is a paid mutator transaction binding the contract method 0xedbb4fb2. // -// Solidity: function proveFault(uint256 _outputIndex, uint256 _pos, ((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[],uint64,uint64,bytes32),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]) _proof, uint256[] _zkproof, uint256[] _pair) returns() -func (_Colosseum *ColosseumSession) ProveFault(_outputIndex *big.Int, _pos *big.Int, _proof TypesPublicInputProof, _zkproof []*big.Int, _pair []*big.Int) (*types.Transaction, error) { - return _Colosseum.Contract.ProveFault(&_Colosseum.TransactOpts, _outputIndex, _pos, _proof, _zkproof, _pair) +// Solidity: function proveFaultWithZkVm(uint256 _outputIndex, uint256 _pos, (bytes,bytes) _zkVmProof) returns() +func (_Colosseum *ColosseumSession) ProveFaultWithZkVm(_outputIndex *big.Int, _pos *big.Int, _zkVmProof TypesZkVmProof) (*types.Transaction, error) { + return _Colosseum.Contract.ProveFaultWithZkVm(&_Colosseum.TransactOpts, _outputIndex, _pos, _zkVmProof) } -// ProveFault is a paid mutator transaction binding the contract method 0x80ab1313. +// ProveFaultWithZkVm is a paid mutator transaction binding the contract method 0xedbb4fb2. // -// Solidity: function proveFault(uint256 _outputIndex, uint256 _pos, ((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[],uint64,uint64,bytes32),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]) _proof, uint256[] _zkproof, uint256[] _pair) returns() -func (_Colosseum *ColosseumTransactorSession) ProveFault(_outputIndex *big.Int, _pos *big.Int, _proof TypesPublicInputProof, _zkproof []*big.Int, _pair []*big.Int) (*types.Transaction, error) { - return _Colosseum.Contract.ProveFault(&_Colosseum.TransactOpts, _outputIndex, _pos, _proof, _zkproof, _pair) +// Solidity: function proveFaultWithZkVm(uint256 _outputIndex, uint256 _pos, (bytes,bytes) _zkVmProof) returns() +func (_Colosseum *ColosseumTransactorSession) ProveFaultWithZkVm(_outputIndex *big.Int, _pos *big.Int, _zkVmProof TypesZkVmProof) (*types.Transaction, error) { + return _Colosseum.Contract.ProveFaultWithZkVm(&_Colosseum.TransactOpts, _outputIndex, _pos, _zkVmProof) } // ColosseumBisectedIterator is returned from FilterBisected and is used to iterate over the raw logs and unpacked data for Bisected events raised by the Colosseum contract. diff --git a/kroma-bindings/bindings/colosseum_more.go b/kroma-bindings/bindings/colosseum_more.go index 84fb34c0ae..6c2d716c29 100644 --- a/kroma-bindings/bindings/colosseum_more.go +++ b/kroma-bindings/bindings/colosseum_more.go @@ -9,11 +9,11 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const ColosseumStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"segmentsLengths\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_uint256,t_uint256)\"},{\"astId\":1003,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"challenges\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_mapping(t_uint256,t_mapping(t_address,t_struct(Challenge)1006_storage))\"},{\"astId\":1004,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"verifiedPublicInputs\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":1005,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"deletedOutputs\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_mapping(t_uint256,t_struct(CheckpointOutput)1007_storage)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_bytes32)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"bytes32[]\",\"numberOfBytes\":\"32\",\"base\":\"t_bytes32\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_struct(Challenge)1006_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct Types.Challenge)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Challenge)1006_storage\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_mapping(t_uint256,t_mapping(t_address,t_struct(Challenge)1006_storage))\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e mapping(address =\u003e struct Types.Challenge))\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_mapping(t_address,t_struct(Challenge)1006_storage)\"},\"t_mapping(t_uint256,t_struct(CheckpointOutput)1007_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e struct Types.CheckpointOutput)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_struct(CheckpointOutput)1007_storage\"},\"t_mapping(t_uint256,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_uint256\"},\"t_struct(Challenge)1006_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Types.Challenge\",\"numberOfBytes\":\"160\"},\"t_struct(CheckpointOutput)1007_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Types.CheckpointOutput\",\"numberOfBytes\":\"96\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" +const ColosseumStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"segmentsLengths\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_uint256,t_uint256)\"},{\"astId\":1003,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"challenges\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_mapping(t_uint256,t_mapping(t_address,t_struct(Challenge)1006_storage))\"},{\"astId\":1004,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"verifiedPublicInputs\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":1005,\"contract\":\"contracts/L1/Colosseum.sol:Colosseum\",\"label\":\"deletedOutputs\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_mapping(t_uint256,t_struct(CheckpointOutput)1007_storage)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_bytes32)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"bytes32[]\",\"numberOfBytes\":\"32\",\"base\":\"t_bytes32\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_struct(Challenge)1006_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct Types.Challenge)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Challenge)1006_storage\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_mapping(t_uint256,t_mapping(t_address,t_struct(Challenge)1006_storage))\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e mapping(address =\u003e struct Types.Challenge))\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_mapping(t_address,t_struct(Challenge)1006_storage)\"},\"t_mapping(t_uint256,t_struct(CheckpointOutput)1007_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e struct Types.CheckpointOutput)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_struct(CheckpointOutput)1007_storage\"},\"t_mapping(t_uint256,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_uint256\"},\"t_struct(Challenge)1006_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Types.Challenge\",\"numberOfBytes\":\"192\"},\"t_struct(CheckpointOutput)1007_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Types.CheckpointOutput\",\"numberOfBytes\":\"96\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" var ColosseumStorageLayout = new(solc.StorageLayout) -var ColosseumDeployedBin = "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c806380ab1313116100ee578063b3e7766d11610097578063d5145ebc11610071578063d5145ebc146105d7578063e39a219c146105fe578063e9371a2c14610611578063fc9d84df1461063157600080fd5b8063b3e7766d14610569578063cfb4474d14610589578063d2ee3075146105b057600080fd5b80639ded3952116100c85780639ded39521461051c578063a41483e314610543578063a6ade11f1461055657600080fd5b806380ab1313146104c25780638f3a6c88146104d55780638f86c803146104fc57600080fd5b8063461569b81161015b5780635865b607116101355780635865b607146103d05780635a6b011f146103f757806362fc00db1461049c5780636fe0e559146104af57600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610219610204366004614d98565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c610237366004614dc6565b610644565b005b6102aa61024c366004614dc6565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ed565b61021961035b366004614d98565b6106c7565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6103c36040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ed9190614e4e565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61045a610405366004614d98565b6004602052600090815260409020805460018201546002909201546001600160a01b0390911691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041684565b604080516001600160a01b03909516855260208501939093526fffffffffffffffffffffffffffffffff918216928401929092521660608201526080016101ed565b61023c6104aa366004614e61565b6107a2565b61023c6104bd366004614f85565b610e96565b61023c6104d0366004615067565b61113d565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f61050a366004614d98565b60016020526000908152604090205481565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c610551366004614d98565b611b3c565b61023c610564366004615118565b611bad565b61057c610577366004614dc6565b611e80565b6040516101ed9190615182565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61023c61060c366004614d98565b611ef8565b61062461061f366004614dc6565b612317565b6040516101ed91906151f5565b61023c61063f366004615236565b612349565b600360008381526002602090815260408083206001600160a01b0386168452909152902061067190612dd7565b6005811115610682576106826151c6565b146106b9576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106c38282612eb5565b5050565b6000427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae557856040518263ffffffff1660e01b815260040161073991815260200190565b608060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a919061529a565b604001516fffffffffffffffffffffffffffffffff1661079a9190615341565b101592915050565b6107aa613511565b6107b385613575565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610858919061529a565b6020015114610893576040517f8796efdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526004602052604090206001015482146108dd576040517f90e78fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097f9190615359565b6001600160a01b0316846001600160a01b03161415806109b957506000858152600460205260409020546001600160a01b03848116911614155b156109f0576040517f8036a47f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526003602052604090205460ff16610a38576040517f7458ca2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905587835260049182905280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002019290925590517fe6646723000000000000000000000000000000000000000000000000000000008152908101869052602481018390526001600160a01b0384811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b158015610b3757600080fd5b505af1158015610b4b573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd19190615359565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b8152600401610bfe91815260200190565b602060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f9190615376565b15610e4b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc69190615359565b6040517fab04b8aa000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038581166024830152919091169063ab04b8aa90604401600060405180830381600087803b158015610d2b57600080fd5b505af1158015610d3f573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190615359565b6040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0385811660248301528681166044830152919091169063be995dc290606401600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b505050505b836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610e8791815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610eb65750600054600160ff909116105b80610ed05750303b158015610ed0575060005460ff166001145b610f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610fbe57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60028251610fcc91906153c7565b15611003576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160005b835181101561107c57838181518110611023576110236153db565b602002602001015160016000838152602001908152602001600020819055506001848281518110611056576110566153db565b6020026020010151611068919061540a565b6110729083615421565b9150600101611008565b507f000000000000000000000000000000000000000000000000000000000000000081146110d6576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5080156106c357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b61114687613575565b600087815260026020908152604080832033845290915281209061116982612dd7565b6001830154909150611186908a906001600160a01b031683613651565b15611192575050611b33565b60058160058111156111a6576111a66151c6565b141580156111c6575060048160058111156111c3576111c36151c6565b14155b156111fd576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112388883611219611214368c90038c018c61545e565b613b70565b61122e611214368d90038d0160a08e0161545e565b8b60a08101613c12565b61126060a0880161124d6101408a018a6154ce565b61125b6101608b018b61550c565b613d24565b61128c6112716101c0890189615540565b6101808a01356101a08b013560e08c013560c08d0135613def565b60006112a960208901356112a46101408b018b6154ce565b613f23565b60008181526003602052604090205490915060ff16156112f5576040517f7458ca2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634292dc3e90611362908a908a908a908a9088906004016155f7565b602060405180830381865afa15801561137f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a39190615376565b6113d9576040517f076490f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405142815233908b907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018b90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b5919061529a565b84546020820151604051602481018f905233604482015269010000000000000000009092046001600160a01b03166064830152608482015260a481018490529091506000907f62fc00db000000000000000000000000000000000000000000000000000000009060c40160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263080b91ee926115f19291908690600401615631565b600060405180830381600087803b15801561160b57600080fd5b505af115801561161f573d6000803e3d6000fd5b50505060008d815260046020818152604092839020865181546001600160a01b039182167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178255828801516001830155848801516060909801516fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000000298169790971760029091015582517fb98debbf00000000000000000000000000000000000000000000000000000000815292517f00000000000000000000000000000000000000000000000000000000000000009096169563b98debbf9550838301945090929091908290030181865afa158015611726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174a9190615359565b6001600160a01b031663ad36d6cc8b6040518263ffffffff1660e01b815260040161177791815260200190565b602060405180830381865afa158015611794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b89190615376565b156118d4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561181b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183f9190615359565b83546040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018d90523360248201526001600160a01b0369010000000000000000009092048216604482015291169063be995dc290606401600060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506119d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119569190615359565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018c90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b1580156119b957600080fd5b505af11580156119cd573d6000803e3d6000fd5b505050505b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558d8452600280845282852033865290935290832080547fffffff000000000000000000000000000000000000000000000000000000000016815590810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190611a8090830182614d1a565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018c905260248201523360448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e664672390606401600060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b505050505050505b50505050505050565b600081815260026020908152604080832033845290915290206001810154611b779083906001600160a01b0316611b7284612dd7565b613651565b6106c3576040517f4e9d86f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bb685613575565b60008581526002602090815260408083206001600160a01b0388168452909152812090611be282612dd7565b6001830154909150611bff9088906001600160a01b031683613651565b15611c0b575050611e79565b60006001826005811115611c2157611c216151c6565b03611c3a575060018201546001600160a01b0316611c6d565b6002826005811115611c4e57611c4e6151c6565b03611c6d57508154690100000000000000000090046001600160a01b03165b336001600160a01b03821614611caf576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254600090611cc29060ff16600161566b565b9050611d4d81856002018981548110611cdd57611cdd6153db565b9060005260206000200154866002018a6001611cf99190615341565b81548110611d0957611d096153db565b9060005260206000200154898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613fde92505050565b6000611d58856140e9565b9050611db385888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d9e92508691508d9050615421565b8860040154611dad9190615341565b8461412e565b84547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8316178555611de785614158565b6040805160ff841681524260208201526001600160a01b038b16918c917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611e38856141f6565b611e73576040516001600160a01b038a16908b907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b50505050505b5050505050565b60008281526002602081815260408084206001600160a01b0386168552825292839020909101805483518184028101840190945280845260609392830182828015611eea57602002820191906000526020600020905b815481526020019060010190808311611ed6575b505050505090505b92915050565b611f00613511565b611f0981613575565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fae919061529a565b6020810151909150611fec576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101839052600060248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b15801561209657600080fd5b505af11580156120aa573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121309190615359565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161215d91815260200190565b602060405180830381865afa15801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190615376565b156122cb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122259190615359565b81516040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152918216604482015291169063be995dc290606401600060405180830381600087803b1580156122b257600080fd5b505af11580156122c6573d6000803e3d6000fd5b505050505b80600001516001600160a01b0316827fa620f04b65b1d538481626bf41dc5ee321b5c48e0cc1a7daae213cf7c254b54e4260405161230b91815260200190565b60405180910390a35050565b60008281526002602090815260408083206001600160a01b0385168452909152812061234290612dd7565b9392505050565b84600003612383576040517f2604872b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124059190615359565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b815260040161243291815260200190565b602060405180830381865afa15801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190615376565b156125b3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa9190615359565b6040517f9f8a13d70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690639f8a13d790602401602060405180830381865afa158015612559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257d9190615376565b6125b3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260026020908152604080832033845290915290208054600160ff909116106126375760036125e582612dd7565b60058111156125f6576125f66151c6565b1461262d576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126378633612eb5565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156126b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126dc919061529a565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff166127219190615341565b1015612759576040517fa0388b4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020810151612794576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516001600160a01b031633036127d7576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85158015906127e65750844015155b156128255785854014612825576040517f72f1f56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae55761286160018b61540a565b6040518263ffffffff1660e01b815260040161287f91815260200190565b608060405180830381865afa15801561289c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c0919061529a565b602081015190915061292e576129296001868660008181106128e4576128e46153db565b905060200201358460200151888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613fde92505050565b612976565b612976600182602001518460200151888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613fde92505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f89190615359565b6001600160a01b031663ad36d6cc896040518263ffffffff1660e01b8152600401612a2591815260200190565b602060405180830381865afa158015612a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a669190615376565b15612b66577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aed9190615359565b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690638c1516c790602401600060405180830381600087803b158015612b4957600080fd5b505af1158015612b5d573d6000803e3d6000fd5b50505050612c64565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be89190615359565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018a90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b158015612c4b57600080fd5b505af1158015612c5f573d6000803e3d6000fd5b505050505b612d038386868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050506060860151612cdd91507f0000000000000000000000000000000000000000000000000000000000000000906fffffffffffffffffffffffffffffffff1661540a565b7f000000000000000000000000000000000000000000000000000000000000000061412e565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055612d7b83614158565b815160405142815233916001600160a01b0316908a907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a45050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612df157506000919050565b8154600090612e059060029060ff16615690565b835460ff91909116159150610100900467ffffffffffffffff16421115612e8a578015612e355750600392915050565b8254612e71907f000000000000000000000000000000000000000000000000000000000000000090610100900467ffffffffffffffff16615341565b421115612e815750600392915050565b50600492915050565b612e93836141f6565b612ea05750600592915050565b80612eac576002612342565b60019392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612f3590830182614d1a565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612f8391815260200190565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300d9190615359565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161303a91815260200190565b602060405180830381865afa158015613057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307b9190615376565b15613225577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131029190615359565b6001600160a01b031663be995dc2837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ea09a8866040518263ffffffff1660e01b815260040161315f91815260200190565b602060405180830381865afa15801561317c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a09190615359565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b039081166024830152841660448201526064015b600060405180830381600087803b15801561320957600080fd5b505af115801561321d573d6000803e3d6000fd5b505050505050565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa1580156132a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c79190615376565b1561343f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561332a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334e9190615359565b6001600160a01b03166336b8346983837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ea09a8876040518263ffffffff1660e01b81526004016133ac91815260200190565b602060405180830381865afa1580156133c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ed9190615359565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526001600160a01b0391821660248401521660448201526064016131ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561349d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c19190615359565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d906044016131ef565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614613573576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190615376565b1561364e576040517f5c9d9a2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156136d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f8919061529a565b602001511461370957506000612342565b336001600160a01b0384161461374b576040517f21e62a3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600581111561375f5761375f6151c6565b148061377c5750600382600581111561377a5761377a6151c6565b145b156137b3576040517ff691b6e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055919061382a90830182614d1a565b50600060038201819055600490910155604051428152339085907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f39190615359565b6001600160a01b031663ad36d6cc856040518263ffffffff1660e01b815260040161392091815260200190565b602060405180830381865afa15801561393d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139619190615376565b15613a61577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e89190615359565b6040517fa83871720000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03919091169063a838717290602401600060405180830381600087803b158015613a4457600080fd5b505af1158015613a58573d6000803e3d6000fd5b50505050613b66565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae39190615359565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101869052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b158015613b4d57600080fd5b505af1158015613b61573d6000803e3d6000fd5b505050505b5060019392505050565b6080810151600090613bd257815160208084015160408086015160608701519151613bb595949192910193845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b81516020808401516040808601516060808801516080808a01518551978801989098529386019490945284015282015260a081019190915260c001613bb5565b83856002018781548110613c2857613c286153db565b906000526020600020015414613c6a576040517f224dff3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613c73856141f6565b613cd9578260028601613c87886001615341565b81548110613c9757613c976153db565b906000526020600020015403613cd9576040517f87c1943200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808201351561321d57806060013582608001351461321d576040517f3f126fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001358260e0013514613d65576040517f4d9e774000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610180830135613d9057613d8b613d7d84615730565b613d868461588a565b61420a565b613daa565b613daa613d9c84615730565b613da58461588a565b6142ae565b905080846060013514613de9576040517fb033950600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312e64a7290613eac907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401615a2b565b602060405180830381865afa158015613ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eed9190615376565b611b33576040517ff35959c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060607f0000000000000000000000000000000000000000000000000000000000000000613f56610120850185615540565b90501015613fc357613fc07f0000000000000000000000000000000000000000000000000000000000000000613f90610120860186615540565b613fbb91507f000000000000000000000000000000000000000000000000000000000000000061540a565b6143bf565b90505b613fd684613fd085615730565b8361444b565b949350505050565b805160016000613fee8288615b06565b60ff1681526020019081526020016000205414614037576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008151811061404a5761404a6153db565b6020026020010151831461408a576040517f224dff3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060018251614099919061540a565b815181106140a9576140a96153db565b60200260200101518203613de9576040517f87c1943200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000906001908190839061410390839060ff16615b06565b60ff1681526020019081526020016000205461411f919061540a565b8260030154611ef29190615b29565b82516141439060028601906020860190614d38565b50600484019190915560039092019190915550565b614161816141f6565b6141cc5761418f7f000000000000000000000000000000000000000000000000000000000000000042615341565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b61418f7f000000000000000000000000000000000000000000000000000000000000000042615341565b60006001614203836140e9565b1192915050565b6040805160118082526102408201909252600091829190816020015b60608152602001906001900390816142265790505090506142488484836144bd565b61427784610100015160405160200161426391815260200190565b604051602081830303815290604052614770565b8160108151811061428a5761428a6153db565b602002602001018190525061429e816147db565b8051906020012091505092915050565b6040805160148082526102a08201909252600091829190816020015b60608152602001906001900390816142ca5790505090506142ec8484836144bd565b61430784610100015160405160200161426391815260200190565b8160108151811061431a5761431a6153db565b602002602001018190525061433d84610140015167ffffffffffffffff16614806565b81601181518110614350576143506153db565b602002602001018190525061437384610160015167ffffffffffffffff16614806565b81601281518110614386576143866153db565b60200260200101819052506143ac84610180015160405160200161426391815260200190565b8160138151811061428a5761428a6153db565b606060008267ffffffffffffffff8111156143dc576143dc614eb3565b604051908082528060200260200182016040528015614405578160200160208202803683370190505b50905060005b838110156144435784828281518110614426576144266153db565b60209081029190910101528061443b81615b3d565b91505061440b565b509392505050565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c60405160200161449e9c9b9a99989796959493929190615ba8565b6040516020818303038152906040528051906020012090509392505050565b6144d7836020015160405160200161426391815260200190565b816000815181106144ea576144ea6153db565b602002602001018190525081600001518160018151811061450d5761450d6153db565b6020026020010181905250816020015181600281518110614530576145306153db565b60200260200101819052506145558360e0015160405160200161426391815260200190565b81600381518110614568576145686153db565b602002602001018190525061458d8360c0015160405160200161426391815260200190565b816004815181106145a0576145a06153db565b60200260200101819052508160400151816005815181106145c3576145c36153db565b60200260200101819052508160600151816006815181106145e6576145e66153db565b6020026020010181905250816080015181600781518110614609576146096153db565b602002602001018190525061462b836060015167ffffffffffffffff16614806565b8160088151811061463e5761463e6153db565b6020026020010181905250614660836080015167ffffffffffffffff16614806565b81600981518110614673576146736153db565b60200260200101819052508160a0015181600a81518110614696576146966153db565b60200260200101819052506146b8836040015167ffffffffffffffff16614806565b81600b815181106146cb576146cb6153db565b60200260200101819052508160c0015181600c815181106146ee576146ee6153db565b60200260200101819052508160e0015181600d81518110614711576147116153db565b602002602001018190525081610100015181600e81518110614735576147356153db565b602002602001018190525061474d8360a00151614806565b81600f81518110614760576147606153db565b6020026020010181905250505050565b60608151600114801561479d5750608082600081518110614793576147936153db565b016020015160f81c105b156147a6575090565b6147b282516080614819565b826040516020016147c4929190615c61565b60405160208183030381529060405290505b919050565b60606147e682614a0d565b90506147f4815160c0614819565b816040516020016147c4929190615c61565b6060611ef261481483614b42565b614770565b60606038831015614897576040805160018082528183019092529060208201818036833701905050905061484d828461566b565b60f81b81600081518110614863576148636153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611ef2565b600060015b6148a68186615b29565b156148cc57816148b581615b3d565b92506148c5905061010082615421565b905061489c565b6148d7826001615341565b67ffffffffffffffff8111156148ef576148ef614eb3565b6040519080825280601f01601f191660200182016040528015614919576020820181803683370190505b509250614926848361566b565b61493190603761566b565b60f81b83600081518110614947576149476153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111614a055761010061498f828461540a565b61499b90610100615db0565b6149a59087615b29565b6149af91906153c7565b60f81b8382815181106149c4576149c46153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806149fd81615b3d565b91505061497b565b505092915050565b60608151600003614a2c57505060408051600081526020810190915290565b6000805b8351811015614a7357838181518110614a4b57614a4b6153db565b60200260200101515182614a5f9190615341565b915080614a6b81615b3d565b915050614a30565b8167ffffffffffffffff811115614a8c57614a8c614eb3565b6040519080825280601f01601f191660200182016040528015614ab6576020820181803683370190505b50925060009050602083015b8451821015614b3a576000858381518110614adf57614adf6153db565b602002602001015190506000602082019050614afd83828451614c9f565b868481518110614b0f57614b0f6153db565b60200260200101515183614b239190615341565b925050508180614b3290615b3d565b925050614ac2565b505050919050565b6060600082604051602001614b5991815260200190565b604051602081830303815290604052905060005b6020811015614bc857818181518110614b8857614b886153db565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003614bc85780614bc081615b3d565b915050614b6d565b614bd381602061540a565b67ffffffffffffffff811115614beb57614beb614eb3565b6040519080825280601f01601f191660200182016040528015614c15576020820181803683370190505b50925060005b8351811015614b3a578282614c2f81615b3d565b935081518110614c4157614c416153db565b602001015160f81c60f81b848281518110614c5e57614c5e6153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080614c9781615b3d565b915050614c1b565b8282825b60208110614cdb5781518352614cba602084615341565b9250614cc7602083615341565b9150614cd460208261540a565b9050614ca3565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b508054600082559060005260206000209081019061364e9190614d83565b828054828255906000526020600020908101928215614d73579160200282015b82811115614d73578251825591602001919060010190614d58565b50614d7f929150614d83565b5090565b5b80821115614d7f5760008155600101614d84565b600060208284031215614daa57600080fd5b5035919050565b6001600160a01b038116811461364e57600080fd5b60008060408385031215614dd957600080fd5b823591506020830135614deb81614db1565b809150509250929050565b60005b83811015614e11578181015183820152602001614df9565b83811115613de95750506000910152565b60008151808452614e3a816020860160208601614df6565b601f01601f19169290920160200192915050565b6020815260006123426020830184614e22565b600080600080600060a08688031215614e7957600080fd5b853594506020860135614e8b81614db1565b93506040860135614e9b81614db1565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715614f0657614f06614eb3565b60405290565b604051610120810167ffffffffffffffff81118282101715614f0657614f06614eb3565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f5957614f59614eb3565b604052919050565b600067ffffffffffffffff821115614f7b57614f7b614eb3565b5060051b60200190565b60006020808385031215614f9857600080fd5b823567ffffffffffffffff811115614faf57600080fd5b8301601f81018513614fc057600080fd5b8035614fd3614fce82614f61565b614f30565b81815260059190911b82018301908381019087831115614ff257600080fd5b928401925b8284101561501057833582529284019290840190614ff7565b979650505050505050565b60008083601f84011261502d57600080fd5b50813567ffffffffffffffff81111561504557600080fd5b6020830191508360208260051b850101111561506057600080fd5b9250929050565b600080600080600080600060a0888a03121561508257600080fd5b8735965060208801359550604088013567ffffffffffffffff808211156150a857600080fd5b908901906101e0828c0312156150bd57600080fd5b909550606089013590808211156150d357600080fd5b6150df8b838c0161501b565b909650945060808a01359150808211156150f857600080fd5b506151058a828b0161501b565b989b979a50959850939692959293505050565b60008060008060006080868803121561513057600080fd5b85359450602086013561514281614db1565b935060408601359250606086013567ffffffffffffffff81111561516557600080fd5b6151718882890161501b565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b818110156151ba5783518352928401929184019160010161519e565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310615230577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060008060006080868803121561524e57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561516557600080fd5b80516fffffffffffffffffffffffffffffffff811681146147d657600080fd5b6000608082840312156152ac57600080fd5b6040516080810181811067ffffffffffffffff821117156152cf576152cf614eb3565b60405282516152dd81614db1565b8152602083810151908201526152f56040840161527a565b60408201526153066060840161527a565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561535457615354615312565b500190565b60006020828403121561536b57600080fd5b815161234281614db1565b60006020828403121561538857600080fd5b8151801515811461234257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826153d6576153d6615398565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008282101561541c5761541c615312565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561545957615459615312565b500290565b600060a0828403121561547057600080fd5b60405160a0810181811067ffffffffffffffff8211171561549357615493614eb3565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6183360301811261550257600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261550257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261557557600080fd5b83018035915067ffffffffffffffff82111561559057600080fd5b6020019150600581901b360382131561506057600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156155da57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60608152600061560b6060830187896155a8565b828103602084015261561e8186886155a8565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff831660208201526060604082015260006156626060830184614e22565b95945050505050565b600060ff821660ff84168060ff0382111561568857615688615312565b019392505050565b600060ff8316806156a3576156a3615398565b8060ff84160691505092915050565b803567ffffffffffffffff811681146147d657600080fd5b600082601f8301126156db57600080fd5b813560206156eb614fce83614f61565b82815260059290921b8401810191818101908684111561570a57600080fd5b8286015b84811015615725578035835291830191830161570e565b509695505050505050565b60006101a0823603121561574357600080fd5b61574b614ee2565b8235815260208301356020820152615765604084016156b2565b6040820152615776606084016156b2565b6060820152615787608084016156b2565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff8111156157d257600080fd5b6157de368287016156ca565b8284015250506101406157f28185016156b2565b908201526101606158048482016156b2565b9082015261018092830135928101929092525090565b600082601f83011261582b57600080fd5b813567ffffffffffffffff81111561584557615845614eb3565b6158586020601f19601f84011601614f30565b81815284602083860101111561586d57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120823603121561589d57600080fd5b6158a5614f0c565b823567ffffffffffffffff808211156158bd57600080fd5b6158c93683870161581a565b835260208501359150808211156158df57600080fd5b6158eb3683870161581a565b6020840152604085013591508082111561590457600080fd5b6159103683870161581a565b6040840152606085013591508082111561592957600080fd5b6159353683870161581a565b6060840152608085013591508082111561594e57600080fd5b61595a3683870161581a565b608084015260a085013591508082111561597357600080fd5b61597f3683870161581a565b60a084015260c085013591508082111561599857600080fd5b6159a43683870161581a565b60c084015260e08501359150808211156159bd57600080fd5b6159c93683870161581a565b60e0840152610100915081850135818111156159e457600080fd5b6159f03682880161581a565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b85815260006020608081840152615a456080840188614e22565b8381036040850152858152818101600587901b820183018860005b89811015615aed57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112615aa357600080fd5b8b01868101903567ffffffffffffffff811115615abf57600080fd5b803603821315615ace57600080fd5b615ad9858284615a00565b958801959450505090850190600101615a60565b5050809450505050508260608301529695505050505050565b600060ff821660ff841680821015615b2057615b20615312565b90039392505050565b600082615b3857615b38615398565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615b6e57615b6e615312565b5060010190565b60008151602080840160005b83811015615b9d57815187529582019590820190600101615b81565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d8830152615c4f615c4960da840186615b75565b84615b75565b9e9d5050505050505050505050505050565b60008351615c73818460208801614df6565b835190830190615c87818360208801614df6565b01949350505050565b600181815b80851115615ce957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615ccf57615ccf615312565b80851615615cdc57918102915b93841c9390800290615c95565b509250929050565b600082615d0057506001611ef2565b81615d0d57506000611ef2565b8160018114615d235760028114615d2d57615d49565b6001915050611ef2565b60ff841115615d3e57615d3e615312565b50506001821b611ef2565b5060208310610133831016604e8410600b8410161715615d6c575081810a611ef2565b615d768383615c90565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615da857615da8615312565b029392505050565b60006123428383615cf156fea164736f6c634300080f000a" +var ColosseumDeployedBin = "0x608060405234801561001057600080fd5b50600436106101975760003560e01c80638f3a6c88116100e3578063cfb4474d1161008c578063e9371a2c11610066578063e9371a2c14610593578063edbb4fb2146105b3578063fc9d84df146105c657600080fd5b8063cfb4474d14610532578063d2ee307514610559578063e39a219c1461058057600080fd5b8063a6ade11f116100bd578063a6ade11f146104ec578063b3e7766d146104ff578063cbdd28141461051f57600080fd5b80638f3a6c88146104925780638f86c803146104b9578063a41483e3146104d957600080fd5b8063461569b81161014557806362fc00db1161011f57806362fc00db146104455780636506e837146104585780636fe0e5591461047f57600080fd5b8063461569b81461034457806354fd4d50146103575780635a6b011f146103a057600080fd5b80632df27fa5116101765780632df27fa51461022857806336086417146102e85780634394c5841461030f57600080fd5b80621c2ff61461019c5780631be4e27e146101e05780631db1b67214610213575b600080fd5b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6102036101ee366004613fe4565b60036020526000908152604090205460ff1681565b60405190151581526020016101d7565b610226610221366004614012565b6105d9565b005b61029a610236366004614012565b60026020908152600092835260408084209091529082529020805460018201546003830154600484015460059094015460ff84169467ffffffffffffffff610100860416946001600160a01b03690100000000000000000090910481169416929187565b6040805160ff909816885267ffffffffffffffff90961660208801526001600160a01b0394851695870195909552929091166060850152608084015260a083015260c082015260e0016101d7565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b6103367f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101d7565b610203610352366004613fe4565b61065c565b6103936040518060400160405280600581526020017f322e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101d791906140ad565b6104036103ae366004613fe4565b6004602052600090815260409020805460018201546002909201546001600160a01b0390911691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041684565b604080516001600160a01b03909516855260208501939093526fffffffffffffffffffffffffffffffff918216928401929092521660608201526080016101d7565b6102266104533660046140c0565b610737565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b61022661048d3660046142b3565b610e2b565b6103367f000000000000000000000000000000000000000000000000000000000000000081565b6103366104c7366004613fe4565b60016020526000908152604090205481565b6102266104e7366004613fe4565b6110d2565b6102266104fa36600461433c565b611143565b61051261050d366004614012565b611416565b6040516101d791906143e1565b61022661052d3660046143f4565b61148d565b6103367f000000000000000000000000000000000000000000000000000000000000000081565b6103367f000000000000000000000000000000000000000000000000000000000000000081565b61022661058e366004613fe4565b6114bd565b6105a66105a1366004614012565b6118dc565b6040516101d7919061447a565b6102266105c13660046144bb565b61190e565b6102266105d4366004614507565b61192c565b600360008381526002602090815260408083206001600160a01b03861684529091529020610606906123cb565b60058111156106175761061761444b565b1461064e576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61065882826124a9565b5050565b6000427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a25ae557856040518263ffffffff1660e01b81526004016106ce91815260200190565b608060405180830381865afa1580156106eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070f9190614570565b604001516fffffffffffffffffffffffffffffffff1661072f9190614617565b101592915050565b61073f612b0d565b61074885612b71565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156107c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ed9190614570565b6020015114610828576040517f8796efdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000858152600460205260409020600101548214610872576040517f90e78fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0ea09a890602401602060405180830381865afa1580156108f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610914919061462f565b6001600160a01b0316846001600160a01b031614158061094e57506000858152600460205260409020546001600160a01b03848116911614155b15610985576040517f8036a47f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526003602052604090205460ff166109cd576040517fe1cdd3ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905587835260049182905280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002019290925590517fe6646723000000000000000000000000000000000000000000000000000000008152908101869052602481018390526001600160a01b0384811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b158015610acc57600080fd5b505af1158015610ae0573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b66919061462f565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b8152600401610b9391815260200190565b602060405180830381865afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd4919061464c565b15610de0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5b919061462f565b6040517fab04b8aa000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038581166024830152919091169063ab04b8aa90604401600060405180830381600087803b158015610cc057600080fd5b505af1158015610cd4573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5a919061462f565b6040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0385811660248301528681166044830152919091169063be995dc290606401600060405180830381600087803b158015610dc757600080fd5b505af1158015610ddb573d6000803e3d6000fd5b505050505b836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610e1c91815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610e4b5750600054600160ff909116105b80610e655750303b158015610e65575060005460ff166001145b610ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f5357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60028251610f61919061469d565b15610f98576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160005b835181101561101157838181518110610fb857610fb86146b1565b602002602001015160016000838152602001908152602001600020819055506001848281518110610feb57610feb6146b1565b6020026020010151610ffd91906146e0565b61100790836146f7565b9150600101610f9d565b507f0000000000000000000000000000000000000000000000000000000000000000811461106b576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50801561065857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008181526002602090815260408083203384529091529020600181015461110d9083906001600160a01b0316611108846123cb565b612c4d565b610658576040517f4e9d86f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114c85612b71565b60008581526002602090815260408083206001600160a01b0388168452909152812090611178826123cb565b60018301549091506111959088906001600160a01b031683612c4d565b156111a157505061140f565b600060018260058111156111b7576111b761444b565b036111d0575060018201546001600160a01b0316611203565b60028260058111156111e4576111e461444b565b0361120357508154690100000000000000000090046001600160a01b03165b336001600160a01b03821614611245576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82546000906112589060ff166001614734565b90506112e381856002018981548110611273576112736146b1565b9060005260206000200154866002018a600161128f9190614617565b8154811061129f5761129f6146b1565b906000526020600020015489898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061317392505050565b60006112ee8561327e565b90506113498588888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061133492508691508d90506146f7565b88600401546113439190614617565b846132c9565b84547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff831617855561137d856132f3565b6040805160ff841681524260208201526001600160a01b038b16918c917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a36113ce85613391565b611409576040516001600160a01b038a16908b907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b50505050505b5050505050565b60008281526002602081815260408084206001600160a01b038616855282529283902090910180548351818402810184019094528084526060939283018282801561148057602002820191906000526020600020905b81548152602001906001019080831161146c575b5050505050905092915050565b60408051808201909152606080825260208201526114b7848460006114b186614b51565b856133a5565b50505050565b6114c5612b0d565b6114ce81612b71565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115739190614570565b60208101519091506115b1576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101839052600060248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f5919061462f565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161172291815260200190565b602060405180830381865afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611763919061464c565b15611890577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ea919061462f565b81516040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152918216604482015291169063be995dc290606401600060405180830381600087803b15801561187757600080fd5b505af115801561188b573d6000803e3d6000fd5b505050505b80600001516001600160a01b0316827fa620f04b65b1d538481626bf41dc5ee321b5c48e0cc1a7daae213cf7c254b54e426040516118d091815260200190565b60405180910390a35050565b60008281526002602090815260408083206001600160a01b03851684529091528120611907906123cb565b9392505050565b611916613e01565b6114b7848460018461192787614c98565b6133a5565b84600003611966576040517f2604872b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e8919061462f565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b8152600401611a1591815260200190565b602060405180830381865afa158015611a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a56919061464c565b15611b96577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add919061462f565b6040517f9f8a13d70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690639f8a13d790602401602060405180830381865afa158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b60919061464c565b611b96576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260026020908152604080832033845290915290208054600160ff90911610611c1a576003611bc8826123cb565b6005811115611bd957611bd961444b565b14611c10576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c1a86336124a9565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbf9190614570565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff16611d049190614617565b1015611d3c576040517fa0388b4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020810151611d77576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516001600160a01b03163303611dba576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8515801590611dc95750844015155b15611e085785854014611e08576040517f72f1f56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae557611e4460018b6146e0565b6040518263ffffffff1660e01b8152600401611e6291815260200190565b608060405180830381865afa158015611e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea39190614570565b6020810151909150611f1157611f0c600186866000818110611ec757611ec76146b1565b90506020020135846020015188888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061317392505050565b611f59565b611f5960018260200151846020015188888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061317392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdb919061462f565b6001600160a01b031663ad36d6cc896040518263ffffffff1660e01b815260040161200891815260200190565b602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061464c565b15612149577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d0919061462f565b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690638c1516c790602401600060405180830381600087803b15801561212c57600080fd5b505af1158015612140573d6000803e3d6000fd5b50505050612247565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb919061462f565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018a90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b15801561222e57600080fd5b505af1158015612242573d6000803e3d6000fd5b505050505b6122e683868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060608601516122c091507f0000000000000000000000000000000000000000000000000000000000000000906fffffffffffffffffffffffffffffffff166146e0565b7f00000000000000000000000000000000000000000000000000000000000000006132c9565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff00909116176001908117845583810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905561236090436146e0565b40600584015561236f836132f3565b815160405142815233916001600160a01b0316908a907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a45050505050505050565b6001600160a01b03163b151590565b8054600090600160ff90911610156123e557506000919050565b81546000906123f99060029060ff16614d1e565b835460ff91909116159150610100900467ffffffffffffffff1642111561247e5780156124295750600392915050565b8254612465907f000000000000000000000000000000000000000000000000000000000000000090610100900467ffffffffffffffff16614617565b4211156124755750600392915050565b50600492915050565b61248783613391565b6124945750600592915050565b806124a0576002611907565b60019392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055919061252990830182613e28565b6003820160009055600482016000905560058201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff0514260405161257f91815260200190565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612609919061462f565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161263691815260200190565b602060405180830381865afa158015612653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612677919061464c565b15612821577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fe919061462f565b6001600160a01b031663be995dc2837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ea09a8866040518263ffffffff1660e01b815260040161275b91815260200190565b602060405180830381865afa158015612778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279c919061462f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b039081166024830152841660448201526064015b600060405180830381600087803b15801561280557600080fd5b505af1158015612819573d6000803e3d6000fd5b505050505050565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa15801561289f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c3919061464c565b15612a3b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294a919061462f565b6001600160a01b03166336b8346983837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ea09a8876040518263ffffffff1660e01b81526004016129a891815260200190565b602060405180830381865afa1580156129c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e9919061462f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526001600160a01b0391821660248401521660448201526064016127eb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abd919061462f565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d906044016127eb565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b6f576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c13919061464c565b15612c4a576040517f5c9d9a2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015612cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf49190614570565b6020015114612d0557506000611907565b336001600160a01b03841614612d47576040517f21e62a3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826005811115612d5b57612d5b61444b565b1480612d7857506003826005811115612d7657612d7661444b565b145b15612daf576040517ff691b6e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612e2690830182613e28565b5060006003820181905560048201819055600590910155604051428152339085907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef6919061462f565b6001600160a01b031663ad36d6cc856040518263ffffffff1660e01b8152600401612f2391815260200190565b602060405180830381865afa158015612f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f64919061464c565b15613064577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb919061462f565b6040517fa83871720000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03919091169063a838717290602401600060405180830381600087803b15801561304757600080fd5b505af115801561305b573d6000803e3d6000fd5b50505050613169565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e6919061462f565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101869052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b15801561315057600080fd5b505af1158015613164573d6000803e3d6000fd5b505050505b5060019392505050565b8051600160006131838288614d40565b60ff16815260200190815260200160002054146131cc576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000815181106131df576131df6146b1565b6020026020010151831461321f576040517f224dff3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001825161322e91906146e0565b8151811061323e5761323e6146b1565b602002602001015182036114b7576040517f87c1943200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000906001908190839061329890839060ff16614d40565b60ff168152602001908152602001600020546132b491906146e0565b82600301546132c39190614d63565b92915050565b82516132de9060028601906020860190613e46565b50600484019190915560039092019190915550565b6132fc81613391565b6133675761332a7f000000000000000000000000000000000000000000000000000000000000000042614617565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b61332a7f000000000000000000000000000000000000000000000000000000000000000042614617565b6000600161339e8361327e565b1192915050565b6133ae85612b71565b60008581526002602090815260408083203384529091528120906133d1826123cb565b60018301549091506133ee9088906001600160a01b031683612c4d565b156133fa57505061140f565b600581600581111561340e5761340e61444b565b1415801561342e5750600481600581111561342b5761342b61444b565b14155b15613465576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600201878154811061347c5761347c6146b1565b90600052602060002001549050600061349484613391565b6134c557600284016134a7896001614617565b815481106134b7576134b76146b1565b906000526020600020015490505b600087156135835760058501546040517fe674f0e00000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e674f0e09161353b918a9188918891600401614d77565b602060405180830381865afa158015613558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357c9190614dec565b9050613630565b6040517f3955d7a10000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633955d7a1906135ec908a908790879060040161503e565b602060405180830381865afa158015613609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362d9190614dec565b90505b60008181526003602052604090205460ff1615613679576040517fd0cea89800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405142815233908b907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018b90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015613731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137559190614570565b86546020820151604051602481018f905233604482015269010000000000000000009092046001600160a01b03166064830152608482015260a481018490529091506000907f62fc00db000000000000000000000000000000000000000000000000000000009060c401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263080b91ee926138af92919086906004016151bd565b600060405180830381600087803b1580156138c957600080fd5b505af11580156138dd573d6000803e3d6000fd5b50505060008d815260046020818152604092839020865181546001600160a01b039182167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178255828801516001830155848801516060909801516fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000000298169790971760029091015582517fb98debbf00000000000000000000000000000000000000000000000000000000815292517f00000000000000000000000000000000000000000000000000000000000000009096169563b98debbf9550838301945090929091908290030181865afa1580156139e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a08919061462f565b6001600160a01b031663ad36d6cc8b6040518263ffffffff1660e01b8152600401613a3591815260200190565b602060405180830381865afa158015613a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a76919061464c565b15613b92577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613afd919061462f565b85546040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018d90523360248201526001600160a01b0369010000000000000000009092048216604482015291169063be995dc290606401600060405180830381600087803b158015613b7557600080fd5b505af1158015613b89573d6000803e3d6000fd5b50505050613c90565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c14919061462f565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018c90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b158015613c7757600080fd5b505af1158015613c8b573d6000803e3d6000fd5b505050505b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558d8452600280845282852033865290935290832080547fffffff000000000000000000000000000000000000000000000000000000000016815590810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190613d3e90830182613e28565b50600060038201819055600480830182905560059092018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018c905260248201523360448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e664672390606401600060405180830381600087803b158015613ddd57600080fd5b505af1158015613df1573d6000803e3d6000fd5b5050505050505050505050505050565b6040518060600160405280613e14613e91565b815260200160608152602001606081525090565b5080546000825590600052602060002090810190612c4a9190613fcf565b828054828255906000526020600020908101928215613e81579160200282015b82811115613e81578251825591602001919060010190613e66565b50613e8d929150613fcf565b5090565b604080516101808101909152600060e08201818152610100830182905261012083018290526101408301829052610160830191909152819081526040805160a081018252600080825260208281018290529282018190526060820181905260808201529101908152604080516101a0810182526000808252602082810182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e083018290526101008301829052610120830152610140820181905261016082018190526101808201529101908152602001613fb66040518061012001604052806060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b8152600060208201819052604082015260609081015290565b5b80821115613e8d5760008155600101613fd0565b600060208284031215613ff657600080fd5b5035919050565b6001600160a01b0381168114612c4a57600080fd5b6000806040838503121561402557600080fd5b82359150602083013561403781613ffd565b809150509250929050565b6000815180845260005b818110156140685760208185018101518683018201520161404c565b8181111561407a576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119076020830184614042565b600080600080600060a086880312156140d857600080fd5b8535945060208601356140ea81613ffd565b935060408601356140fa81613ffd565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff8111828210171561416557614165614112565b60405290565b604051610120810167ffffffffffffffff8111828210171561416557614165614112565b6040516060810167ffffffffffffffff8111828210171561416557614165614112565b60405160e0810167ffffffffffffffff8111828210171561416557614165614112565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561421c5761421c614112565b604052919050565b600067ffffffffffffffff82111561423e5761423e614112565b5060051b60200190565b600082601f83011261425957600080fd5b8135602061426e61426983614224565b6141d5565b82815260059290921b8401810191818101908684111561428d57600080fd5b8286015b848110156142a85780358352918301918301614291565b509695505050505050565b6000602082840312156142c557600080fd5b813567ffffffffffffffff8111156142dc57600080fd5b6142e884828501614248565b949350505050565b60008083601f84011261430257600080fd5b50813567ffffffffffffffff81111561431a57600080fd5b6020830191508360208260051b850101111561433557600080fd5b9250929050565b60008060008060006080868803121561435457600080fd5b85359450602086013561436681613ffd565b935060408601359250606086013567ffffffffffffffff81111561438957600080fd5b614395888289016142f0565b969995985093965092949392505050565b600081518084526020808501945080840160005b838110156143d6578151875295820195908201906001016143ba565b509495945050505050565b60208152600061190760208301846143a6565b60008060006060848603121561440957600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561442e57600080fd5b84016060818703121561444057600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600683106144b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806000606084860312156144d057600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156144f557600080fd5b84016040818703121561444057600080fd5b60008060008060006080868803121561451f57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561438957600080fd5b80516fffffffffffffffffffffffffffffffff8116811461456b57600080fd5b919050565b60006080828403121561458257600080fd5b6040516080810181811067ffffffffffffffff821117156145a5576145a5614112565b60405282516145b381613ffd565b8152602083810151908201526145cb6040840161454b565b60408201526145dc6060840161454b565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561462a5761462a6145e8565b500190565b60006020828403121561464157600080fd5b815161190781613ffd565b60006020828403121561465e57600080fd5b8151801515811461190757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826146ac576146ac61466e565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156146f2576146f26145e8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561472f5761472f6145e8565b500290565b600060ff821660ff84168060ff03821115614751576147516145e8565b019392505050565b600060a0828403121561476b57600080fd5b60405160a0810181811067ffffffffffffffff8211171561478e5761478e614112565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b803567ffffffffffffffff8116811461456b57600080fd5b60006101a082840312156147f457600080fd5b6147fc614141565b90508135815260208201356020820152614818604083016147c9565b6040820152614829606083016147c9565b606082015261483a608083016147c9565b608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013567ffffffffffffffff81111561488557600080fd5b61489185828601614248565b8284015250506101406148a58184016147c9565b908201526101606148b78382016147c9565b818301525061018080830135818301525092915050565b600082601f8301126148df57600080fd5b813567ffffffffffffffff8111156148f9576148f9614112565b61492a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016141d5565b81815284602083860101111561493f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120828403121561496f57600080fd5b61497761416b565b9050813567ffffffffffffffff8082111561499157600080fd5b61499d858386016148ce565b835260208401359150808211156149b357600080fd5b6149bf858386016148ce565b602084015260408401359150808211156149d857600080fd5b6149e4858386016148ce565b604084015260608401359150808211156149fd57600080fd5b614a09858386016148ce565b60608401526080840135915080821115614a2257600080fd5b614a2e858386016148ce565b608084015260a0840135915080821115614a4757600080fd5b614a53858386016148ce565b60a084015260c0840135915080821115614a6c57600080fd5b614a78858386016148ce565b60c084015260e0840135915080821115614a9157600080fd5b614a9d858386016148ce565b60e084015261010091508184013581811115614ab857600080fd5b614ac4868287016148ce565b8385015250505092915050565b600082601f830112614ae257600080fd5b81356020614af261426983614224565b82815260059290921b84018101918181019086841115614b1157600080fd5b8286015b848110156142a857803567ffffffffffffffff811115614b355760008081fd5b614b438986838b01016148ce565b845250918301918301614b15565b600060608236031215614b6357600080fd5b614b6b61418f565b823567ffffffffffffffff80821115614b8357600080fd5b81850191506101e08236031215614b9957600080fd5b614ba16141b2565b614bab3684614759565b8152614bba3660a08501614759565b602082015261014083013582811115614bd257600080fd5b614bde368286016147e1565b60408301525061016083013582811115614bf757600080fd5b614c033682860161495c565b60608301525061018083013560808201526101a083013560a08201526101c083013582811115614c3257600080fd5b614c3e36828601614ad1565b60c08301525083526020850135915080821115614c5a57600080fd5b614c6636838701614248565b60208401526040850135915080821115614c7f57600080fd5b50614c8c36828601614248565b60408301525092915050565b600060408236031215614caa57600080fd5b6040516040810167ffffffffffffffff8282108183111715614cce57614cce614112565b816040528435915080821115614ce357600080fd5b614cef368387016148ce565b83526020850135915080821115614d0557600080fd5b50614d12368286016148ce565b60208301525092915050565b600060ff831680614d3157614d3161466e565b8060ff84160691505092915050565b600060ff821660ff841680821015614d5a57614d5a6145e8565b90039392505050565b600082614d7257614d7261466e565b500490565b608081526000855160406080840152614d9360c0840182614042565b905060208701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808483030160a0850152614dce8282614042565b60208501979097525050506040810192909252606090910152919050565b600060208284031215614dfe57600080fd5b5051919050565b60006101a082518452602083015160208501526040830151614e33604086018267ffffffffffffffff169052565b506060830151614e4f606086018267ffffffffffffffff169052565b506080830151614e6b608086018267ffffffffffffffff169052565b5060a083015160a085015260c083015160c085015260e083015160e0850152610100808401518186015250610120808401518282870152614eae838701826143a6565b9250505061014080840151614ece8287018267ffffffffffffffff169052565b50506101608381015167ffffffffffffffff16908501526101809283015192909301919091525090565b60006101208251818552614f0e82860182614042565b91505060208301518482036020860152614f288282614042565b91505060408301518482036040860152614f428282614042565b91505060608301518482036060860152614f5c8282614042565b91505060808301518482036080860152614f768282614042565b91505060a083015184820360a0860152614f908282614042565b91505060c083015184820360c0860152614faa8282614042565b91505060e083015184820360e0860152614fc48282614042565b9150506101008084015185830382870152614fdf8382614042565b9695505050505050565b600081518084526020808501808196508360051b8101915082860160005b8581101561503157828403895261501f848351614042565b98850198935090840190600101615007565b5091979650505050505050565b606081526000845160608084015261508560c08401825180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60208181015180516101608601529081015161018085015260408101516101a085015260608101516101c085015260808101516101e08501525060408101516101e06102008501526150db6102a0850182614e05565b905060608201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4080868403016102208701526151188383614ef8565b9250608084015161024087015260a084015161026087015260c084015193508086840301610280870152505061514e8183614fe9565b91505060208601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08085840301608086015261518b83836143a6565b925060408801519150808584030160a0860152506151a982826143a6565b602085019690965250505060400152919050565b8381526fffffffffffffffffffffffffffffffff831660208201526060604082015260006151ee6060830184614042565b9594505050505056fea164736f6c634300080f000a" func init() { diff --git a/kroma-bindings/bindings/types.go b/kroma-bindings/bindings/types.go index aec52c3e77..70f1c7ba7b 100644 --- a/kroma-bindings/bindings/types.go +++ b/kroma-bindings/bindings/types.go @@ -93,3 +93,29 @@ type TypesBond struct { Amount *big.Int ExpiresAt *big.Int } +// TypesZKEVMProof is an auto generated low-level Go binding around an user-defined struct. +type TypesZKEVMProof struct { + PublicInputProof TypesPublicInputProof + Proof []*big.Int + Pair []*big.Int +} + +// TypesZKVMProof is an auto generated low-level Go binding around an user-defined struct. +type TypesZKVMProof struct { + PublicValues []byte + ProofBytes []byte +} + +// TypesZkEvmProof is an auto generated low-level Go binding around an user-defined struct. +type TypesZkEvmProof struct { + PublicInputProof TypesPublicInputProof + Proof []*big.Int + Pair []*big.Int +} + +// TypesZkVmProof is an auto generated low-level Go binding around an user-defined struct. +type TypesZkVmProof struct { + PublicValues []byte + ProofBytes []byte +} + diff --git a/kroma-bindings/bindings/zkproofverifier.go b/kroma-bindings/bindings/zkproofverifier.go new file mode 100644 index 0000000000..35adc7014b --- /dev/null +++ b/kroma-bindings/bindings/zkproofverifier.go @@ -0,0 +1,482 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZKProofVerifierMetaData contains all meta data concerning the ZKProofVerifier contract. +var ZKProofVerifierMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_zkVerifier\",\"type\":\"address\",\"internalType\":\"contractZKVerifier\"},{\"name\":\"_dummyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_maxTxs\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_zkMerkleTrie\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_sp1Verifier\",\"type\":\"address\",\"internalType\":\"contractISP1Verifier\"},{\"name\":\"_zkVmProgramVKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"dummyHash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxTxs\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sp1Verifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISP1Verifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyZkEvmProof\",\"inputs\":[{\"name\":\"_zkEvmProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.ZkEvmProof\",\"components\":[{\"name\":\"publicInputProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.PublicInputProof\",\"components\":[{\"name\":\"srcOutputRootProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.OutputRootProof\",\"components\":[{\"name\":\"version\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"latestBlockhash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dstOutputRootProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.OutputRootProof\",\"components\":[{\"name\":\"version\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"latestBlockhash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nextBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"publicInput\",\"type\":\"tuple\",\"internalType\":\"structTypes.PublicInput\",\"components\":[{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"baseFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"transactionsRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"withdrawalsRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"txHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"blobGasUsed\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"excessBlobGas\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"parentBeaconRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"rlps\",\"type\":\"tuple\",\"internalType\":\"structTypes.BlockHeaderRLP\",\"components\":[{\"name\":\"uncleHash\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"coinbase\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"receiptsRoot\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"logsBloom\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"difficulty\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasUsed\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"extraData\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"mixHash\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nonce\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"l2ToL1MessagePasserBalance\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"l2ToL1MessagePasserCodeHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"merkleProof\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}]},{\"name\":\"proof\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"pair\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"_storedSrcOutput\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_storedDstOutput\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"publicInputHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyZkVmProof\",\"inputs\":[{\"name\":\"_zkVmProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.ZkVmProof\",\"components\":[{\"name\":\"publicValues\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proofBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_storedSrcOutput\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_storedDstOutput\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_storedL1Head\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"publicInputHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zkMerkleTrie\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zkVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractZKVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zkVmProgramVKey\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"BlockHashMismatched\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BlockHashMismatchedBtwSrcAndDst\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DstOutputMatched\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInclusionProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPublicInput\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidZkProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SrcOutputMismatched\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StateRootMismatched\",\"inputs\":[]}]", + Bin: "0x6101406040523480156200001257600080fd5b50604051620023433803806200234383398101604081905262000035916200007e565b6001600160a01b0395861660805260a09490945260c092909252831660e0529091166101005261012052620000ef565b6001600160a01b03811681146200007b57600080fd5b50565b60008060008060008060c087890312156200009857600080fd5b8651620000a58162000065565b8096505060208701519450604087015193506060870151620000c78162000065565b6080880151909350620000da8162000065565b8092505060a087015190509295509295509295565b60805160a05160c05160e05161010051610120516121d56200016e6000396000818160aa01526104fc01526000818160f201526104d501526000818161018201526107ec0152600081816101a8015281816108e401526109520152600081816101ce015261091e0152600081816101f4015261033a01526121d56000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635747274b116100765780639aea25721161005b5780639aea2572146101cc578063d6df096d146101f2578063e674f0e01461021857600080fd5b80635747274b14610180578063816bf26d146101a657600080fd5b8063222ce122146100a85780633955d7a1146100dd57806352a07fa3146100f057806354fd4d5014610137575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020015b60405180910390f35b6100ca6100eb366004611485565b61022b565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d4565b6101736040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d4919061154e565b7f0000000000000000000000000000000000000000000000000000000000000000610112565b7f00000000000000000000000000000000000000000000000000000000000000006100ca565b7f00000000000000000000000000000000000000000000000000000000000000006100ca565b7f0000000000000000000000000000000000000000000000000000000000000000610112565b6100ca610226366004611568565b610419565b60003661023885806115c1565b905060808101356101008201351461027c576040517f3f126fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b28484610298610293368690038601866116cb565b6105af565b6102ad61029336879003870160a088016116cb565b610651565b6102da60a082016102c761014084018461173b565b6102d561016085018561176f565b6106cf565b6103066102eb6101c08301836117a3565b6101808401356101a085013560e086013560c0870135610794565b610321602082013561031c61014084018461173b565b6108de565b915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016634292dc3e61036c60208801886117a3565b61037960408a018a6117a3565b876040518663ffffffff1660e01b815260040161039a959493929190611861565b602060405180830381865afa1580156103b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103db919061189b565b610411576040517fe1ac453100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b509392505050565b6000610464848461042a88806118bd565b61043991602091600091611922565b6104429161194c565b61044c89806118bd565b61045b91604091602091611922565b6102ad9161194c565b8161046f86806118bd565b61047e91606091604091611922565b6104879161194c565b146104be576040517f7458ca2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166341493c607f000000000000000000000000000000000000000000000000000000000000000061052588806118bd565b61053260208b018b6118bd565b6040518663ffffffff1660e01b81526004016105529594939291906119b3565b60006040518083038186803b15801561056a57600080fd5b505afa15801561057e573d6000803e3d6000fd5b5061058f92508791508190506118bd565b60405161059d9291906119ec565b60405180910390209050949350505050565b6080810151600090610611578151602080840151604080860151606087015191516105f495949192910193845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b81516020808401516040808601516060808801516080808a01518551978801989098529386019490945284015282015260a081019190915260c0016105f4565b81841461068a576040517f8b10302800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82156106c9578083036106c9576040517f4e15341500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b82602001358260e0013514610710576040517f4d9e774000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061018083013561073b5761073661072884611a94565b61073184611c0c565b61099b565b610755565b61075561074784611a94565b61075084611c0c565b610a3f565b9050808460600135146106c9576040517fb033950600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906312e64a729061085e907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401611d82565b602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f919061189b565b6108d5576040517ff35959c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b600060607f00000000000000000000000000000000000000000000000000000000000000006109116101208501856117a3565b9050101561097e5761097b7f000000000000000000000000000000000000000000000000000000000000000061094b6101208601866117a3565b61097691507f0000000000000000000000000000000000000000000000000000000000000000611eaa565b610b50565b90505b6109918461098b85611a94565b83610bd4565b9150505b92915050565b6040805160118082526102408201909252600091829190816020015b60608152602001906001900390816109b75790505090506109d9848483610c46565b610a088461010001516040516020016109f491815260200190565b604051602081830303815290604052610ef9565b81601081518110610a1b57610a1b611ec1565b6020026020010181905250610a2f81610f64565b8051906020012091505092915050565b6040805160148082526102a08201909252600091829190816020015b6060815260200190600190039081610a5b579050509050610a7d848483610c46565b610a988461010001516040516020016109f491815260200190565b81601081518110610aab57610aab611ec1565b6020026020010181905250610ace84610140015167ffffffffffffffff16610f8f565b81601181518110610ae157610ae1611ec1565b6020026020010181905250610b0484610160015167ffffffffffffffff16610f8f565b81601281518110610b1757610b17611ec1565b6020026020010181905250610b3d8461018001516040516020016109f491815260200190565b81601381518110610a1b57610a1b611ec1565b606060008267ffffffffffffffff811115610b6d57610b6d6115ff565b604051908082528060200260200182016040528015610b96578160200160208202803683370190505b50905060005b838110156104115784828281518110610bb757610bb7611ec1565b602090810291909101015280610bcc81611ef0565b915050610b9c565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001610c279c9b9a99989796959493929190611f3d565b6040516020818303038152906040528051906020012090509392505050565b610c6083602001516040516020016109f491815260200190565b81600081518110610c7357610c73611ec1565b6020026020010181905250816000015181600181518110610c9657610c96611ec1565b6020026020010181905250816020015181600281518110610cb957610cb9611ec1565b6020026020010181905250610cde8360e001516040516020016109f491815260200190565b81600381518110610cf157610cf1611ec1565b6020026020010181905250610d168360c001516040516020016109f491815260200190565b81600481518110610d2957610d29611ec1565b6020026020010181905250816040015181600581518110610d4c57610d4c611ec1565b6020026020010181905250816060015181600681518110610d6f57610d6f611ec1565b6020026020010181905250816080015181600781518110610d9257610d92611ec1565b6020026020010181905250610db4836060015167ffffffffffffffff16610f8f565b81600881518110610dc757610dc7611ec1565b6020026020010181905250610de9836080015167ffffffffffffffff16610f8f565b81600981518110610dfc57610dfc611ec1565b60200260200101819052508160a0015181600a81518110610e1f57610e1f611ec1565b6020026020010181905250610e41836040015167ffffffffffffffff16610f8f565b81600b81518110610e5457610e54611ec1565b60200260200101819052508160c0015181600c81518110610e7757610e77611ec1565b60200260200101819052508160e0015181600d81518110610e9a57610e9a611ec1565b602002602001018190525081610100015181600e81518110610ebe57610ebe611ec1565b6020026020010181905250610ed68360a00151610f8f565b81600f81518110610ee957610ee9611ec1565b6020026020010181905250505050565b606081516001148015610f265750608082600081518110610f1c57610f1c611ec1565b016020015160f81c105b15610f2f575090565b610f3b82516080610fa2565b82604051602001610f4d929190611ff6565b60405160208183030381529060405290505b919050565b6060610f6f82611196565b9050610f7d815160c0610fa2565b81604051602001610f4d929190611ff6565b6060610995610f9d836112cb565b610ef9565b606060388310156110205760408051600180825281830190925290602082018180368337019050509050610fd68284612025565b60f81b81600081518110610fec57610fec611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610995565b600060015b61102f8186612079565b15611055578161103e81611ef0565b925061104e90506101008261208d565b9050611025565b6110608260016120ac565b67ffffffffffffffff811115611078576110786115ff565b6040519080825280601f01601f1916602001820160405280156110a2576020820181803683370190505b5092506110af8483612025565b6110ba906037612025565b60f81b836000815181106110d0576110d0611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b81811161118e576101006111188284611eaa565b611124906101006121a8565b61112e9087612079565b61113891906121b4565b60f81b83828151811061114d5761114d611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061118681611ef0565b915050611104565b505092915050565b606081516000036111b557505060408051600081526020810190915290565b6000805b83518110156111fc578381815181106111d4576111d4611ec1565b602002602001015151826111e891906120ac565b9150806111f481611ef0565b9150506111b9565b8167ffffffffffffffff811115611215576112156115ff565b6040519080825280601f01601f19166020018201604052801561123f576020820181803683370190505b50925060009050602083015b84518210156112c357600085838151811061126857611268611ec1565b60200260200101519050600060208201905061128683828451611428565b86848151811061129857611298611ec1565b602002602001015151836112ac91906120ac565b9250505081806112bb90611ef0565b92505061124b565b505050919050565b60606000826040516020016112e291815260200190565b604051602081830303815290604052905060005b60208110156113515781818151811061131157611311611ec1565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003611351578061134981611ef0565b9150506112f6565b61135c816020611eaa565b67ffffffffffffffff811115611374576113746115ff565b6040519080825280601f01601f19166020018201604052801561139e576020820181803683370190505b50925060005b83518110156112c35782826113b881611ef0565b9350815181106113ca576113ca611ec1565b602001015160f81c60f81b8482815181106113e7576113e7611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061142081611ef0565b9150506113a4565b8282825b6020811061146457815183526114436020846120ac565b92506114506020836120ac565b915061145d602082611eaa565b905061142c565b905182516020929092036101000a6000190180199091169116179052505050565b60008060006060848603121561149a57600080fd5b833567ffffffffffffffff8111156114b157600080fd5b8401606081870312156114c357600080fd5b95602085013595506040909401359392505050565b60005b838110156114f35781810151838201526020016114db565b838111156106c95750506000910152565b6000815180845261151c8160208601602086016114d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006115616020830184611504565b9392505050565b6000806000806080858703121561157e57600080fd5b843567ffffffffffffffff81111561159557600080fd5b8501604081880312156115a757600080fd5b966020860135965060408601359560600135945092505050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe218336030181126115f557600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715611652576116526115ff565b60405290565b604051610120810167ffffffffffffffff81118282101715611652576116526115ff565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116c3576116c36115ff565b604052919050565b600060a082840312156116dd57600080fd5b60405160a0810181811067ffffffffffffffff82111715611700576117006115ff565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe618336030181126115f557600080fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18336030181126115f557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126117d857600080fd5b83018035915067ffffffffffffffff8211156117f357600080fd5b6020019150600581901b360382131561180b57600080fd5b9250929050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561184457600080fd5b8260051b8083602087013760009401602001938452509192915050565b606081526000611875606083018789611812565b8281036020840152611888818688611812565b9150508260408301529695505050505050565b6000602082840312156118ad57600080fd5b8151801515811461156157600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118f257600080fd5b83018035915067ffffffffffffffff82111561190d57600080fd5b60200191503681900382131561180b57600080fd5b6000808585111561193257600080fd5b8386111561193f57600080fd5b5050820193919092039150565b8035602083101561099557600019602084900360031b1b1692915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8581526060602082015260006119cd60608301868861196a565b82810360408401526119e081858761196a565b98975050505050505050565b8183823760009101908152919050565b803567ffffffffffffffff81168114610f5f57600080fd5b600082601f830112611a2557600080fd5b8135602067ffffffffffffffff821115611a4157611a416115ff565b8160051b611a5082820161167c565b9283528481018201928281019087851115611a6a57600080fd5b83870192505b84831015611a8957823582529183019190830190611a70565b979650505050505050565b60006101a08236031215611aa757600080fd5b611aaf61162e565b8235815260208301356020820152611ac9604084016119fc565b6040820152611ada606084016119fc565b6060820152611aeb608084016119fc565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff811115611b3657600080fd5b611b4236828701611a14565b828401525050610140611b568185016119fc565b90820152610160611b688482016119fc565b9082015261018092830135928101929092525090565b600082601f830112611b8f57600080fd5b813567ffffffffffffffff811115611ba957611ba96115ff565b611bda60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161167c565b818152846020838601011115611bef57600080fd5b816020850160208301376000918101602001919091529392505050565b60006101208236031215611c1f57600080fd5b611c27611658565b823567ffffffffffffffff80821115611c3f57600080fd5b611c4b36838701611b7e565b83526020850135915080821115611c6157600080fd5b611c6d36838701611b7e565b60208401526040850135915080821115611c8657600080fd5b611c9236838701611b7e565b60408401526060850135915080821115611cab57600080fd5b611cb736838701611b7e565b60608401526080850135915080821115611cd057600080fd5b611cdc36838701611b7e565b608084015260a0850135915080821115611cf557600080fd5b611d0136838701611b7e565b60a084015260c0850135915080821115611d1a57600080fd5b611d2636838701611b7e565b60c084015260e0850135915080821115611d3f57600080fd5b611d4b36838701611b7e565b60e084015261010091508185013581811115611d6657600080fd5b611d7236828801611b7e565b8385015250505080915050919050565b85815260006020608081840152611d9c6080840188611504565b8381036040850152858152818101600587901b820183018860005b89811015611e62577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112611e1857600080fd5b8b01868101903567ffffffffffffffff811115611e3457600080fd5b803603821315611e4357600080fd5b611e4e85828461196a565b958801959450505090850190600101611db7565b5050809450505050508260608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611ebc57611ebc611e7b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006000198203611f0357611f03611e7b565b5060010190565b60008151602080840160005b83811015611f3257815187529582019590820190600101611f16565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d8830152611fe4611fde60da840186611f0a565b84611f0a565b9e9d5050505050505050505050505050565b600083516120088184602088016114d8565b83519083019061201c8183602088016114d8565b01949350505050565b600060ff821660ff84168060ff0382111561204257612042611e7b565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826120885761208861204a565b500490565b60008160001904831182151516156120a7576120a7611e7b565b500290565b600082198211156120bf576120bf611e7b565b500190565b600181815b808511156120ff5781600019048211156120e5576120e5611e7b565b808516156120f257918102915b93841c93908002906120c9565b509250929050565b60008261211657506001610995565b8161212357506000610995565b816001811461213957600281146121435761215f565b6001915050610995565b60ff84111561215457612154611e7b565b50506001821b610995565b5060208310610133831016604e8410600b8410161715612182575081810a610995565b61218c83836120c4565b80600019048211156121a0576121a0611e7b565b029392505050565b60006115618383612107565b6000826121c3576121c361204a565b50069056fea164736f6c634300080f000a", +} + +// ZKProofVerifierABI is the input ABI used to generate the binding from. +// Deprecated: Use ZKProofVerifierMetaData.ABI instead. +var ZKProofVerifierABI = ZKProofVerifierMetaData.ABI + +// ZKProofVerifierBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZKProofVerifierMetaData.Bin instead. +var ZKProofVerifierBin = ZKProofVerifierMetaData.Bin + +// DeployZKProofVerifier deploys a new Ethereum contract, binding an instance of ZKProofVerifier to it. +func DeployZKProofVerifier(auth *bind.TransactOpts, backend bind.ContractBackend, _zkVerifier common.Address, _dummyHash [32]byte, _maxTxs *big.Int, _zkMerkleTrie common.Address, _sp1Verifier common.Address, _zkVmProgramVKey [32]byte) (common.Address, *types.Transaction, *ZKProofVerifier, error) { + parsed, err := ZKProofVerifierMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZKProofVerifierBin), backend, _zkVerifier, _dummyHash, _maxTxs, _zkMerkleTrie, _sp1Verifier, _zkVmProgramVKey) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZKProofVerifier{ZKProofVerifierCaller: ZKProofVerifierCaller{contract: contract}, ZKProofVerifierTransactor: ZKProofVerifierTransactor{contract: contract}, ZKProofVerifierFilterer: ZKProofVerifierFilterer{contract: contract}}, nil +} + +// ZKProofVerifier is an auto generated Go binding around an Ethereum contract. +type ZKProofVerifier struct { + ZKProofVerifierCaller // Read-only binding to the contract + ZKProofVerifierTransactor // Write-only binding to the contract + ZKProofVerifierFilterer // Log filterer for contract events +} + +// ZKProofVerifierCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZKProofVerifierCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZKProofVerifierTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZKProofVerifierTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZKProofVerifierFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZKProofVerifierFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZKProofVerifierSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZKProofVerifierSession struct { + Contract *ZKProofVerifier // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZKProofVerifierCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZKProofVerifierCallerSession struct { + Contract *ZKProofVerifierCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZKProofVerifierTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZKProofVerifierTransactorSession struct { + Contract *ZKProofVerifierTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZKProofVerifierRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZKProofVerifierRaw struct { + Contract *ZKProofVerifier // Generic contract binding to access the raw methods on +} + +// ZKProofVerifierCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZKProofVerifierCallerRaw struct { + Contract *ZKProofVerifierCaller // Generic read-only contract binding to access the raw methods on +} + +// ZKProofVerifierTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZKProofVerifierTransactorRaw struct { + Contract *ZKProofVerifierTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZKProofVerifier creates a new instance of ZKProofVerifier, bound to a specific deployed contract. +func NewZKProofVerifier(address common.Address, backend bind.ContractBackend) (*ZKProofVerifier, error) { + contract, err := bindZKProofVerifier(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZKProofVerifier{ZKProofVerifierCaller: ZKProofVerifierCaller{contract: contract}, ZKProofVerifierTransactor: ZKProofVerifierTransactor{contract: contract}, ZKProofVerifierFilterer: ZKProofVerifierFilterer{contract: contract}}, nil +} + +// NewZKProofVerifierCaller creates a new read-only instance of ZKProofVerifier, bound to a specific deployed contract. +func NewZKProofVerifierCaller(address common.Address, caller bind.ContractCaller) (*ZKProofVerifierCaller, error) { + contract, err := bindZKProofVerifier(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZKProofVerifierCaller{contract: contract}, nil +} + +// NewZKProofVerifierTransactor creates a new write-only instance of ZKProofVerifier, bound to a specific deployed contract. +func NewZKProofVerifierTransactor(address common.Address, transactor bind.ContractTransactor) (*ZKProofVerifierTransactor, error) { + contract, err := bindZKProofVerifier(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZKProofVerifierTransactor{contract: contract}, nil +} + +// NewZKProofVerifierFilterer creates a new log filterer instance of ZKProofVerifier, bound to a specific deployed contract. +func NewZKProofVerifierFilterer(address common.Address, filterer bind.ContractFilterer) (*ZKProofVerifierFilterer, error) { + contract, err := bindZKProofVerifier(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZKProofVerifierFilterer{contract: contract}, nil +} + +// bindZKProofVerifier binds a generic wrapper to an already deployed contract. +func bindZKProofVerifier(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZKProofVerifierMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZKProofVerifier *ZKProofVerifierRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZKProofVerifier.Contract.ZKProofVerifierCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZKProofVerifier *ZKProofVerifierRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZKProofVerifier.Contract.ZKProofVerifierTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZKProofVerifier *ZKProofVerifierRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZKProofVerifier.Contract.ZKProofVerifierTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZKProofVerifier *ZKProofVerifierCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZKProofVerifier.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZKProofVerifier *ZKProofVerifierTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZKProofVerifier.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZKProofVerifier *ZKProofVerifierTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZKProofVerifier.Contract.contract.Transact(opts, method, params...) +} + +// DummyHash is a free data retrieval call binding the contract method 0x9aea2572. +// +// Solidity: function dummyHash() view returns(bytes32) +func (_ZKProofVerifier *ZKProofVerifierCaller) DummyHash(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZKProofVerifier.contract.Call(opts, &out, "dummyHash") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DummyHash is a free data retrieval call binding the contract method 0x9aea2572. +// +// Solidity: function dummyHash() view returns(bytes32) +func (_ZKProofVerifier *ZKProofVerifierSession) DummyHash() ([32]byte, error) { + return _ZKProofVerifier.Contract.DummyHash(&_ZKProofVerifier.CallOpts) +} + +// DummyHash is a free data retrieval call binding the contract method 0x9aea2572. +// +// Solidity: function dummyHash() view returns(bytes32) +func (_ZKProofVerifier *ZKProofVerifierCallerSession) DummyHash() ([32]byte, error) { + return _ZKProofVerifier.Contract.DummyHash(&_ZKProofVerifier.CallOpts) +} + +// MaxTxs is a free data retrieval call binding the contract method 0x816bf26d. +// +// Solidity: function maxTxs() view returns(uint256) +func (_ZKProofVerifier *ZKProofVerifierCaller) MaxTxs(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZKProofVerifier.contract.Call(opts, &out, "maxTxs") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxTxs is a free data retrieval call binding the contract method 0x816bf26d. +// +// Solidity: function maxTxs() view returns(uint256) +func (_ZKProofVerifier *ZKProofVerifierSession) MaxTxs() (*big.Int, error) { + return _ZKProofVerifier.Contract.MaxTxs(&_ZKProofVerifier.CallOpts) +} + +// MaxTxs is a free data retrieval call binding the contract method 0x816bf26d. +// +// Solidity: function maxTxs() view returns(uint256) +func (_ZKProofVerifier *ZKProofVerifierCallerSession) MaxTxs() (*big.Int, error) { + return _ZKProofVerifier.Contract.MaxTxs(&_ZKProofVerifier.CallOpts) +} + +// Sp1Verifier is a free data retrieval call binding the contract method 0x52a07fa3. +// +// Solidity: function sp1Verifier() view returns(address) +func (_ZKProofVerifier *ZKProofVerifierCaller) Sp1Verifier(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZKProofVerifier.contract.Call(opts, &out, "sp1Verifier") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Sp1Verifier is a free data retrieval call binding the contract method 0x52a07fa3. +// +// Solidity: function sp1Verifier() view returns(address) +func (_ZKProofVerifier *ZKProofVerifierSession) Sp1Verifier() (common.Address, error) { + return _ZKProofVerifier.Contract.Sp1Verifier(&_ZKProofVerifier.CallOpts) +} + +// Sp1Verifier is a free data retrieval call binding the contract method 0x52a07fa3. +// +// Solidity: function sp1Verifier() view returns(address) +func (_ZKProofVerifier *ZKProofVerifierCallerSession) Sp1Verifier() (common.Address, error) { + return _ZKProofVerifier.Contract.Sp1Verifier(&_ZKProofVerifier.CallOpts) +} + +// VerifyZkEvmProof is a free data retrieval call binding the contract method 0x3955d7a1. +// +// Solidity: function verifyZkEvmProof((((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[],uint64,uint64,bytes32),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[]) _zkEvmProof, bytes32 _storedSrcOutput, bytes32 _storedDstOutput) view returns(bytes32 publicInputHash_) +func (_ZKProofVerifier *ZKProofVerifierCaller) VerifyZkEvmProof(opts *bind.CallOpts, _zkEvmProof TypesZkEvmProof, _storedSrcOutput [32]byte, _storedDstOutput [32]byte) ([32]byte, error) { + var out []interface{} + err := _ZKProofVerifier.contract.Call(opts, &out, "verifyZkEvmProof", _zkEvmProof, _storedSrcOutput, _storedDstOutput) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// VerifyZkEvmProof is a free data retrieval call binding the contract method 0x3955d7a1. +// +// Solidity: function verifyZkEvmProof((((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[],uint64,uint64,bytes32),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[]) _zkEvmProof, bytes32 _storedSrcOutput, bytes32 _storedDstOutput) view returns(bytes32 publicInputHash_) +func (_ZKProofVerifier *ZKProofVerifierSession) VerifyZkEvmProof(_zkEvmProof TypesZkEvmProof, _storedSrcOutput [32]byte, _storedDstOutput [32]byte) ([32]byte, error) { + return _ZKProofVerifier.Contract.VerifyZkEvmProof(&_ZKProofVerifier.CallOpts, _zkEvmProof, _storedSrcOutput, _storedDstOutput) +} + +// VerifyZkEvmProof is a free data retrieval call binding the contract method 0x3955d7a1. +// +// Solidity: function verifyZkEvmProof((((bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,bytes32,bytes32,bytes32),(bytes32,bytes32,uint64,uint64,uint64,uint256,bytes32,bytes32,bytes32,bytes32[],uint64,uint64,bytes32),(bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes,bytes),bytes32,bytes32,bytes[]),uint256[],uint256[]) _zkEvmProof, bytes32 _storedSrcOutput, bytes32 _storedDstOutput) view returns(bytes32 publicInputHash_) +func (_ZKProofVerifier *ZKProofVerifierCallerSession) VerifyZkEvmProof(_zkEvmProof TypesZkEvmProof, _storedSrcOutput [32]byte, _storedDstOutput [32]byte) ([32]byte, error) { + return _ZKProofVerifier.Contract.VerifyZkEvmProof(&_ZKProofVerifier.CallOpts, _zkEvmProof, _storedSrcOutput, _storedDstOutput) +} + +// VerifyZkVmProof is a free data retrieval call binding the contract method 0xe674f0e0. +// +// Solidity: function verifyZkVmProof((bytes,bytes) _zkVmProof, bytes32 _storedSrcOutput, bytes32 _storedDstOutput, bytes32 _storedL1Head) view returns(bytes32 publicInputHash_) +func (_ZKProofVerifier *ZKProofVerifierCaller) VerifyZkVmProof(opts *bind.CallOpts, _zkVmProof TypesZkVmProof, _storedSrcOutput [32]byte, _storedDstOutput [32]byte, _storedL1Head [32]byte) ([32]byte, error) { + var out []interface{} + err := _ZKProofVerifier.contract.Call(opts, &out, "verifyZkVmProof", _zkVmProof, _storedSrcOutput, _storedDstOutput, _storedL1Head) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// VerifyZkVmProof is a free data retrieval call binding the contract method 0xe674f0e0. +// +// Solidity: function verifyZkVmProof((bytes,bytes) _zkVmProof, bytes32 _storedSrcOutput, bytes32 _storedDstOutput, bytes32 _storedL1Head) view returns(bytes32 publicInputHash_) +func (_ZKProofVerifier *ZKProofVerifierSession) VerifyZkVmProof(_zkVmProof TypesZkVmProof, _storedSrcOutput [32]byte, _storedDstOutput [32]byte, _storedL1Head [32]byte) ([32]byte, error) { + return _ZKProofVerifier.Contract.VerifyZkVmProof(&_ZKProofVerifier.CallOpts, _zkVmProof, _storedSrcOutput, _storedDstOutput, _storedL1Head) +} + +// VerifyZkVmProof is a free data retrieval call binding the contract method 0xe674f0e0. +// +// Solidity: function verifyZkVmProof((bytes,bytes) _zkVmProof, bytes32 _storedSrcOutput, bytes32 _storedDstOutput, bytes32 _storedL1Head) view returns(bytes32 publicInputHash_) +func (_ZKProofVerifier *ZKProofVerifierCallerSession) VerifyZkVmProof(_zkVmProof TypesZkVmProof, _storedSrcOutput [32]byte, _storedDstOutput [32]byte, _storedL1Head [32]byte) ([32]byte, error) { + return _ZKProofVerifier.Contract.VerifyZkVmProof(&_ZKProofVerifier.CallOpts, _zkVmProof, _storedSrcOutput, _storedDstOutput, _storedL1Head) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_ZKProofVerifier *ZKProofVerifierCaller) Version(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZKProofVerifier.contract.Call(opts, &out, "version") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_ZKProofVerifier *ZKProofVerifierSession) Version() (string, error) { + return _ZKProofVerifier.Contract.Version(&_ZKProofVerifier.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_ZKProofVerifier *ZKProofVerifierCallerSession) Version() (string, error) { + return _ZKProofVerifier.Contract.Version(&_ZKProofVerifier.CallOpts) +} + +// ZkMerkleTrie is a free data retrieval call binding the contract method 0x5747274b. +// +// Solidity: function zkMerkleTrie() view returns(address) +func (_ZKProofVerifier *ZKProofVerifierCaller) ZkMerkleTrie(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZKProofVerifier.contract.Call(opts, &out, "zkMerkleTrie") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZkMerkleTrie is a free data retrieval call binding the contract method 0x5747274b. +// +// Solidity: function zkMerkleTrie() view returns(address) +func (_ZKProofVerifier *ZKProofVerifierSession) ZkMerkleTrie() (common.Address, error) { + return _ZKProofVerifier.Contract.ZkMerkleTrie(&_ZKProofVerifier.CallOpts) +} + +// ZkMerkleTrie is a free data retrieval call binding the contract method 0x5747274b. +// +// Solidity: function zkMerkleTrie() view returns(address) +func (_ZKProofVerifier *ZKProofVerifierCallerSession) ZkMerkleTrie() (common.Address, error) { + return _ZKProofVerifier.Contract.ZkMerkleTrie(&_ZKProofVerifier.CallOpts) +} + +// ZkVerifier is a free data retrieval call binding the contract method 0xd6df096d. +// +// Solidity: function zkVerifier() view returns(address) +func (_ZKProofVerifier *ZKProofVerifierCaller) ZkVerifier(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZKProofVerifier.contract.Call(opts, &out, "zkVerifier") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZkVerifier is a free data retrieval call binding the contract method 0xd6df096d. +// +// Solidity: function zkVerifier() view returns(address) +func (_ZKProofVerifier *ZKProofVerifierSession) ZkVerifier() (common.Address, error) { + return _ZKProofVerifier.Contract.ZkVerifier(&_ZKProofVerifier.CallOpts) +} + +// ZkVerifier is a free data retrieval call binding the contract method 0xd6df096d. +// +// Solidity: function zkVerifier() view returns(address) +func (_ZKProofVerifier *ZKProofVerifierCallerSession) ZkVerifier() (common.Address, error) { + return _ZKProofVerifier.Contract.ZkVerifier(&_ZKProofVerifier.CallOpts) +} + +// ZkVmProgramVKey is a free data retrieval call binding the contract method 0x222ce122. +// +// Solidity: function zkVmProgramVKey() view returns(bytes32) +func (_ZKProofVerifier *ZKProofVerifierCaller) ZkVmProgramVKey(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZKProofVerifier.contract.Call(opts, &out, "zkVmProgramVKey") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ZkVmProgramVKey is a free data retrieval call binding the contract method 0x222ce122. +// +// Solidity: function zkVmProgramVKey() view returns(bytes32) +func (_ZKProofVerifier *ZKProofVerifierSession) ZkVmProgramVKey() ([32]byte, error) { + return _ZKProofVerifier.Contract.ZkVmProgramVKey(&_ZKProofVerifier.CallOpts) +} + +// ZkVmProgramVKey is a free data retrieval call binding the contract method 0x222ce122. +// +// Solidity: function zkVmProgramVKey() view returns(bytes32) +func (_ZKProofVerifier *ZKProofVerifierCallerSession) ZkVmProgramVKey() ([32]byte, error) { + return _ZKProofVerifier.Contract.ZkVmProgramVKey(&_ZKProofVerifier.CallOpts) +} diff --git a/kroma-bindings/bindings/zkproofverifier_more.go b/kroma-bindings/bindings/zkproofverifier_more.go new file mode 100644 index 0000000000..8d78ede3f6 --- /dev/null +++ b/kroma-bindings/bindings/zkproofverifier_more.go @@ -0,0 +1,27 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "encoding/json" + + "github.com/ethereum-optimism/optimism/op-bindings/solc" +) + +const ZKProofVerifierStorageLayoutJSON = "{\"storage\":null,\"types\":{}}" + +var ZKProofVerifierStorageLayout = new(solc.StorageLayout) + +var ZKProofVerifierDeployedBin = "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80635747274b116100765780639aea25721161005b5780639aea2572146101cc578063d6df096d146101f2578063e674f0e01461021857600080fd5b80635747274b14610180578063816bf26d146101a657600080fd5b8063222ce122146100a85780633955d7a1146100dd57806352a07fa3146100f057806354fd4d5014610137575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020015b60405180910390f35b6100ca6100eb366004611485565b61022b565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d4565b6101736040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d4919061154e565b7f0000000000000000000000000000000000000000000000000000000000000000610112565b7f00000000000000000000000000000000000000000000000000000000000000006100ca565b7f00000000000000000000000000000000000000000000000000000000000000006100ca565b7f0000000000000000000000000000000000000000000000000000000000000000610112565b6100ca610226366004611568565b610419565b60003661023885806115c1565b905060808101356101008201351461027c576040517f3f126fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b28484610298610293368690038601866116cb565b6105af565b6102ad61029336879003870160a088016116cb565b610651565b6102da60a082016102c761014084018461173b565b6102d561016085018561176f565b6106cf565b6103066102eb6101c08301836117a3565b6101808401356101a085013560e086013560c0870135610794565b610321602082013561031c61014084018461173b565b6108de565b915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016634292dc3e61036c60208801886117a3565b61037960408a018a6117a3565b876040518663ffffffff1660e01b815260040161039a959493929190611861565b602060405180830381865afa1580156103b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103db919061189b565b610411576040517fe1ac453100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b509392505050565b6000610464848461042a88806118bd565b61043991602091600091611922565b6104429161194c565b61044c89806118bd565b61045b91604091602091611922565b6102ad9161194c565b8161046f86806118bd565b61047e91606091604091611922565b6104879161194c565b146104be576040517f7458ca2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166341493c607f000000000000000000000000000000000000000000000000000000000000000061052588806118bd565b61053260208b018b6118bd565b6040518663ffffffff1660e01b81526004016105529594939291906119b3565b60006040518083038186803b15801561056a57600080fd5b505afa15801561057e573d6000803e3d6000fd5b5061058f92508791508190506118bd565b60405161059d9291906119ec565b60405180910390209050949350505050565b6080810151600090610611578151602080840151604080860151606087015191516105f495949192910193845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b81516020808401516040808601516060808801516080808a01518551978801989098529386019490945284015282015260a081019190915260c0016105f4565b81841461068a576040517f8b10302800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82156106c9578083036106c9576040517f4e15341500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b82602001358260e0013514610710576040517f4d9e774000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061018083013561073b5761073661072884611a94565b61073184611c0c565b61099b565b610755565b61075561074784611a94565b61075084611c0c565b610a3f565b9050808460600135146106c9576040517fb033950600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906312e64a729061085e907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401611d82565b602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f919061189b565b6108d5576040517ff35959c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b600060607f00000000000000000000000000000000000000000000000000000000000000006109116101208501856117a3565b9050101561097e5761097b7f000000000000000000000000000000000000000000000000000000000000000061094b6101208601866117a3565b61097691507f0000000000000000000000000000000000000000000000000000000000000000611eaa565b610b50565b90505b6109918461098b85611a94565b83610bd4565b9150505b92915050565b6040805160118082526102408201909252600091829190816020015b60608152602001906001900390816109b75790505090506109d9848483610c46565b610a088461010001516040516020016109f491815260200190565b604051602081830303815290604052610ef9565b81601081518110610a1b57610a1b611ec1565b6020026020010181905250610a2f81610f64565b8051906020012091505092915050565b6040805160148082526102a08201909252600091829190816020015b6060815260200190600190039081610a5b579050509050610a7d848483610c46565b610a988461010001516040516020016109f491815260200190565b81601081518110610aab57610aab611ec1565b6020026020010181905250610ace84610140015167ffffffffffffffff16610f8f565b81601181518110610ae157610ae1611ec1565b6020026020010181905250610b0484610160015167ffffffffffffffff16610f8f565b81601281518110610b1757610b17611ec1565b6020026020010181905250610b3d8461018001516040516020016109f491815260200190565b81601381518110610a1b57610a1b611ec1565b606060008267ffffffffffffffff811115610b6d57610b6d6115ff565b604051908082528060200260200182016040528015610b96578160200160208202803683370190505b50905060005b838110156104115784828281518110610bb757610bb7611ec1565b602090810291909101015280610bcc81611ef0565b915050610b9c565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001610c279c9b9a99989796959493929190611f3d565b6040516020818303038152906040528051906020012090509392505050565b610c6083602001516040516020016109f491815260200190565b81600081518110610c7357610c73611ec1565b6020026020010181905250816000015181600181518110610c9657610c96611ec1565b6020026020010181905250816020015181600281518110610cb957610cb9611ec1565b6020026020010181905250610cde8360e001516040516020016109f491815260200190565b81600381518110610cf157610cf1611ec1565b6020026020010181905250610d168360c001516040516020016109f491815260200190565b81600481518110610d2957610d29611ec1565b6020026020010181905250816040015181600581518110610d4c57610d4c611ec1565b6020026020010181905250816060015181600681518110610d6f57610d6f611ec1565b6020026020010181905250816080015181600781518110610d9257610d92611ec1565b6020026020010181905250610db4836060015167ffffffffffffffff16610f8f565b81600881518110610dc757610dc7611ec1565b6020026020010181905250610de9836080015167ffffffffffffffff16610f8f565b81600981518110610dfc57610dfc611ec1565b60200260200101819052508160a0015181600a81518110610e1f57610e1f611ec1565b6020026020010181905250610e41836040015167ffffffffffffffff16610f8f565b81600b81518110610e5457610e54611ec1565b60200260200101819052508160c0015181600c81518110610e7757610e77611ec1565b60200260200101819052508160e0015181600d81518110610e9a57610e9a611ec1565b602002602001018190525081610100015181600e81518110610ebe57610ebe611ec1565b6020026020010181905250610ed68360a00151610f8f565b81600f81518110610ee957610ee9611ec1565b6020026020010181905250505050565b606081516001148015610f265750608082600081518110610f1c57610f1c611ec1565b016020015160f81c105b15610f2f575090565b610f3b82516080610fa2565b82604051602001610f4d929190611ff6565b60405160208183030381529060405290505b919050565b6060610f6f82611196565b9050610f7d815160c0610fa2565b81604051602001610f4d929190611ff6565b6060610995610f9d836112cb565b610ef9565b606060388310156110205760408051600180825281830190925290602082018180368337019050509050610fd68284612025565b60f81b81600081518110610fec57610fec611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610995565b600060015b61102f8186612079565b15611055578161103e81611ef0565b925061104e90506101008261208d565b9050611025565b6110608260016120ac565b67ffffffffffffffff811115611078576110786115ff565b6040519080825280601f01601f1916602001820160405280156110a2576020820181803683370190505b5092506110af8483612025565b6110ba906037612025565b60f81b836000815181106110d0576110d0611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b81811161118e576101006111188284611eaa565b611124906101006121a8565b61112e9087612079565b61113891906121b4565b60f81b83828151811061114d5761114d611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061118681611ef0565b915050611104565b505092915050565b606081516000036111b557505060408051600081526020810190915290565b6000805b83518110156111fc578381815181106111d4576111d4611ec1565b602002602001015151826111e891906120ac565b9150806111f481611ef0565b9150506111b9565b8167ffffffffffffffff811115611215576112156115ff565b6040519080825280601f01601f19166020018201604052801561123f576020820181803683370190505b50925060009050602083015b84518210156112c357600085838151811061126857611268611ec1565b60200260200101519050600060208201905061128683828451611428565b86848151811061129857611298611ec1565b602002602001015151836112ac91906120ac565b9250505081806112bb90611ef0565b92505061124b565b505050919050565b60606000826040516020016112e291815260200190565b604051602081830303815290604052905060005b60208110156113515781818151811061131157611311611ec1565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003611351578061134981611ef0565b9150506112f6565b61135c816020611eaa565b67ffffffffffffffff811115611374576113746115ff565b6040519080825280601f01601f19166020018201604052801561139e576020820181803683370190505b50925060005b83518110156112c35782826113b881611ef0565b9350815181106113ca576113ca611ec1565b602001015160f81c60f81b8482815181106113e7576113e7611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061142081611ef0565b9150506113a4565b8282825b6020811061146457815183526114436020846120ac565b92506114506020836120ac565b915061145d602082611eaa565b905061142c565b905182516020929092036101000a6000190180199091169116179052505050565b60008060006060848603121561149a57600080fd5b833567ffffffffffffffff8111156114b157600080fd5b8401606081870312156114c357600080fd5b95602085013595506040909401359392505050565b60005b838110156114f35781810151838201526020016114db565b838111156106c95750506000910152565b6000815180845261151c8160208601602086016114d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006115616020830184611504565b9392505050565b6000806000806080858703121561157e57600080fd5b843567ffffffffffffffff81111561159557600080fd5b8501604081880312156115a757600080fd5b966020860135965060408601359560600135945092505050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe218336030181126115f557600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715611652576116526115ff565b60405290565b604051610120810167ffffffffffffffff81118282101715611652576116526115ff565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116c3576116c36115ff565b604052919050565b600060a082840312156116dd57600080fd5b60405160a0810181811067ffffffffffffffff82111715611700576117006115ff565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe618336030181126115f557600080fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18336030181126115f557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126117d857600080fd5b83018035915067ffffffffffffffff8211156117f357600080fd5b6020019150600581901b360382131561180b57600080fd5b9250929050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561184457600080fd5b8260051b8083602087013760009401602001938452509192915050565b606081526000611875606083018789611812565b8281036020840152611888818688611812565b9150508260408301529695505050505050565b6000602082840312156118ad57600080fd5b8151801515811461156157600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118f257600080fd5b83018035915067ffffffffffffffff82111561190d57600080fd5b60200191503681900382131561180b57600080fd5b6000808585111561193257600080fd5b8386111561193f57600080fd5b5050820193919092039150565b8035602083101561099557600019602084900360031b1b1692915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8581526060602082015260006119cd60608301868861196a565b82810360408401526119e081858761196a565b98975050505050505050565b8183823760009101908152919050565b803567ffffffffffffffff81168114610f5f57600080fd5b600082601f830112611a2557600080fd5b8135602067ffffffffffffffff821115611a4157611a416115ff565b8160051b611a5082820161167c565b9283528481018201928281019087851115611a6a57600080fd5b83870192505b84831015611a8957823582529183019190830190611a70565b979650505050505050565b60006101a08236031215611aa757600080fd5b611aaf61162e565b8235815260208301356020820152611ac9604084016119fc565b6040820152611ada606084016119fc565b6060820152611aeb608084016119fc565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff811115611b3657600080fd5b611b4236828701611a14565b828401525050610140611b568185016119fc565b90820152610160611b688482016119fc565b9082015261018092830135928101929092525090565b600082601f830112611b8f57600080fd5b813567ffffffffffffffff811115611ba957611ba96115ff565b611bda60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161167c565b818152846020838601011115611bef57600080fd5b816020850160208301376000918101602001919091529392505050565b60006101208236031215611c1f57600080fd5b611c27611658565b823567ffffffffffffffff80821115611c3f57600080fd5b611c4b36838701611b7e565b83526020850135915080821115611c6157600080fd5b611c6d36838701611b7e565b60208401526040850135915080821115611c8657600080fd5b611c9236838701611b7e565b60408401526060850135915080821115611cab57600080fd5b611cb736838701611b7e565b60608401526080850135915080821115611cd057600080fd5b611cdc36838701611b7e565b608084015260a0850135915080821115611cf557600080fd5b611d0136838701611b7e565b60a084015260c0850135915080821115611d1a57600080fd5b611d2636838701611b7e565b60c084015260e0850135915080821115611d3f57600080fd5b611d4b36838701611b7e565b60e084015261010091508185013581811115611d6657600080fd5b611d7236828801611b7e565b8385015250505080915050919050565b85815260006020608081840152611d9c6080840188611504565b8381036040850152858152818101600587901b820183018860005b89811015611e62577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112611e1857600080fd5b8b01868101903567ffffffffffffffff811115611e3457600080fd5b803603821315611e4357600080fd5b611e4e85828461196a565b958801959450505090850190600101611db7565b5050809450505050508260608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611ebc57611ebc611e7b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006000198203611f0357611f03611e7b565b5060010190565b60008151602080840160005b83811015611f3257815187529582019590820190600101611f16565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d8830152611fe4611fde60da840186611f0a565b84611f0a565b9e9d5050505050505050505050505050565b600083516120088184602088016114d8565b83519083019061201c8183602088016114d8565b01949350505050565b600060ff821660ff84168060ff0382111561204257612042611e7b565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826120885761208861204a565b500490565b60008160001904831182151516156120a7576120a7611e7b565b500290565b600082198211156120bf576120bf611e7b565b500190565b600181815b808511156120ff5781600019048211156120e5576120e5611e7b565b808516156120f257918102915b93841c93908002906120c9565b509250929050565b60008261211657506001610995565b8161212357506000610995565b816001811461213957600281146121435761215f565b6001915050610995565b60ff84111561215457612154611e7b565b50506001821b610995565b5060208310610133831016604e8410600b8410161715612182575081810a610995565b61218c83836120c4565b80600019048211156121a0576121a0611e7b565b029392505050565b60006115618383612107565b6000826121c3576121c361204a565b50069056fea164736f6c634300080f000a" + + +func init() { + if err := json.Unmarshal([]byte(ZKProofVerifierStorageLayoutJSON), ZKProofVerifierStorageLayout); err != nil { + panic(err) + } + + layouts["ZKProofVerifier"] = ZKProofVerifierStorageLayout + deployedBytecodes["ZKProofVerifier"] = ZKProofVerifierDeployedBin + immutableReferences["ZKProofVerifier"] = true +} diff --git a/kroma-chain-ops/genesis/config.go b/kroma-chain-ops/genesis/config.go index 611e627d6d..b4e6c5bbce 100644 --- a/kroma-chain-ops/genesis/config.go +++ b/kroma-chain-ops/genesis/config.go @@ -338,6 +338,11 @@ type DeployConfig struct { ZKVerifierHashScalar *hexutil.Big `json:"zkVerifierHashScalar"` ZKVerifierM56Px *hexutil.Big `json:"zkVerifierM56Px"` ZKVerifierM56Py *hexutil.Big `json:"zkVerifierM56Py"` + + // ZKProofVerifierSP1Verifier is the address of the SP1VerifierGateway contract. + ZKProofVerifierSP1Verifier common.Address `json:"zkProofVerifierSP1Verifier"` + // ZKProofVerifierVKey is the verification key for the zkVM program. + ZKProofVerifierVKey common.Hash `json:"zkProofVerifierVKey"` // [Kroma: END] } @@ -630,6 +635,12 @@ func (d *DeployConfig) Check() error { if d.ZKVerifierM56Py == nil { return fmt.Errorf("%w: ZKVerifierM56Py cannot be nil", ErrInvalidDeployConfig) } + if d.ZKProofVerifierSP1Verifier == (common.Address{}) { + return fmt.Errorf("%w: ZKProofVerifierSP1Verifier cannot be address(0)", ErrInvalidDeployConfig) + } + if d.ZKProofVerifierVKey == (common.Hash{}) { + return fmt.Errorf("%w: ZKProofVerifierVKey cannot be 0", ErrInvalidDeployConfig) + } // [Kroma: END] return nil @@ -883,6 +894,8 @@ type L1Deployments struct { ZKMerkleTrie common.Address `json:"ZKMerkleTrie"` ZKVerifier common.Address `json:"ZKVerifier"` ZKVerifierProxy common.Address `json:"ZKVerifierProxy"` + ZKProofVerifier common.Address `json:"ZKProofVerifier"` + ZKProofVerifierProxy common.Address `json:"ZKProofVerifierProxy"` // [Kroma: END] } diff --git a/kroma-chain-ops/genesis/config_test.go b/kroma-chain-ops/genesis/config_test.go index 9f4d25da85..a6b420382c 100644 --- a/kroma-chain-ops/genesis/config_test.go +++ b/kroma-chain-ops/genesis/config_test.go @@ -121,6 +121,8 @@ func TestL1Deployments(t *testing.T) { require.NotEqual(t, deployments.ZKMerkleTrie, common.Address{}) require.NotEqual(t, deployments.ZKVerifier, common.Address{}) require.NotEqual(t, deployments.ZKVerifierProxy, common.Address{}) + require.NotEqual(t, deployments.ZKProofVerifier, common.Address{}) + require.NotEqual(t, deployments.ZKProofVerifierProxy, common.Address{}) // [Kroma: END] // require.Equal(t, "AddressManager", deployments.GetName(deployments.AddressManager)) diff --git a/kroma-chain-ops/genesis/testdata/allocs-l1.json b/kroma-chain-ops/genesis/testdata/allocs-l1.json index 2628a39fff..5599b8d7a3 100644 --- a/kroma-chain-ops/genesis/testdata/allocs-l1.json +++ b/kroma-chain-ops/genesis/testdata/allocs-l1.json @@ -1,5 +1,5 @@ { - "root": "48fc97d65fce1cccbf4a2d5e90c25491399c643114bf57b5db3f51f1d7cec96a", + "root": "89b456b64d6467e5710ece1066f7420f99ded4c64838aedd586fdc28e817e144", "accounts": { "0x0000000000000000000000000000000000000001": { "balance": "1", @@ -67,138 +67,117 @@ "0x0165878a594ca255338adfa4d48449f69242eb8f": { "balance": "0", "nonce": 1, - "root": "0x581ae04da8e2ffa203420263bc7eb09d342be7035bff8477f5d7e18b5e33c232", + "root": "0x50dcd80ea68a5975c2f00ac2cd3358ddf1417ea4eacd8836275436966314519c", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "59b670e9fa9d0a427751af201d676719a970857b", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x5df489e29c0253edd77505b9c678fec4c95c2ef043b278ef257f40c6ae972e95" }, - "0x09635f643e140090a9a8dcd712ed6285858cebef": { - "balance": "0", - "nonce": 1, - "root": "0xa7abcc6e1e344abdd761f5e3b08dfacd08b68a6533969baeeaf61e80fde624e4", - "codeHash": "0xb384f6d924b013f5f6d69dd2a55302d90e83b4ff460e8eb4478c367a8da27843", - "code": "0x6080604052600436106101b65760003560e01c806370a08231116100ec578063ad36d6cc1161008a578063d38dc7ee11610064578063d38dc7ee146105d7578063d8fe7642146105f7578063dd215c5d14610647578063facd743b1461066757600080fd5b8063ad36d6cc1461054b578063b7d636a51461059b578063d0e30db0146105cf57600080fd5b80638f09ade4116100c65780638f09ade4146104b2578063946765fd146104d2578063a51c9ace14610506578063ab91f1901461051b57600080fd5b806370a08231146104315780638129fc1c1461046757806382dae3aa1461047c57600080fd5b806339111af81161015957806354fd4d501161013357806354fd4d50146103725780635a544742146103c85780635df6a6bc146103e85780636641ea08146103fd57600080fd5b806339111af8146102f55780633a549046146103295780633ee4d4a31461033e57600080fd5b8063205c287811610195578063205c28781461025f5780632e1a7d4d1461028157806336086417146102a157806336b83469146102d557600080fd5b80621c2ff6146101bb5780630f43a6771461020c5780630ff754ea1461022b575b600080fd5b3480156101c757600080fd5b506101ef7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021857600080fd5b506036545b604051908152602001610203565b34801561023757600080fd5b506101ef7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e081565b34801561026b57600080fd5b5061027f61027a3660046124ff565b610687565b005b34801561028d57600080fd5b5061027f61029c36600461252b565b6107ba565b3480156102ad57600080fd5b506101ef7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b3480156102e157600080fd5b5061027f6102f0366004612544565b61086b565b34801561030157600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000003281565b34801561033557600080fd5b506101ef610adc565b34801561034a57600080fd5b506101ef7f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c881565b34801561037e57600080fd5b506103bb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161020391906125f1565b3480156103d457600080fd5b5061027f6103e3366004612604565b610bfa565b3480156103f457600080fd5b5061027f610ea3565b34801561040957600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000481565b34801561043d57600080fd5b5061021d61044c366004612634565b6001600160a01b031660009081526033602052604090205490565b34801561047357600080fd5b5061027f610f22565b34801561048857600080fd5b50610491601481565b6040516fffffffffffffffffffffffffffffffff9091168152602001610203565b3480156104be57600080fd5b506104916104cd366004612604565b611099565b3480156104de57600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000a81565b34801561051257600080fd5b50610491606481565b34801561052757600080fd5b50610532620186a081565b60405167ffffffffffffffff9091168152602001610203565b34801561055757600080fd5b5061058b61056636600461252b565b7f00000000000000000000000000000000000000000000000000000000000000321090565b6040519015158152602001610203565b3480156105a757600080fd5b506104917f000000000000000000000000000000000000000000000000000000000000000181565b61027f611148565b3480156105e357600080fd5b5061027f6105f236600461266f565b61129a565b34801561060357600080fd5b5061061761061236600461252b565b611573565b6040805182516fffffffffffffffffffffffffffffffff9081168252602093840151169281019290925201610203565b34801561065357600080fd5b5061027f610662366004612604565b611692565b34801561067357600080fd5b5061058b610682366004612634565b6119f8565b61068f611a7e565b6001600160a01b0382166107105760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61071a3382611ad7565b6000610737835a8460405180602001604052806000815250611d29565b9050806107ac5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b506107b660018055565b5050565b6107c2611a7e565b6107cc3382611ad7565b60006107e9335a8460405180602001604052806000815250611d29565b90508061085e5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b5061086860018055565b50565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed9190612694565b6001600160a01b0316336001600160a01b0316146109735760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff1680610a1b5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055610a7f826fffffffffffffffffffffffffffffffff8316611d49565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610bd55760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7491906126b1565b9050804210610bc4576000610b8982426126f9565b90507f0000000000000000000000000000000000000000000000000000000000000004811115610bc2576001600160a01b039250505090565b505b50506038546001600160a01b031690565b507f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c890565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7c9190612694565b6001600160a01b0316336001600160a01b031614610d025760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dae5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b610dea827f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff16611ad7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ead611e7d565b9050806108685760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e6400000000000000000000000000000000000000000000006064820152608401610707565b600054610100900460ff1615808015610f425750600054600160ff909116105b80610f5c5750303b158015610f5c575060005460ff166001145b610fce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610707565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561102c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61103461212e565b801561086857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111415760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b9392505050565b6111737f00000000000000000000000000000000000000000000000000000000000000326001612710565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316636abcf5636040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f591906126b1565b1061128e5760405162461bcd60e51b815260206004820152604260248201527f56616c696461746f72506f6f6c3a206f6e6c792063616e206465706f7369742060448201527f746f2056616c696461746f72506f6f6c206265666f7265207465726d696e617460648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610707565b6112983334611d49565b565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146113385760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c650000000000000000000000000000000000000000006064820152608401610707565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156113e15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c726561647920657869737473000000006064820152608401610707565b6113e9611e7d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561146b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148f9190612694565b90506114cd817f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff16611ad7565b7f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361156d6121ab565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906115dd5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61164f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f20657869737400000000000000000000000000000000000000000000000000006064820152608401610707565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117149190612694565b6001600160a01b0316336001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156118465760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806118ee5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b600060646118fd601484612728565b611907919061278f565b9050600061191582846127be565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e9091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b6036546000908103611a0c57506000919050565b6001600160a01b038216611a2257506000919050565b6001600160a01b0382166000818152603760205260409020546036805491929183908110611a5257611a526127ef565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b600260015403611ad05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610707565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611b655760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e636573000000000000000000000000000000000000000000000000000000006064820152608401610707565b611b6f82826126f9565b90507f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff1681108015611bb65750611bb6836119f8565b15611d0957603654600090611bcd906001906126f9565b90508015611c85576001600160a01b0384166000908152603760205260408120546036805491929184908110611c0557611c056127ef565b600091825260209091200154603680546001600160a01b039092169250829184908110611c3457611c346127ef565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611caf57611caf61281e565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611d6d908390612710565b90507f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff168110158015611db75750611db5836119f8565b155b15611d09577f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e6001600160a01b0316836001600160a01b031614611d0957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000a81101561207857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611f3457506000846fffffffffffffffffffffffffffffffff16115b156120785760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec919061284d565b915061200e8260000151856fffffffffffffffffffffffffffffffff16611d49565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a361206c82612379565b60019485019401611ead565b80156121225760358590556040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031690639902cdc090602401600060405180830381600087803b1580156120fe57600080fd5b505af1158015612112573d6000803e3d6000fd5b5050505060019550505050505090565b60009550505050505090565b600054610100900460ff16611d435760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610707565b60365480158015906121bf57506000603554115b1561234e5760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663a25ae557600160355461220491906126f9565b6040518263ffffffff1660e01b815260040161222291815260200190565b608060405180830381865afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612263919061284d565b9050600082826020015143414460014361227d91906126f9565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6122ee91906128f0565b905060368181548110612303576123036127ef565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506108689050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612423926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526124b5939291600401612904565b600060405180830381600087803b1580156124cf57600080fd5b505af11580156124e3573d6000803e3d6000fd5b5050505050565b6001600160a01b038116811461086857600080fd5b6000806040838503121561251257600080fd5b823561251d816124ea565b946020939093013593505050565b60006020828403121561253d57600080fd5b5035919050565b60008060006060848603121561255957600080fd5b83359250602084013561256b816124ea565b9150604084013561257b816124ea565b809150509250925092565b6000815180845260005b818110156125ac57602081850181015186830182015201612590565b818111156125be576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111416020830184612586565b6000806040838503121561261757600080fd5b823591506020830135612629816124ea565b809150509250929050565b60006020828403121561264657600080fd5b8135611141816124ea565b6fffffffffffffffffffffffffffffffff8116811461086857600080fd5b6000806040838503121561268257600080fd5b82359150602083013561262981612651565b6000602082840312156126a657600080fd5b8151611141816124ea565b6000602082840312156126c357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561270b5761270b6126ca565b500390565b60008219821115612723576127236126ca565b500190565b60006fffffffffffffffffffffffffffffffff80831681851681830481118215151615612757576127576126ca565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806127b2576127b2612760565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e7576127e76126ca565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561285f57600080fd5b6040516080810181811067ffffffffffffffff821117156128a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516128b7816124ea565b81526020838101519082015260408301516128d181612651565b604082015260608301516128e481612651565b60608201529392505050565b6000826128ff576128ff612760565b500690565b6001600160a01b038416815267ffffffffffffffff831660208201526060604082015260006129366060830184612586565b9594505050505056fea164736f6c634300080f000a", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000001": "01" - }, - "key": "0xaebd2e1514b4e7a57d6aea7d9336de4a0ebf14a8dbe0b3d364f6030b7abedd33" - }, "0x0b306bf915c4d645ff596e518faf3f9669b97016": { "balance": "0", "nonce": 1, - "root": "0xbd2c493f99ef428103cae815ab63a8f0a67756cefb1fbc9915ce3dd2ed7f8e56", + "root": "0x716393af6576a2310268b54f6a0892db4d501f2fc915a4cb83696318c469d44c", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "82e01223d51eb87e16a03e24687edf0f294da6f1", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x0000000000000000000000000000000000000000000000000000000000000067": "55706772616465476f7665726e6f72000000000000000000000000000000001e", + "0x0000000000000000000000000000000000000000000000000000000000000068": "312e302e3000000000000000000000000000000000000000000000000000000a", + "0x00000000000000000000000000000000000000000000000000000000000000fd": "55706772616465476f7665726e6f72000000000000000000000000000000001e", + "0x0000000000000000000000000000000000000000000000000000000000000130": "64", + "0x0000000000000000000000000000000000000000000000000000000000000131": "01", + "0x0000000000000000000000000000000000000000000000000000000000000193": "0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "0x00000000000000000000000000000000000000000000000000000000000001c7": "01", + "0x00000000000000000000000000000000000000000000000000000000000001f8": "9a676e781a523b5d0c0e43731313a708cb607508", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "5eb3bc0a489c5a8288765d2336659ebca68fcd00", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3", + "0xff6df30967a6a678f565c59a19e91e5c0dbb20cfe9f9bf26d7da6dea0fffa24c": "3300000033" }, "key": "0xa3571888cfbca68776ab582afabed39268990974a4835e694b767474e2d63a4d" }, "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82": { "balance": "0", "nonce": 1, - "root": "0x5d8430d14e16362ced860f5493e93be7cb07d45aa64d8721f53fab3dcd51eb43", + "root": "0xf8c1960c32a164f726ab23677572870650bdbdae6ba8ac935815c46a11540c79", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000098": "01", - "0x15607ed846111477865e6a5ae13858a7efc3144c7bcee5a06d87a3c693f53e7b": "01", - "0x223f14562f323bd7948caddd31987c85600c2817f2384e55c0c8839f3290e304": "01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0e801d84fa97b50751dbf25036d067dcf18858bf", - "0x7a9063cff4dcff21a2b2f1e67ae95f0c195c18b3b736c251a0911c20a1caaa57": "01", - "0x7bfc5f26b3cf6ec97010d4bb5190cf963125bb344dab3b14432f5b456f3be435": "01", - "0x7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8c": "5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", - "0xa6869e09f0e61177cfe4ab5144e7c9f7d8b39aa2279dd8bab5aba69de54a74f7": "01", - "0xa7f0fe6b160f14839da5807e54d8be701aeb7039e18d9515384c8011270d6e78": "5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", - "0xafe71ff1fe81c59ca16af21c02420893e650adae4948ece1623218f842885478": "5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", - "0xb33a3829f2d1f31fd111fcd13892b72b93a782f7b93bf968903b15b040efa321": "5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" + "0x0000000000000000000000000000000000000000000000000000000000000065": "4b726f6d615365637572697479436f756e63696c000000000000000000000028", + "0x0000000000000000000000000000000000000000000000000000000000000066": "4b53430000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000099": "02", + "0x000000000000000000000000000000000000000000000000000000000000012d": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000161": "4b726f6d615365637572697479436f756e63696c000000000000000000000028", + "0x0000000000000000000000000000000000000000000000000000000000000162": "3100000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000195": "02", + "0x00000000000000000000000000000000000000000000000000000000000001f7": "02", + "0x00000000000000000000000000000000000000000000000000000000000001f8": "01", + "0x0368ef2524a38b6b115d8ebd4b69ba6955d052f73f6a344b60cd0a0506a9d257": "70997970c51812dc3a010c7d01b50e0d17dc79c8", + "0x057edaae68d51eec754066df75dd2069eb696ff039b09734aba5812253786c27": "01", + "0x18156c81dcf3fb323401e2be29aa6cf147b01ccf17bbce35023b3250e001cde5": "010000002f", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "70e0ba845a1a0f2da3359c97e0285013525ffc49", + "0x38edd6e6b9b564301a1dfcfff8ee08e144d45b79a3fe2ad6c02b66ba5939153c": "01", + "0x3d0fb76aa8078ae9b1562043dcfdd7d5d52d2da206694e1bd45a1b44632424e6": "01", + "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296770": "010000002e", + "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296771": "020000002f", + "0x5b542b52981c4f2fa9965514d5bb7f37f1b7bc0902a6a4dc6b04dc05be85586b": "01", + "0x6bee784efeb983674392298ab585b22866bedf00ebb0eea949d1e66f3f50e71d": "1cbd3b2770909d4e10f157cabc84c7264073c9ec", + "0x7256db6e1a3a9a88515503855dfa22457f63c2a54d44fe0e7a86be7d09dfba10": "1cbd3b2770909d4e10f157cabc84c7264073c9ec", + "0x72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d01": "01", + "0x81fe90a866a48a634a12852c1be675b683a22307409932a7443b8029347be756": "312e706e6700000000000000000000000000000000000000000000000000000a", + "0xaeb5afcfa19e3c204d68128666f5742662909dbf0df67093c848d2c2853e9b39": "01", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3", + "0xb6aab34db6ad98c1b7e7142146804ce9fc6992da8076478d289c62788d5fa80f": "010000002e", + "0xd4e1ac8b62c3ff1e2c1b7113742533b8310ce5ab8a8767ead9ba8b250c7e3cc9": "70997970c51812dc3a010c7d01b50e0d17dc79c8", + "0xd9841eb47aa407700e14e706cabe283f9effe927976c5e8d4e2a2d8069f76af8": "01", + "0xec506dfa273b51989632259ed9c63e160e61bff5202e6a55d2c8927ffef177ed": "322e706e6700000000000000000000000000000000000000000000000000000a" }, "key": "0xc50ebb69c859ca3ea43ae77477b7cd716b304b912fc6cbed4066e2e43e858652" }, - "0x0e801d84fa97b50751dbf25036d067dcf18858bf": { - "balance": "0", - "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0x6392b39a2ab7ae88e9e6bf7712fc0514edd1c6b5e1053e2836765fb0f11c3729", - "code": "0x6080604052600436106101d15760003560e01c80638065657f116100f7578063bc197c8111610095578063d547741f11610064578063d547741f1461068a578063e38335e5146106aa578063f23a6e61146106bd578063f27a0c921461070257600080fd5b8063bc197c81146105d8578063c4c4c7b31461061d578063c4d252f51461063d578063d45c44351461065d57600080fd5b806391d14854116100d157806391d148541461051c578063a217fddf1461056f578063b08e51c014610584578063b1c5f427146105b857600080fd5b80638065657f146104a85780638f2a0bb0146104c85780638f61f4f5146104e857600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe146103f257806354fd4d5014610412578063584b153e1461046857806364d623531461048857600080fd5b8063248a9ca3146103525780632ab0f529146103825780632f2ff15d146103b257806331d50750146103d257600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610276578063134008d3146102aa57806313bc9f20146102bd578063150b7a02146102dd57600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612019565b610717565b005b34801561020b57600080fd5b5061021f61021a36600461208e565b6107ed565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b506102687fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60405190815260200161022b565b34801561028257600080fd5b506102687f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101fd6102b83660046120d0565b610849565b3480156102c957600080fd5b5061021f6102d836600461213c565b610941565b3480156102e957600080fd5b506103216102f8366004612261565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161022b565b34801561035e57600080fd5b5061026861036d36600461213c565b60009081526065602052604090206001015490565b34801561038e57600080fd5b5061021f61039d36600461213c565b60009081526097602052604090205460011490565b3480156103be57600080fd5b506101fd6103cd3660046122c9565b610967565b3480156103de57600080fd5b5061021f6103ed36600461213c565b610991565b3480156103fe57600080fd5b506101fd61040d3660046122c9565b6109aa565b34801561041e57600080fd5b5061045b6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161022b9190612321565b34801561047457600080fd5b5061021f61048336600461213c565b610a48565b34801561049457600080fd5b506101fd6104a336600461213c565b610a5f565b3480156104b457600080fd5b506102686104c33660046120d0565b610b15565b3480156104d457600080fd5b506101fd6104e33660046123b7565b610b54565b3480156104f457600080fd5b506102687fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561052857600080fd5b5061021f6105373660046122c9565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561057b57600080fd5b50610268600081565b34801561059057600080fd5b506102687ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156105c457600080fd5b506102686105d3366004612469565b610d93565b3480156105e457600080fd5b506103216105f33660046125a1565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561062957600080fd5b506101fd6106383660046126ad565b610dd8565b34801561064957600080fd5b506101fd61065836600461213c565b610f58565b34801561066957600080fd5b5061026861067836600461213c565b60009081526097602052604090205490565b34801561069657600080fd5b506101fd6106a53660046122c9565b611039565b6101fd6106b8366004612469565b61105e565b3480156106c957600080fd5b506103216106d836600461272b565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b34801561070e57600080fd5b50609854610268565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610741816112d7565b6000610751898989898989610b15565b905061075d81846112e4565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610799969594939291906127d9565b60405180910390a383156107e257807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516107d991815260200190565b60405180910390a25b505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806108435750610843826113f8565b92915050565b600080527f7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8b6020527fa01e231ca478cf51f663e103939e98de36fa76d3e4e0b1de673dc711acc3a01b547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166108c6576108c6813361148f565b60006108d6888888888888610b15565b90506108e2818561152f565b6108ee88888888611637565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516109269493929190612824565b60405180910390a36109378161171a565b5050505050505050565b6000818152609760205260408120546001811180156109605750428111155b9392505050565b600082815260656020526040902060010154610982816112d7565b61098c83836117a9565b505050565b60008181526097602052604081205481905b1192915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610a3a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610a44828261189d565b5050565b6000818152609760205260408120546001906109a3565b333014610ad45760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201527f62652074696d656c6f636b0000000000000000000000000000000000000000006064820152608401610a31565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b6000868686868686604051602001610b32969594939291906127d9565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610b7e816112d7565b888714610bf35760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b888514610c685760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b6000610c7a8b8b8b8b8b8b8b8b610d93565b9050610c8681846112e4565b60005b8a811015610d445780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610cc657610cc6612864565b9050602002016020810190610cdb9190612893565b8d8d86818110610ced57610ced612864565b905060200201358c8c87818110610d0657610d06612864565b9050602002810190610d1891906128ae565b8c8b604051610d2c969594939291906127d9565b60405180910390a3610d3d81612942565b9050610c89565b508315610d8657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610d7d91815260200190565b60405180910390a25b5050505050505050505050565b60008888888888888888604051602001610db4989796959493929190612a2a565b60405160208183030381529060405280519060200120905098975050505050505050565b600054610100900460ff1615808015610df85750600054600160ff909116105b80610e125750303b158015610e12575060005460ff166001145b610e845760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a31565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ee257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610eee85858585611958565b8015610f5157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610f82816112d7565b610f8b82610a48565b610ffd5760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160448201527f6e6e6f742062652063616e63656c6c65640000000000000000000000000000006064820152608401610a31565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154611054816112d7565b61098c838361189d565b600080527f7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8b6020527fa01e231ca478cf51f663e103939e98de36fa76d3e4e0b1de673dc711acc3a01b547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166110db576110db813361148f565b8786146111505760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b8784146111c55760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b60006111d78a8a8a8a8a8a8a8a610d93565b90506111e3818561152f565b60005b898110156112c15760008b8b8381811061120257611202612864565b90506020020160208101906112179190612893565b905060008a8a8481811061122d5761122d612864565b9050602002013590503660008a8a8681811061124b5761124b612864565b905060200281019061125d91906128ae565b9150915061126d84848484611637565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58868686866040516112a49493929190612824565b60405180910390a350505050806112ba90612942565b90506111e6565b506112cb8161171a565b50505050505050505050565b6112e1813361148f565b50565b6112ed82610991565b156113605760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201527f7265616479207363686564756c656400000000000000000000000000000000006064820152608401610a31565b6098548110156113d85760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460448201527f2064656c617900000000000000000000000000000000000000000000000000006064820152608401610a31565b6113e28142612afb565b6000928352609760205260409092209190915550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061084357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610843565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a44576114cf816119e7565b6114da836020611a06565b6040516020016114eb929190612b13565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610a3191600401612321565b61153882610941565b6115aa5760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f74207265616479000000000000000000000000000000000000000000006064820152608401610a31565b8015806115c557506000818152609760205260409020546001145b610a445760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560448201527f6e64656e637900000000000000000000000000000000000000000000000000006064820152608401610a31565b60008473ffffffffffffffffffffffffffffffffffffffff16848484604051611661929190612b94565b60006040518083038185875af1925050503d806000811461169e576040519150601f19603f3d011682016040523d82523d6000602084013e6116a3565b606091505b5050905080610f515760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460448201527f72616e73616374696f6e207265766572746564000000000000000000000000006064820152608401610a31565b61172381610941565b6117955760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f74207265616479000000000000000000000000000000000000000000006064820152608401610a31565b600090815260976020526040902060019055565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a4457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561183f3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610a4457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff166119d55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a31565b6119e184848484611c2f565b50505050565b606061084373ffffffffffffffffffffffffffffffffffffffff831660145b60606000611a15836002612ba4565b611a20906002612afb565b67ffffffffffffffff811115611a3857611a38612155565b6040519080825280601f01601f191660200182016040528015611a62576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611a9957611a99612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611afc57611afc612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611b38846002612ba4565b611b43906001612afb565b90505b6001811115611be0577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611b8457611b84612864565b1a60f81b828281518110611b9a57611b9a612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611bd981612be1565b9050611b46565b5083156109605760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a31565b600054610100900460ff16611cac5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a31565b611cd67f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca580611f52565b611d207fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc17f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611d6a7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e637f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611db47ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7837f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611dde7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca530611f9d565b73ffffffffffffffffffffffffffffffffffffffff811615611e2457611e247f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca582611f9d565b60005b8351811015611eb957611e737fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1858381518110611e6657611e66612864565b6020026020010151611f9d565b611ea97ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783858381518110611e6657611e66612864565b611eb281612942565b9050611e27565b5060005b8251811015611f0c57611efc7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63848381518110611e6657611e66612864565b611f0581612942565b9050611ebd565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150505050565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610a4482826117a9565b803573ffffffffffffffffffffffffffffffffffffffff81168114611fcb57600080fd5b919050565b60008083601f840112611fe257600080fd5b50813567ffffffffffffffff811115611ffa57600080fd5b60208301915083602082850101111561201257600080fd5b9250929050565b600080600080600080600060c0888a03121561203457600080fd5b61203d88611fa7565b965060208801359550604088013567ffffffffffffffff81111561206057600080fd5b61206c8a828b01611fd0565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156120a057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096057600080fd5b60008060008060008060a087890312156120e957600080fd5b6120f287611fa7565b955060208701359450604087013567ffffffffffffffff81111561211557600080fd5b61212189828a01611fd0565b979a9699509760608101359660809091013595509350505050565b60006020828403121561214e57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156121cb576121cb612155565b604052919050565b600082601f8301126121e457600080fd5b813567ffffffffffffffff8111156121fe576121fe612155565b61222f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612184565b81815284602083860101111561224457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561227757600080fd5b61228085611fa7565b935061228e60208601611fa7565b925060408501359150606085013567ffffffffffffffff8111156122b157600080fd5b6122bd878288016121d3565b91505092959194509250565b600080604083850312156122dc57600080fd5b823591506122ec60208401611fa7565b90509250929050565b60005b838110156123105781810151838201526020016122f8565b838111156119e15750506000910152565b60208152600082518060208401526123408160408501602087016122f5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008083601f84011261238457600080fd5b50813567ffffffffffffffff81111561239c57600080fd5b6020830191508360208260051b850101111561201257600080fd5b600080600080600080600080600060c08a8c0312156123d557600080fd5b893567ffffffffffffffff808211156123ed57600080fd5b6123f98d838e01612372565b909b50995060208c013591508082111561241257600080fd5b61241e8d838e01612372565b909950975060408c013591508082111561243757600080fd5b506124448c828d01612372565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561248557600080fd5b883567ffffffffffffffff8082111561249d57600080fd5b6124a98c838d01612372565b909a50985060208b01359150808211156124c257600080fd5b6124ce8c838d01612372565b909850965060408b01359150808211156124e757600080fd5b506124f48b828c01612372565b999c989b509699959896976060870135966080013595509350505050565b600067ffffffffffffffff82111561252c5761252c612155565b5060051b60200190565b600082601f83011261254757600080fd5b8135602061255c61255783612512565b612184565b82815260059290921b8401810191818101908684111561257b57600080fd5b8286015b84811015612596578035835291830191830161257f565b509695505050505050565b600080600080600060a086880312156125b957600080fd5b6125c286611fa7565b94506125d060208701611fa7565b9350604086013567ffffffffffffffff808211156125ed57600080fd5b6125f989838a01612536565b9450606088013591508082111561260f57600080fd5b61261b89838a01612536565b9350608088013591508082111561263157600080fd5b5061263e888289016121d3565b9150509295509295909350565b600082601f83011261265c57600080fd5b8135602061266c61255783612512565b82815260059290921b8401810191818101908684111561268b57600080fd5b8286015b84811015612596576126a081611fa7565b835291830191830161268f565b600080600080608085870312156126c357600080fd5b84359350602085013567ffffffffffffffff808211156126e257600080fd5b6126ee8883890161264b565b9450604087013591508082111561270457600080fd5b506127118782880161264b565b92505061272060608601611fa7565b905092959194509250565b600080600080600060a0868803121561274357600080fd5b61274c86611fa7565b945061275a60208701611fa7565b93506040860135925060608601359150608086013567ffffffffffffffff81111561278457600080fd5b61263e888289016121d3565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015260a06040820152600061280f60a083018688612790565b60608301949094525060800152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061285a606083018486612790565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156128a557600080fd5b61096082611fa7565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128e357600080fd5b83018035915067ffffffffffffffff8211156128fe57600080fd5b60200191503681900382131561201257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361297357612973612913565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015612a1d57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030181126129d357600080fd5b8701858101903567ffffffffffffffff8111156129ef57600080fd5b8036038213156129fe57600080fd5b612a09868284612790565b9a87019a9550505090840190600101612994565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015612a785773ffffffffffffffffffffffffffffffffffffffff612a6384611fa7565b16825260209283019290910190600101612a3d565b5083810360208501528881527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff891115612ab157600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152612ae281888a61297a565b6060850196909652505050608001529695505050505050565b60008219821115612b0e57612b0e612913565b500190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b4b8160178501602088016122f5565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b888160288401602088016122f5565b01602801949350505050565b8183823760009101908152919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bdc57612bdc612913565b500290565b600081612bf057612bf0612913565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea164736f6c634300080f000a", - "key": "0x02cd05fe91acd2c03ff4b49cc68eb47d53a81fbb0da60bf91d843684f767cb39" - }, "0x1291be112d480055dafd8a610b7d1e203891c274": { "balance": "0", "nonce": 1, - "root": "0xa7502d7e0c33edc1e464c30248922e1669db5c2bce2c79d47b9b7ab9538c23a1", - "codeHash": "0x8ce20df047bf750856c6c445487e6af6c20f0b6ca0bddbc3e2933e4c9beb255d", - "code": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637eb1184511610097578063d1bc76a111610066578063d1bc76a114610229578063e30c39781461023c578063e4fc6b6d1461025a578063f2fde38b1461026257600080fd5b80637eb11845146101ee5780638da5cb5b146101f857806398f1312e14610216578063baee5ed41461022157600080fd5b8063457c3977116100d3578063457c3977146101965780634f02c420146101a9578063715018a6146101de57806379ba5097146101e657600080fd5b80631249c58b1461010557806321e5e2c41461010f57806328df3f18146101425780632efd46d61461014a575b600080fd5b61010d610275565b005b61012f61011d366004610c7a565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b61010d610557565b6101717f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802981565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610139565b61010d6101a4366004610c7a565b6105e1565b6001546101ce9074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610139565b61010d61068d565b61010d6106a1565b61012f620186a081565b60005473ffffffffffffffffffffffffffffffffffffffff16610171565b61012f633b9aca0081565b61010d610756565b610171610237366004610cb7565b610870565b60015473ffffffffffffffffffffffffffffffffffffffff16610171565b61010d6108a7565b61010d610270366004610c7a565b610aa3565b61027d610bc8565b60015474010000000000000000000000000000000000000000900460ff161561032d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4d696e744d616e616765723a20616c7265616479206d696e746564206f6e207460448201527f68697320636861696e000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60007f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802973ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be9190610cd0565b6103c990600a610e44565b6103d790633b9aca00610e53565b90506000805b60025481101561046d576000600282815481106103fc576103fc610e90565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526003909152604082205490925090620186a061043f8388610e53565b6104499190610ebf565b90506104558186610efa565b9450505050808061046590610f12565b9150506103dd565b506040517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018290527f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802973ffffffffffffffffffffffffffffffffffffffff16906340c10f1990604401600060405180830381600087803b1580156104fc57600080fd5b505af1158015610510573d6000803e3d6000fd5b5050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905550505050565b61055f610bc8565b7f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802973ffffffffffffffffffffffffffffffffffffffff166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105c757600080fd5b505af11580156105db573d6000803e3d6000fd5b50505050565b6105e9610bc8565b6040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029169063f2fde38b90602401600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b5050505050565b610695610bc8565b61069f6000610c49565b565b600154339073ffffffffffffffffffffffffffffffffffffffff16811461074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610324565b61075381610c49565b50565b61075e610bc8565b60015474010000000000000000000000000000000000000000900460ff16610808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4d696e744d616e616765723a206e6f74206d696e746564206265666f7265207260448201527f656e6f756e6365206f776e6572736869700000000000000000000000000000006064820152608401610324565b7f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802973ffffffffffffffffffffffffffffffffffffffff1663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105c757600080fd5b6002818154811061088057600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6108af610bc8565b60007f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802973ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109409190610cd0565b61094b90600a610e44565b61095990633b9aca00610e53565b905060005b600254811015610a9f5760006002828154811061097d5761097d610e90565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526003909152604082205490925090620186a06109c08387610e53565b6109ca9190610ebf565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018390529192507f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe579353480299091169063a9059cbb906044016020604051808303816000875af1158015610a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a889190610f4a565b505050508080610a9790610f12565b91505061095e565b5050565b610aab610bc8565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610b0e60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610324565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561075381610b53565b600060208284031215610c8c57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610cb057600080fd5b9392505050565b600060208284031215610cc957600080fd5b5035919050565b600060208284031215610ce257600080fd5b815160ff81168114610cb057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115610d7b57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610d6157610d61610cf3565b80851615610d6e57918102915b93841c9390800290610d27565b509250929050565b600082610d9257506001610e3e565b81610d9f57506000610e3e565b8160018114610db55760028114610dbf57610ddb565b6001915050610e3e565b60ff841115610dd057610dd0610cf3565b50506001821b610e3e565b5060208310610133831016604e8410600b8410161715610dfe575081810a610e3e565b610e088383610d22565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e3a57610e3a610cf3565b0290505b92915050565b6000610cb060ff841683610d83565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e8b57610e8b610cf3565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082610ef5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115610f0d57610f0d610cf3565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f4357610f43610cf3565b5060010190565b600060208284031215610f5c57600080fd5b81518015158114610cb057600080fdfea164736f6c634300080f000a", + "root": "0x026400abc0935333d9d3abf241551d07a433eff8f420062dbf760a0467b93b72", + "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", + "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000001": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000002": "02", - "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace": "14dc79964da2c08b23698b3d3cc7ca32193d9955", - "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf": "a0ee7a142d267c1f36714e4a8f75612f20a79720", - "0x6a706e96617ceafd46f24757f71aad32b88c8bf0b8ae22ec3de611582d2d4a6c": "0bb8", - "0xc9f51ff2393193a07f116cb1ed67be0783387c719e9662a8d0ec4684dcfc0fa0": "07d0" + "0x000000000000000000000000000000000000000000000000000000000000000c": "01", + "0x000000000000000000000000000000000000000000000000000000000000003f": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000071": "5f3f1dbd7b74c6b46e8c44f98792a1daf8d69154", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "b7278a61aa25c888815afc32ad3cc52ff24fe575", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266" }, "key": "0x9f13a9db1db219667c2765a1d3e186c1b8d46609970857246a8ecb5e24965724" }, - "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8": { - "balance": "0", - "nonce": 1, - "root": "0xda52dcd6b9f0c4f11844b3c53e8aec08d63878174a1bc8693de739b3d12a180a", - "codeHash": "0xcb381a6df611025d19c4257359ea1f83fd49f8758740cd3a43e9528fdd69b1c7", - "code": "0x6080604052600436106101475760003560e01c80638c3152e9116100c0578063cff0ab9611610074578063e965084c11610059578063e965084c146104b5578063e9e05c4214610541578063f04987501461055457600080fd5b8063cff0ab96146103f4578063d53a822f1461049557600080fd5b8063a14238e7116100a5578063a14238e714610370578063b98debbf146103a0578063c30af388146103d457600080fd5b80638c3152e9146103235780639bf62d821461034357600080fd5b80635865b607116101175780636dbffb78116100fc5780636dbffb78146102ba578063724c184c146102da5780638456cb591461030e57600080fd5b80635865b6071461025c5780635c975abb1461029057600080fd5b80621c2ff6146101735780630757b244146101d15780633f4ba83a146101f157806354fd4d501461020657600080fd5b3661016e5761016c3334620186a0600060405180602001604052806000815250610588565b005b600080fd5b34801561017f57600080fd5b506101a77f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101dd57600080fd5b5061016c6101ec366004614646565b61076e565b3480156101fd57600080fd5b5061016c610e5c565b34801561021257600080fd5b5061024f6040518060400160405280600581526020017f322e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c8919061477f565b34801561026857600080fd5b506101a77f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed81565b34801561029c57600080fd5b506035546102aa9060ff1681565b60405190151581526020016101c8565b3480156102c657600080fd5b506102aa6102d5366004614792565b610f65565b3480156102e657600080fd5b506101a77f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b34801561031a57600080fd5b5061016c61103c565b34801561032f57600080fd5b5061016c61033e3660046147ab565b611141565b34801561034f57600080fd5b506032546101a79073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037c57600080fd5b506102aa61038b366004614792565b60336020526000908152604090205460ff1681565b3480156103ac57600080fd5b506101a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b3480156103e057600080fd5b5061016c6103ef366004614805565b61190f565b34801561040057600080fd5b5060015461045c906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101c8565b3480156104a157600080fd5b5061016c6104b0366004614873565b611a6d565b3480156104c157600080fd5b506105136104d0366004614792565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101c8565b61016c61054f366004614890565b610588565b34801561056057600080fd5b506101a77f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b8260005a905083156106235773ffffffffffffffffffffffffffffffffffffffff8716156106235760405162461bcd60e51b815260206004820152603d60248201527f4b726f6d61506f7274616c3a206d7573742073656e6420746f2061646472657360448201527f73283029207768656e206372656174696e67206120636f6e747261637400000060648201526084015b60405180910390fd5b6152088567ffffffffffffffff1610156106a55760405162461bcd60e51b815260206004820152603560248201527f4b726f6d61506f7274616c3a20676173206c696d6974206d75737420636f766560448201527f7220696e737472696e7369632067617320636f73740000000000000000000000606482015260840161061a565b333281146106c6575033731111000000000000000000000000000000001111015b600034888888886040516020016106e195949392919061490d565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c3284604051610751919061477f565b60405180910390a450506107658282611c5c565b50505050505050565b60355460ff16156107c15760405162461bcd60e51b815260206004820152601360248201527f4b726f6d61506f7274616c3a2070617573656400000000000000000000000000604482015260640161061a565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff16036108665760405162461bcd60e51b815260206004820152603c60248201527f4b726f6d61506f7274616c3a20796f752063616e6e6f742073656e64206d657360448201527f736167657320746f2074686520706f7274616c20636f6e747261637400000000606482015260840161061a565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa1580156108f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109189190614992565b60200151905061093561093036869003860186614a0a565b611f6f565b81146109a95760405162461bcd60e51b815260206004820152602660248201527f4b726f6d61506f7274616c3a20696e76616c6964206f757470757420726f6f7460448201527f2070726f6f660000000000000000000000000000000000000000000000000000606482015260840161061a565b60006109b487612011565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610ae95750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190614992565b6020015114155b610b5b5760405162461bcd60e51b815260206004820152603460248201527f4b726f6d61506f7274616c3a207769746864726177616c20686173682068617360448201527f20616c7265616479206265656e2070726f76656e000000000000000000000000606482015260840161061a565b604080516020808201859052600082840152825180830384018152606090920190925280519101206080870135610c6b57610bf481604051602001610ba291815260200190565b60408051601f19818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610bea888a614a7a565b8a60400135612041565b610c665760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a20696e76616c6964207769746864726177616c2060448201527f696e636c7573696f6e2070726f6f660000000000000000000000000000000000606482015260840161061a565b610d9a565b604080517f12e64a7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed16916312e64a7291610ce79185918b918b91908e013590600401614b29565b602060405180830381865afa158015610d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d289190614c2a565b610d9a5760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a20696e76616c6964207769746864726177616c2060448201527f696e636c7573696f6e2070726f6f660000000000000000000000000000000000606482015260840161061a565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e1614610f075760405162461bcd60e51b815260206004820152602660248201527f4b726f6d61506f7274616c3a206f6e6c7920677561726469616e2063616e207560448201527f6e70617573650000000000000000000000000000000000000000000000000000606482015260840161061a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000906110369073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190614992565b604001516fffffffffffffffffffffffffffffffff16612065565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e16146110e65760405162461bcd60e51b8152602060048201526024808201527f4b726f6d61506f7274616c3a206f6e6c7920677561726469616e2063616e207060448201527f6175736500000000000000000000000000000000000000000000000000000000606482015260840161061a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610f5b565b60355460ff16156111945760405162461bcd60e51b815260206004820152601360248201527f4b726f6d61506f7274616c3a2070617573656400000000000000000000000000604482015260640161061a565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146112235760405162461bcd60e51b815260206004820152603c60248201527f4b726f6d61506f7274616c3a2063616e206f6e6c792074726967676572206f6e60448201527f65207769746864726177616c20706572207472616e73616374696f6e00000000606482015260840161061a565b600061122e82612011565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036112ff5760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a207769746864726177616c20686173206e6f742060448201527f6265656e2070726f76656e207965740000000000000000000000000000000000606482015260840161061a565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190614c47565b81602001516fffffffffffffffffffffffffffffffff16101561143f5760405162461bcd60e51b815260206004820152604860248201527f4b726f6d61506f7274616c3a207769746864726177616c2074696d657374616d60448201527f70206c657373207468616e204c32204f7261636c65207374617274696e67207460648201527f696d657374616d70000000000000000000000000000000000000000000000000608482015260a40161061a565b61145e81602001516fffffffffffffffffffffffffffffffff16612065565b6114f65760405162461bcd60e51b815260206004820152604260248201527f4b726f6d61506f7274616c3a2070726f76656e207769746864726177616c206660448201527f696e616c697a6174696f6e20706572696f6420686173206e6f7420656c61707360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a40161061a565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa15801561159b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bf9190614992565b82516020820151919250146116625760405162461bcd60e51b815260206004820152604660248201527f4b726f6d61506f7274616c3a206f757470757420726f6f742070726f76656e2060448201527f6973206e6f74207468652073616d652061732063757272656e74206f7574707560648201527f7420726f6f740000000000000000000000000000000000000000000000000000608482015260a40161061a565b61168181604001516fffffffffffffffffffffffffffffffff16612065565b6117195760405162461bcd60e51b815260206004820152604260248201527f4b726f6d61506f7274616c3a20636865636b706f696e74206f7574707574206660448201527f696e616c697a6174696f6e20706572696f6420686173206e6f7420656c61707360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a40161061a565b60008381526033602052604090205460ff161561179e5760405162461bcd60e51b815260206004820152603260248201527f4b726f6d61506f7274616c3a207769746864726177616c2068617320616c726560448201527f616479206265656e2066696e616c697a65640000000000000000000000000000606482015260840161061a565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a088015161184093929190612108565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b906118a590841515815260200190565b60405180910390a2801580156118bb5750326001145b156119085760405162461bcd60e51b815260206004820152601e60248201527f4b726f6d61506f7274616c3a207769746864726177616c206661696c65640000604482015260640161061a565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146119ba5760405162461bcd60e51b815260206004820152603f60248201527f4b726f6d61506f7274616c3a2066756e6374696f6e2063616e206f6e6c79206260448201527f652063616c6c65642066726f6d207468652056616c696461746f72506f6f6c00606482015260840161061a565b6040513373111100000000000000000000000000000000111101906000906119ee908290819087908290889060200161490d565b604051602081830303815290604052905060008573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c3284604051611a5e919061477f565b60405180910390a45050505050565b600054610100900460ff1615808015611a8d5750600054600160ff909116105b80611aa75750303b158015611aa7575060005460ff166001145b611b195760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161061a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611b7757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055603580548315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116179055611bd9612166565b8015611c3c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611c92907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643614c8f565b90506000611c9e61222f565b90506000816020015160ff16826000015163ffffffff16611cbf9190614cd5565b90508215611df657600154600090611cf6908390700100000000000000000000000000000000900467ffffffffffffffff16614d3d565b90506000836040015160ff1683611d0d9190614db1565b600154611d2d9084906fffffffffffffffffffffffffffffffff16614db1565b611d379190614cd5565b600154909150600090611d8890611d619084906fffffffffffffffffffffffffffffffff16614e6d565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166122f5565b90506001861115611db757611db4611d6182876040015160ff1660018a611daf9190614c8f565b612314565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611e29908490700100000000000000000000000000000000900467ffffffffffffffff16614ee1565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611ef25760405162461bcd60e51b815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161061a565b600154600090611f1e906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816614f0d565b90506000611f3048633b9aca00612369565b611f3a9083614f4a565b905060005a611f499088614c8f565b905080821115611f6557611f65611f608284614c8f565b61237f565b5050505050505050565b6080810151600090611fd157815160208084015160408086015160608701519151611fb495949192910193845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b81516020808401516040808601516060808801516080808a01518551978801989098529386019490945284015282015260a081019190915260c001611fb4565b80516020808301516040808501516060860151608087015160a08801519351600097611fb4979096959101614f5e565b60008061204d866123ad565b905061205b818686866123df565b9695505050505050565b60007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f69190614c47565b6121009083614fb5565b421192915050565b600080600061211886600061240f565b90508061214e576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166121e35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161061a565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051273ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa1580156122cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f09190614ff2565b905090565b600061230a612304858561242d565b8361243c565b90505b9392505050565b6000670de0b6b3a764000061235561232c8583614cd5565b61233e90670de0b6b3a7640000614d3d565b61235085670de0b6b3a7640000614db1565b61244b565b61235f9086614db1565b61230a9190614cd5565b6000818311612378578161230d565b5090919050565b6000805a90505b825a6123929083614c8f565b10156123a8576123a182615091565b9150612386565b505050565b606081805190602001206040516020016123c991815260200190565b6040516020818303038152906040529050919050565b6000612406846123f087868661247c565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b6000818313612378578161230d565b6000818312612378578161230d565b600061230d670de0b6b3a76400008361246386612d8e565b61246d9190614db1565b6124779190614cd5565b612fb8565b606060008451116124cf5760405162461bcd60e51b815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b65790000000000000000000000604482015260640161061a565b60006124da846131dd565b905060006124e7866132c9565b90506000846040516020016124fe91815260200190565b60405160208183030381529060405290506000805b8451811015612d1f576000858281518110612530576125306150c9565b6020026020010151905084518311156125b15760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e677468000000000000000000000000000000000000606482015260840161061a565b8260000361265057805180516020918201206040516125ff926125d992910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61264b5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f742068617368000000604482015260640161061a565b612773565b8051516020116126ec578051805160209182012060405161267a926125d992910190815260200190565b61264b5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c206861736800000000000000000000000000000000000000000000000000606482015260840161061a565b8051845160208087019190912082519190920120146127735760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f6520686173680000000000000000000000000000000000000000000000000000606482015260840161061a565b61277f60106001614fb5565b8160200151510361292757845183036128bf576127b981602001516010815181106127ac576127ac6150c9565b602002602001015161332c565b965060008751116128325760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e6368290000000000606482015260840161061a565b600186516128409190614c8f565b82146128b45760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e636829000000000000606482015260840161061a565b50505050505061230d565b60008584815181106128d3576128d36150c9565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106128fe576128fe6150c9565b6020026020010151905061291181613458565b955061291e600186614fb5565b94505050612d0c565b600281602001515103612c9e57600061293f8261347d565b9050600081600081518110612956576129566150c9565b016020015160f81c9050600061296d6002836150f8565b61297890600261511a565b90506000612989848360ff166134a1565b905060006129978a896134a1565b905060006129a583836134d7565b905080835114612a1d5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b6579000000000000606482015260840161061a565b60ff851660021480612a32575060ff85166003145b15612bd35780825114612aad5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e646572000000606482015260840161061a565b612ac787602001516001815181106127ac576127ac6150c9565b9c5060008d5111612b405760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c6561662900000000000000606482015260840161061a565b60018c51612b4e9190614c8f565b8814612bc25760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c656166290000000000000000606482015260840161061a565b50505050505050505050505061230d565b60ff85161580612be6575060ff85166001145b15612c2557612c128760200151600181518110612c0557612c056150c9565b6020026020010151613458565b9950612c1e818a614fb5565b9850612c93565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e207072656669780000000000000000000000000000606482015260840161061a565b505050505050612d0c565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f6465000000000000000000000000000000000000000000000000606482015260840161061a565b5080612d1781615091565b915050612513565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e7473000000000000000000000000000000000000000000000000000000606482015260840161061a565b6000808213612ddf5760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161061a565b60006060612dec8461358b565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213612fe957506000919050565b680755bf798b4a1bf1e582126130415760405162461bcd60e51b815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161061a565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156131fb576131fb6144a2565b60405190808252806020026020018201604052801561324057816020015b60408051808201909152606080825260208201528152602001906001900390816132195790505b50915060005b818110156132c257604051806040016040528085838151811061326b5761326b6150c9565b6020026020010151815260200161329a86848151811061328d5761328d6150c9565b6020026020010151613647565b8152508382815181106132af576132af6150c9565b6020908102919091010152600101613246565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613321578060011b82018184015160001a8060041c8253600f8116600183015350506001016132f3565b509295945050505050565b6060600080600061333c8561365a565b9194509250905060008160018111156133575761335761513d565b146133ca5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d00000000000000606482015260840161061a565b6133d48284614fb5565b8551146134495760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e646572000000000000000000000000606482015260840161061a565b61240685602001518484613f8f565b606060208260000151106134745761346f8261332c565b611036565b61103682614023565b606061103661349c83602001516000815181106127ac576127ac6150c9565b6132c9565b6060825182106134c05750604080516020810190915260008152611036565b61230d83838486516134d29190614c8f565b614039565b60008082518451106134ea5782516134ed565b83515b90505b8082108015613574575082828151811061350c5761350c6150c9565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684838151811061354b5761354b6150c9565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613584578160010191506134f0565b5092915050565b60008082116135dc5760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161061a565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060611036613655836141a5565b614274565b6000806000808460000151116136fe5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161061a565b6020840151805160001a607f8111613723576000600160009450945094505050613f88565b60b781116138fd576000613738608083614c8f565b9050808760000151116137d95760405162461bcd60e51b815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a40161061a565b6001838101517fff0000000000000000000000000000000000000000000000000000000000000016908214158061385257507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b6138ea5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a40161061a565b5060019550935060009250613f88915050565b60bf8111613be357600061391260b783614c8f565b9050808760000151116139b35760405162461bcd60e51b815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a40161061a565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613a775760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a40161061a565b600184015160088302610100031c60378111613b215760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a40161061a565b613b2b8184614fb5565b895111613bc65760405162461bcd60e51b815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a40161061a565b613bd1836001614fb5565b9750955060009450613f889350505050565b60f78111613caa576000613bf860c083614c8f565b905080876000015111613c995760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a40161061a565b600195509350849250613f88915050565b6000613cb760f783614c8f565b905080876000015111613d585760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a40161061a565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613e1c5760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a40161061a565b600184015160088302610100031c60378111613ec65760405162461bcd60e51b815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a40161061a565b613ed08184614fb5565b895111613f6b5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a40161061a565b613f76836001614fb5565b9750955060019450613f889350505050565b9193909250565b60608167ffffffffffffffff811115613faa57613faa6144a2565b6040519080825280601f01601f191660200182016040528015613fd4576020820181803683370190505b509050811561230d576000613fe98486614fb5565b90506020820160005b8481101561400a578281015182820152602001613ff2565b84811115614019576000858301525b5050509392505050565b6060611036826020015160008460000151613f8f565b60608182601f01101561408e5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161061a565b8282840110156140e05760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161061a565b818301845110156141335760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161061a565b606082158015614152576040519150600082526020820160405261419c565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561418b578051835260209283019201614173565b5050858452601f01601f1916604052505b50949350505050565b604080518082019091526000808252602082015260008251116142565760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161061a565b50604080518082019091528151815260209182019181019190915290565b606060008060006142848561365a565b91945092509050600181600181111561429f5761429f61513d565b146143125760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d0000000000000000606482015260840161061a565b845161431e8385614fb5565b146143915760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e6465720000000000000000000000000000606482015260840161061a565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816143a85790505093506000835b86518110156144965760008061441b6040518060400160405280858c600001516143ff9190614c8f565b8152602001858c602001516144149190614fb5565b905261365a565b5091509150604051806040016040528083836144379190614fb5565b8152602001848b6020015161444c9190614fb5565b815250888581518110614461576144616150c9565b6020908102919091010152614477600185614fb5565b93506144838183614fb5565b61448d9084614fb5565b925050506143d5565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156144fa576144fa6144a2565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461452457600080fd5b50565b600082601f83011261453857600080fd5b813567ffffffffffffffff811115614552576145526144a2565b6145656020601f19601f840116016144d1565b81815284602083860101111561457a57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156145a957600080fd5b60405160c0810167ffffffffffffffff82821081831117156145cd576145cd6144a2565b8160405282935084358352602085013591506145e882614502565b816020840152604085013591506145fe82614502565b816040840152606085013560608401526080850135608084015260a085013591508082111561462c57600080fd5b5061463985828601614527565b60a0830152505092915050565b600080600080600085870361010081121561466057600080fd5b863567ffffffffffffffff8082111561467857600080fd5b6146848a838b01614597565b97506020890135965060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0840112156146bd57600080fd5b60408901955060e08901359250808311156146d757600080fd5b828901925089601f8401126146eb57600080fd5b82359150808211156146fc57600080fd5b508860208260051b840101111561471257600080fd5b959894975092955050506020019190565b60005b8381101561473e578181015183820152602001614726565b8381111561474d576000848401525b50505050565b6000815180845261476b816020860160208601614723565b601f01601f19169290920160200192915050565b60208152600061230d6020830184614753565b6000602082840312156147a457600080fd5b5035919050565b6000602082840312156147bd57600080fd5b813567ffffffffffffffff8111156147d457600080fd5b6147e084828501614597565b949350505050565b803567ffffffffffffffff8116811461480057600080fd5b919050565b60008060006060848603121561481a57600080fd5b833561482581614502565b9250614833602085016147e8565b9150604084013567ffffffffffffffff81111561484f57600080fd5b61485b86828701614527565b9150509250925092565b801515811461452457600080fd5b60006020828403121561488557600080fd5b813561230d81614865565b600080600080600060a086880312156148a857600080fd5b85356148b381614502565b9450602086013593506148c8604087016147e8565b925060608601356148d881614865565b9150608086013567ffffffffffffffff8111156148f457600080fd5b61490088828901614527565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614961816049850160208701614723565b919091016049019695505050505050565b80516fffffffffffffffffffffffffffffffff8116811461480057600080fd5b6000608082840312156149a457600080fd5b6040516080810181811067ffffffffffffffff821117156149c7576149c76144a2565b60405282516149d581614502565b8152602083810151908201526149ed60408401614972565b60408201526149fe60608401614972565b60608201529392505050565b600060a08284031215614a1c57600080fd5b60405160a0810181811067ffffffffffffffff82111715614a3f57614a3f6144a2565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600067ffffffffffffffff80841115614a9557614a956144a2565b8360051b6020614aa68183016144d1565b868152918501918181019036841115614abe57600080fd5b865b84811015614af257803586811115614ad85760008081fd5b614ae436828b01614527565b845250918301918301614ac0565b50979650505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b8481526000602060808184015280608084015260018060a085015260c0840160c060408601528087825260e08601905060e08860051b87010191508860005b89811015614c12577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2088850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112614bc957600080fd5b8b01868101903567ffffffffffffffff811115614be557600080fd5b803603821315614bf457600080fd5b614bff868284614afe565b9550505091850191908501908401614b68565b50505080935050505082606083015295945050505050565b600060208284031215614c3c57600080fd5b815161230d81614865565b600060208284031215614c5957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015614ca157614ca1614c60565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614ce457614ce4614ca6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614d3857614d38614c60565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614d7757614d77614c60565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614dab57614dab614c60565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615614df257614df2614c60565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615614e2d57614e2d614c60565b60008712925087820587128484161615614e4957614e49614c60565b87850587128184161615614e5f57614e5f614c60565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614ea757614ea7614c60565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614edb57614edb614c60565b50500190565b600067ffffffffffffffff808316818516808303821115614f0457614f04614c60565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f4557614f45614c60565b500290565b600082614f5957614f59614ca6565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152614fa960c0830184614753565b98975050505050505050565b60008219821115614fc857614fc8614c60565b500190565b805163ffffffff8116811461480057600080fd5b805160ff8116811461480057600080fd5b600060c0828403121561500457600080fd5b60405160c0810181811067ffffffffffffffff82111715615027576150276144a2565b60405261503383614fcd565b815261504160208401614fe1565b602082015261505260408401614fe1565b604082015261506360608401614fcd565b606082015261507460808401614fcd565b608082015261508560a08401614972565b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150c2576150c2614c60565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff83168061510b5761510b614ca6565b8060ff84160691505092915050565b600060ff821660ff84168082101561513457615134614c60565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000001": "2700000000000000000000000000000000000000003b9aca00", - "0x0000000000000000000000000000000000000000000000000000000000000032": "dead" - }, - "key": "0x0ca8700cbcfbb19114f6c493c0f446cb5554349ae166db6cd30363717639c13b" - }, "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6": { "balance": "0", "nonce": 1, - "root": "0x36558f71e4a01100b3d09604ba6e4e1053d7f74e84a958890ccc41c31cdfe411", + "root": "0xbede780aeb5a71bb68994bc70cbf143a790dac8f80d038ef61107dc64fa32148", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "4a679253410272dd5232b3ff7cf5dbb88f295319", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "7a2088a1bfc9d81c55368ae168c2c02570cb814f", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x228e1b4e1a077e8fe2073d2aea60505de76d541f0ccda8c233c439c27b0c341e" }, - "0x322813fd9a801c5507c9de605d63cea4f2ce6c44": { + "0x2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3": { "balance": "0", "nonce": 1, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0x35557ad22a54e2d0ee2fcd5267d8726f9e014d93448c30d3d0ea003f20103f13", - "code": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063761f44931161005b578063761f44931461012d5780637f46ddb214610140578063927ede2d1461018c578063aa557452146101b357600080fd5b80633687011a1461008257806354fd4d50146100975780635d93a3fc146100e9575b600080fd5b610095610090366004610bad565b6101c6565b005b6100d36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100e09190610c9b565b60405180910390f35b61011d6100f7366004610cb5565b603160209081526000938452604080852082529284528284209052825290205460ff1681565b60405190151581526020016100e0565b61009561013b366004610cf6565b610272565b6101677f000000000000000000000000420000000000000000000000000000000000000a81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e0565b6101677f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b6100956101c1366004610d8e565b6106f3565b333b1561025a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b61026a86863333888888886107af565b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614801561039057507f000000000000000000000000420000000000000000000000000000000000000a73ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103789190610e05565b73ffffffffffffffffffffffffffffffffffffffff16145b61041c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f7468657220627269646765006064820152608401610251565b3073ffffffffffffffffffffffffffffffffffffffff8816036104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c314552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c66000000000000000000000000000000000000000000006064820152608401610251565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152603160209081526040808320938a1683529281528282208683529052205460ff161515600114610590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4c314552433732314272696467653a20546f6b656e204944206973206e6f742060448201527f657363726f77656420696e20746865204c3120427269646765000000000000006064820152608401610251565b73ffffffffffffffffffffffffffffffffffffffff87811660008181526031602090815260408083208b8616845282528083208884529091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152918616602483015260448201859052906342842e0e90606401600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac878787876040516106e29493929190610e6b565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f742062652061646472657373283029000000000000000000000000000000006064820152608401610251565b6107a687873388888888886107af565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8716610852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c314552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f7420626520616464726573732830290000000000000000000000000000006064820152608401610251565b600063761f449360e01b888a89898988886040516024016108799796959493929190610eab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000959095169490941790935273ffffffffffffffffffffffffffffffffffffffff8c81166000818152603186528381208e8416825286528381208b82529095529382902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517f23b872dd000000000000000000000000000000000000000000000000000000008152908a166004820152306024820152604481018890529092506323b872dd90606401600060405180830381600087803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b50506040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169250633dbb202b9150610a67907f000000000000000000000000420000000000000000000000000000000000000a9085908990600401610f08565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a589898888604051610b139493929190610e6b565b60405180910390a4505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610b4857600080fd5b50565b803563ffffffff81168114610b5f57600080fd5b919050565b60008083601f840112610b7657600080fd5b50813567ffffffffffffffff811115610b8e57600080fd5b602083019150836020828501011115610ba657600080fd5b9250929050565b60008060008060008060a08789031215610bc657600080fd5b8635610bd181610b26565b95506020870135610be181610b26565b945060408701359350610bf660608801610b4b565b9250608087013567ffffffffffffffff811115610c1257600080fd5b610c1e89828a01610b64565b979a9699509497509295939492505050565b6000815180845260005b81811015610c5657602081850181015186830182015201610c3a565b81811115610c68576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cae6020830184610c30565b9392505050565b600080600060608486031215610cca57600080fd5b8335610cd581610b26565b92506020840135610ce581610b26565b929592945050506040919091013590565b600080600080600080600060c0888a031215610d1157600080fd5b8735610d1c81610b26565b96506020880135610d2c81610b26565b95506040880135610d3c81610b26565b94506060880135610d4c81610b26565b93506080880135925060a088013567ffffffffffffffff811115610d6f57600080fd5b610d7b8a828b01610b64565b989b979a50959850939692959293505050565b600080600080600080600060c0888a031215610da957600080fd5b8735610db481610b26565b96506020880135610dc481610b26565b95506040880135610dd481610b26565b945060608801359350610de960808901610b4b565b925060a088013567ffffffffffffffff811115610d6f57600080fd5b600060208284031215610e1757600080fd5b8151610cae81610b26565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610ea1606083018486610e22565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a0830152610efb60c083018486610e22565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000610f376060830185610c30565b905063ffffffff8316604083015294935050505056fea164736f6c634300080f000a", - "key": "0x2534d5cf18dc003706807fe440cab5aca30a915a6b5ccee4fb97946dc7ecd7cd" - }, - "0x36c02da8a0983159322a80ffe9f24b1acff8b570": { - "balance": "0", - "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0x40f28d308c3eca7e77550c82ed8881ebc93f785bad3c75d0864a869f8302b713", - "code": "0x608060405234801561001057600080fd5b506004361061016c5760003560e01c80638b51d13f116100cd578063b77bf60011610081578063c01a8c8411610066578063c01a8c84146103c4578063c6427474146103d7578063ee22610b146103ea57600080fd5b8063b77bf6001461039b578063b9774f7b146103a457600080fd5b80639ab24eb0116100b25780639ab24eb01461033e5780639ace38c2146103515780639e45e8f41461037457600080fd5b80638b51d13f146102ff57806391ddadf41461031f57600080fd5b806349ae963d116101245780636dc0ae22116101095780636dc0ae2214610256578063784547a7146102a25780638a8e784c146102b557600080fd5b806349ae963d146101fa57806354fd4d501461020d57600080fd5b80631703a018116101555780631703a0181461019957806320ea8d86146101b45780632a758595146101c757600080fd5b80630192337114610171578063080b91ee14610186575b600080fd5b61018461017f366004611a5d565b6103fd565b005b610184610194366004611b6c565b61063b565b6101a1610737565b6040519081526020015b60405180910390f35b6101846101c2366004611bbc565b6109ba565b6101ea6101d5366004611bbc565b60396020526000908152604090205460ff1681565b60405190151581526020016101ab565b6101a1610208366004611bf7565b610c9c565b6102496040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ab9190611ca5565b61027d7f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750881565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b6101ea6102b0366004611bbc565b610d85565b6101ea6102c3366004611cbf565b600082815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845260010190915290205460ff1692915050565b6101a161030d366004611bbc565b60009081526034602052604090205490565b610327610da9565b60405165ffffffffffff90911681526020016101ab565b6101a161034c366004611ce4565b610ed5565b61036461035f366004611bbc565b610ffe565b6040516101ab9493929190611d01565b61027d7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b6101a160385481565b6101a16103b2366004611bbc565b60346020526000908152604090205481565b6101846103d2366004611bbc565b6110dc565b6101a16103e5366004611bf7565b61133e565b6101846103f8366004611bbc565b6113d3565b33600061040982610ed5565b116104815760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e6572000000000060648201526084015b60405180910390fd5b60008381526039602052604090205460ff16158061049c5750815b6105355760405162461bcd60e51b8152602060048201526044602482018190527f5365637572697479436f756e63696c3a20746865206f75747075742068617320908201527f616c7265616479206265656e2072657175657374656420746f2062652064656c60648201527f6574656400000000000000000000000000000000000000000000000000000000608482015260a401610478565b6040805160248082018690528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe39a219c0000000000000000000000000000000000000000000000000000000017905260006105c87f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788828461133e565b90506105d3816110dc565b60008581526039602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905551869183917fc63c84660a471a970585c7cab9d0601af8e717ff0822a2ea049a3542fc5aa55a9190a35050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78816146106e65760405162461bcd60e51b815260206004820152603c60248201527f5365637572697479436f756e63696c3a206f6e6c792074686520636f6c6f737360448201527f65756d20636f6e74726163742063616e20626520612073656e646572000000006064820152608401610478565b60006106f433600084611741565b604080518681526020810186905291925082917eef5106e82a682c776fd7748be042f406a9ee0feaaea86ae9029477c2b91f2a910160405180910390a250505050565b6000806001610744610da9565b61074e9190611d77565b65ffffffffffff1690507f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff166397c3d3346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611d9e565b6040517f60c4247f000000000000000000000000000000000000000000000000000000008152600481018390527f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff16906360c4247f90602401602060405180830381865afa158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190611d9e565b7f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109259190611db7565b73ffffffffffffffffffffffffffffffffffffffff16638e539e8c846040518263ffffffff1660e01b815260040161095f91815260200190565b602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190611d9e565b6109aa9190611dd4565b6109b49190611e11565b91505090565b3360006109c682610ed5565b11610a395760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b600082815260336020526040902054829073ffffffffffffffffffffffffffffffffffffffff16610ad25760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b600083815260336020526040902054839074010000000000000000000000000000000000000000900460ff1615610b715760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d756c746953696757616c6c65743a20616c72656164792065786560448201527f63757465640000000000000000000000000000000000000000000000000000006064820152608401610478565b600084815260346020908152604080832033845260010190915290205460ff16610c035760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d756c746953696757616c6c65743a206e6f7420636f6e6669726d60448201527f65642079657400000000000000000000000000000000000000000000000000006064820152608401610478565b60008481526034602090815260408083203380855260018201909352922080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610c5090610ed5565b816000016000828254610c639190611e4c565b9091555050604051859033907f795394da21278ca39d59bb3ca00efeebdc0679acc420916c7385c2c5d942656f90600090a35050505050565b60008373ffffffffffffffffffffffffffffffffffffffff8116610d285760405162461bcd60e51b815260206004820152602960248201527f546f6b656e4d756c746953696757616c6c65743a20616464726573732069732060448201527f6e6f742076616c696400000000000000000000000000000000000000000000006064820152608401610478565b848484610d33610da9565b604051602001610d469493929190611e63565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012095945050505050565b6000610d8f610737565b600092835260346020526040909220549190911015919050565b60007f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a9190611db7565b73ffffffffffffffffffffffffffffffffffffffff166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ebe575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610ebb91810190611eb1565b60015b610ed057610ecb43611968565b905090565b919050565b60007f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f669190611db7565b6040517f9ab24eb000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529190911690639ab24eb090602401602060405180830381865afa158015610fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff89190611d9e565b92915050565b60336020526000908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff8416947401000000000000000000000000000000000000000090940460ff1693919061105990611ed9565b80601f016020809104026020016040519081016040528092919081815260200182805461108590611ed9565b80156110d25780601f106110a7576101008083540402835291602001916110d2565b820191906000526020600020905b8154815290600101906020018083116110b557829003601f168201915b5050505050905084565b3360006110e882610ed5565b1161115b5760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b600082815260336020526040902054829073ffffffffffffffffffffffffffffffffffffffff166111f45760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b6000838152603460209081526040808320338452600181019092529091205460ff16156112895760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d756c746953696757616c6c65743a20616c726561647920636f6e60448201527f6669726d656400000000000000000000000000000000000000000000000000006064820152608401610478565b3360008181526001838101602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556112ce90610ed5565b8160000160008282546112e19190611f2c565b9091555050604051849033907ff8a17c9136a3ae33364fac05eb088a3cbafee10c1889c88593e20ee2d8e4eb8890600090a361131b610737565b6000858152603460205260409020541061133857611338846113d3565b50505050565b600033600061134c82610ed5565b116113bf5760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b6113ca858585611741565b95945050505050565b6113db6119ea565b600081815260336020526040902054819073ffffffffffffffffffffffffffffffffffffffff166114745760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b600082815260336020526040902054829074010000000000000000000000000000000000000000900460ff16156115135760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d756c746953696757616c6c65743a20616c72656164792065786560448201527f63757465640000000000000000000000000000000000000000000000000000006064820152608401610478565b61151c83610d85565b61158e5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d756c746953696757616c6c65743a2071756f72756d206e6f742060448201527f72656163686564000000000000000000000000000000000000000000000000006064820152608401610478565b600083815260336020526040812080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff81167401000000000000000000000000000000000000000017825590919061168f9073ffffffffffffffffffffffffffffffffffffffff165a846001015485600201805461160c90611ed9565b80601f016020809104026020016040519081016040528092919081815260200182805461163890611ed9565b80156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b5050505050611a43565b9050806117045760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e4d756c746953696757616c6c65743a2063616c6c207472616e736160448201527f6374696f6e206661696c656400000000000000000000000000000000000000006064820152608401610478565b604051859033907f4e86ad0da28cbaaaa7e93e36c43b32696e970535225b316f1b84fbf30bdc04e890600090a35050505061173e60018055565b50565b60008373ffffffffffffffffffffffffffffffffffffffff81166117cd5760405162461bcd60e51b815260206004820152602960248201527f546f6b656e4d756c746953696757616c6c65743a20616464726573732069732060448201527f6e6f742076616c696400000000000000000000000000000000000000000000006064820152608401610478565b60006117da868686610c9c565b60008181526033602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16156118755760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20616c72656164792065786973747300000000000000000000000000000000006064820152608401610478565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff8089168252600060208084018281528486018b8152606086018b8152888552603390935295909220845181549351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00000000000000000000000000000000000000000090941694169390931791909117825592516001820155915190919060028201906119269082611f93565b505060388054600101905550604051819033907f1f50cd00b6a6fe3928bf4a5f2f23829e9a1c9396573b828b5fa14d95aae7e77590600090a395945050505050565b600065ffffffffffff8211156119e65760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152608401610478565b5090565b600260015403611a3c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610478565b6002600155565b600080600080845160208601878a8af19695505050505050565b60008060408385031215611a7057600080fd5b8235915060208301358015158114611a8757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611ad257600080fd5b813567ffffffffffffffff80821115611aed57611aed611a92565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611b3357611b33611a92565b81604052838152866020858801011115611b4c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611b8157600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611ba657600080fd5b611bb286828701611ac1565b9150509250925092565b600060208284031215611bce57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461173e57600080fd5b600080600060608486031215611c0c57600080fd5b8335611c1781611bd5565b925060208401359150604084013567ffffffffffffffff811115611ba657600080fd5b6000815180845260005b81811015611c6057602081850181015186830182015201611c44565b81811115611c72576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611cb86020830184611c3a565b9392505050565b60008060408385031215611cd257600080fd5b823591506020830135611a8781611bd5565b600060208284031215611cf657600080fd5b8135611cb881611bd5565b73ffffffffffffffffffffffffffffffffffffffff851681528315156020820152826040820152608060608201526000611d3e6080830184611c3a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600065ffffffffffff83811690831681811015611d9657611d96611d48565b039392505050565b600060208284031215611db057600080fd5b5051919050565b600060208284031215611dc957600080fd5b8151611cb881611bd5565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e0c57611e0c611d48565b500290565b600082611e47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015611e5e57611e5e611d48565b500390565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201526000611e986080830185611c3a565b905065ffffffffffff8316606083015295945050505050565b600060208284031215611ec357600080fd5b815165ffffffffffff81168114611cb857600080fd5b600181811c90821680611eed57607f821691505b602082108103611f26577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115611f3f57611f3f611d48565b500190565b601f821115611f8e57600081815260208120601f850160051c81016020861015611f6b5750805b601f850160051c820191505b81811015611f8a57828155600101611f77565b5050505b505050565b815167ffffffffffffffff811115611fad57611fad611a92565b611fc181611fbb8454611ed9565b84611f44565b602080601f8311600181146120145760008415611fde5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611f8a565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561206157888601518255948401946001909101908401612042565b508582101561209d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea164736f6c634300080f000a", - "key": "0x485bdae81e6998854e4621c39469c7a360ddb5f9a5703fd7bcdfea372f9213e6" + "codeHash": "0x211e71557cdc4d38ea1b13499a451f81e5970c01a02855ab4bc84aa9ad6ca868", + "code": "0x608060405234801561001057600080fd5b50600436106102f45760003560e01c80638abf0af011610191578063b172597e116100e3578063c2d9b68411610097578063d706200511610071578063d706200514610826578063de7d4d6a1461084d578063fdbb3fd21461085757600080fd5b8063c2d9b684146107d4578063c42996d614610800578063c7ab2c071461081357600080fd5b8063b744d2f9116100c8578063b744d2f914610773578063bcacc70a14610786578063c0a63a79146107ad57600080fd5b8063b172597e1461074d578063b55cd78e1461076057600080fd5b8063a51c9ace11610145578063a85120e41161011f578063a85120e414610700578063ad42945114610713578063ae9483e01461072657600080fd5b8063a51c9ace146106d2578063a63b8d14146106da578063a8387172146106ed57600080fd5b8063913f1a9f11610176578063913f1a9f14610655578063960a08931461068a578063981cee531461069d57600080fd5b80638abf0af01461062f5780638c1516c71461064257600080fd5b806354469aea1161024a5780636b9ffeac116101fe578063833a333b116101d8578063833a333b146105c5578063842d0d3b146105d857806386d18a941461061c57600080fd5b80636b9ffeac1461053d5780637db41f971461057257806382dae3aa146105bd57600080fd5b80635636aabd1161022f5780635636aabd146104c757806356576b5b146104da5780635959b7651461050157600080fd5b806354469aea1461046b57806354fd4d501461047e57600080fd5b8063209a9694116102ac5780633608641711610286578063360864171461040657806340ce01f114610445578063536afae41461045857600080fd5b8063209a9694146103b5578063270a1644146103e057806331d8e007146103f357600080fd5b806319412a20116102dd57806319412a201461037c5780631e5d81781461038f5780631f86f4f1146103a257600080fd5b806308fab167146102f9578063150b7a021461030e575b600080fd5b61030c61030736600461382c565b61087e565b005b61034661031c366004613863565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b61030c61038a3660046138fe565b610b8d565b61030c61039d366004613943565b610cc7565b61030c6103b03660046139c9565b61105e565b6103c86103c336600461382c565b611407565b6040516001600160801b039091168152602001610373565b61030c6103ee3660046139f3565b61141c565b61030c610401366004613943565b6114f7565b61042d7f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c081565b6040516001600160a01b039091168152602001610373565b61030c6104533660046139c9565b611989565b6103c86104663660046139f3565b611c42565b61030c610479366004613a0e565b611d30565b6104ba6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516103739190613a5e565b6103c86104d53660046139f3565b611f3d565b61042d7f000000000000000000000000ff000000000000000000000000000000000000ff81565b6103c861050f3660046139f3565b6001600160a01b0316600090815260208190526040902060020154600160801b90046001600160801b031690565b6103c861054b3660046139f3565b6001600160a01b03166000908152602081905260409020600301546001600160801b031690565b6103c8610580366004613aaf565b6001600160a01b0391821660009081526020818152604080832093909416825260069092019091522054600160801b90046001600160801b031690565b6103c8601481565b6103c86105d3366004613aaf565b612028565b6103c86105e6366004613aaf565b6001600160a01b03918216600090815260208181526040808320939094168252600590920190915220546001600160801b031690565b6103c861062a366004613ae2565b6120a1565b6103c861063d3660046139f3565b612112565b61030c6106503660046139f3565b61214b565b6103c86106633660046139f3565b6001600160a01b03166000908152602081905260409020600401546001600160801b031690565b6103c861069836600461382c565b6122f2565b6103c86106ab3660046139f3565b6001600160a01b03166000908152602081905260409020600201546001600160801b031690565b6103c8606481565b6103c86106e83660046139f3565b6122fe565b61030c6106fb3660046139f3565b61234e565b6103c861070e36600461382c565b61246e565b61030c610721366004613b1e565b612805565b61042d7f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae81565b6103c861075b3660046139f3565b612af2565b6103c861076e366004613aaf565b612b2a565b61030c61078136600461382c565b612b8f565b6103c87f000000000000000000000000000000000000000000000000000000000000000a81565b61042d7f00000000000000000000000023618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f81565b61042d6107e23660046139f3565b6001600160a01b039081166000908152602081905260409020541690565b6103c861080e36600461382c565b612e87565b6103c8610821366004613aaf565b613040565b61042d7f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27481565b6103c8620f424081565b6103c87f000000000000000000000000000000000000000000000000000000000000007881565b6001600160a01b0382811660009081526020819052604090205483911633146108d3576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160801b0316600003610916576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42610920846122fe565b6001600160801b03161115610961576040517f285d5a9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f970531c10000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015242917f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae9091169063970531c190602401602060405180830381865afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190613b78565b6001600160801b03161115610a49576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a53838361307e565b6040517f5bab847f0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600160248301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae1690635bab847f90604401600060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b5050506001600160a01b03808516600090815260208190526040902054610b4092507f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c274821691166001600160801b038516613131565b6040516001600160801b03831681526001600160a01b038416907fab48b3d59a240196dc5bdd7f7a638fca310f8194c7d350c3dd7765861311ddf8906020015b60405180910390a2505050565b336001600160a01b037f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae1614610bef576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610c2f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03838116600090815260208190526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692841692909217909155610c8390849084906131fd565b6040516001600160801b03831681526001600160a01b038416907fadb1a06aea2cd2ff20eac971640a5eb7d687df3e3a897be2f334836494958a4790602001610b80565b6000819003610d02576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166000908152602081815260408083203384526006019091528120905b82811015610e5a57816001016000858584818110610d4857610d48613b95565b602090810292909201358352508101919091526040016000908120546001600160801b03169003610da5576040517fe77a0da400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42610dc98633878786818110610dbd57610dbd613b95565b905060200201356120a1565b6001600160801b03161115610e0a576040517f285d5a9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001016000858584818110610e2257610e22613b95565b6020908102929092013583525081019190915260400160002080546fffffffffffffffffffffffffffffffff19169055600101610d28565b506000610e678533613333565b6001600160a01b0386166000908152602081815260408083206004810180546fffffffffffffffffffffffffffffffff1981166001600160801b039182168b900382161790915533855260069091019092529091208054808316600160801b91829004841688900390931602919091179055905060005b83811015610fbb577f000000000000000000000000ff000000000000000000000000000000000000ff6001600160a01b03166342842e0e3033888886818110610f2957610f29613b95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610f9857600080fd5b505af1158015610fac573d6000803e3d6000fd5b50505050806001019050610ede565b506001600160801b03811615611008576110086001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27416336001600160801b038416613131565b336001600160a01b0316856001600160a01b03167f6fcfb0c3a157955b6809f57bb114c142779ab9b7dd686a1b28ec0f2c9edfb94386868560405161104f93929190613c13565b60405180910390a35050505050565b8160026040517f30ccebb50000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae16906330ccebb590602401602060405180830381865afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111049190613c6f565b600581111561111557611115613c40565b10806111bf57506040517f56b65e970000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae16906356b65e9790602401602060405180830381865afa15801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf9190613c90565b156111f6576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112028433613333565b90506001600160801b0381161561129a576112506001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27416336001600160801b038416613131565b6040516001600160801b038216815233906001600160a01b038616907ff31a7084636b55317cfeed458343e6f580e12d52ba89be9f1faae91731fcce429060200160405180910390a35b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000ff000000000000000000000000000000000000ff6001600160a01b0316906342842e0e90606401600060405180830381600087803b15801561132157600080fd5b505af1158015611335573d6000803e3d6000fd5b505050506001600160a01b038416600090815260208181526040808320338452600681018352818420600490910180546001600160801b03808216600190810182166fffffffffffffffffffffffffffffffff19938416179093558354600160801b808204831685018316029082161784558987529190920190935292208054429092169190921617905560405183815233906001600160a01b038616907f7a9043ba5086cf56c416db64f7608d06eae96d08a7e35a101ad4f42aab23585d906020015b60405180910390a350505050565b600061141383836133d2565b90505b92915050565b60006114288233613333565b9050806001600160801b031660000361146d576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114aa6001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27416336001600160801b038416613131565b6040516001600160801b038216815233906001600160a01b038416907ff31a7084636b55317cfeed458343e6f580e12d52ba89be9f1faae91731fcce429060200160405180910390a35050565b8260026040517f30ccebb50000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae16906330ccebb590602401602060405180830381865afa158015611579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190613c6f565b60058111156115ae576115ae613c40565b108061165857506040517f56b65e970000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae16906356b65e9790602401602060405180830381865afa158015611634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190613c90565b1561168f576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290036116ca576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116d68533613333565b90506001600160801b0381161561176e576117246001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27416336001600160801b038416613131565b6040516001600160801b038216815233906001600160a01b038716907ff31a7084636b55317cfeed458343e6f580e12d52ba89be9f1faae91731fcce429060200160405180910390a35b6001600160a01b0385166000908152602081815260408083203384526006019091528120905b848110156118c3577f000000000000000000000000ff000000000000000000000000000000000000ff6001600160a01b03166342842e0e33308989868181106117df576117df613b95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561184e57600080fd5b505af1158015611862573d6000803e3d6000fd5b505050504282600101600088888581811061187f5761187f613b95565b90506020020135815260200190815260200160002060006101000a8154816001600160801b0302191690836001600160801b03160217905550806001019050611794565b506001600160a01b0386166000908152602081815260408083206004810180546fffffffffffffffffffffffffffffffff1981166001600160801b039182168b0182161790915533855260069091019092529091208054808316600160801b918290048416880190931602919091179055336001600160a01b0316866001600160a01b03167fafdb227ea10128ee703397dbff24db1f7c90303e6fff8068a2712a1b10c935f18787604051611979929190613cb2565b60405180910390a3505050505050565b6001600160a01b03821660009081526020818152604080832033845260060182528083208484526001810190925282205490916001600160801b0390911690036119ff576040517fe77a0da400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42611a0b8433856120a1565b6001600160801b03161115611a4c576040517f285d5a9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a588433613333565b9050611b0c8433856001600160a01b03928316600090815260208181526040808320949095168252600684018152848220600490940180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001600160801b03808316820181166fffffffffffffffffffffffffffffffff19938416179093558654600160801b808204851690920184169091029216919091178555928252600190930190925291902080549091169055565b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018490527f000000000000000000000000ff000000000000000000000000000000000000ff6001600160a01b0316906342842e0e90606401600060405180830381600087803b158015611b9357600080fd5b505af1158015611ba7573d6000803e3d6000fd5b505050506001600160801b03811615611bf757611bf76001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27416336001600160801b038416613131565b604080518481526001600160801b038316602082015233916001600160a01b038716917fd1343dccf52a899cdc8aaa99714d930d2871b21c218512c779ca3f7c7fddab4191016113f9565b6000336001600160a01b037f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae1614611ca6576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b038116600090815260208190526040902060020180546fffffffffffffffffffffffffffffffff197f000000000000000000000000000000000000000000000000000000000000000a600160801b8084046001600160801b0390811683018116909102928316938116928116929092178101909116919091179091555b919050565b806001600160801b0316600003611d73576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040517f30ccebb50000000000000000000000000000000000000000000000000000000081523360048201527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae6001600160a01b0316906330ccebb590602401602060405180830381865afa158015611df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e169190613c6f565b6005811115611e2757611e27613c40565b03611e5e576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e6a338260016131fd565b6040516001600160801b038216815233907fadb1a06aea2cd2ff20eac971640a5eb7d687df3e3a897be2f334836494958a479060200160405180910390a26040517fe428c2f40000000000000000000000000000000000000000000000000000000081523360048201527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae6001600160a01b03169063e428c2f490602401600060405180830381600087803b158015611f2257600080fd5b505af1158015611f36573d6000803e3d6000fd5b5050505050565b6000336001600160a01b037f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae1614611fa1576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b038116600090815260208190526040902060020180547f000000000000000000000000000000000000000000000000000000000000000a6001600160801b03600160801b808404821683900382160280821693821693909317829003166fffffffffffffffffffffffffffffffff199290921691909117909155919050565b6001600160a01b038083166000908152602081815260408083209385168352600684019091528120600483015481549293926001600160801b03600160801b909204821691859161207a911683613cf5565b83546120969190600160801b90046001600160801b0316613d1d565b979650505050505050565b6001600160a01b0380841660009081526020818152604080832093861683526006909301815282822084835260010190529081205461210a907f0000000000000000000000000000000000000000000000000000000000000078906001600160801b0316613d4c565b949350505050565b6001600160a01b03811660009081526020819052604081206002810154600390910154611416916001600160801b039081169116613d4c565b336001600160a01b037f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae16146121ad576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600090815260208190526040812060020180549091906121e9906001600160801b03600160801b820481169116613cf5565b90507f000000000000000000000000000000000000000000000000000000000000000a6001600160801b0316816001600160801b03161015612257576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81546001600160801b03600160801b80830482167f000000000000000000000000000000000000000000000000000000000000000a9081018316909102919092161783556001600160a01b038416907f7ad6f32675ff7ed77c34b45d23cd987ea6a62560f390baac683de0bc6b24fb7e906122d28185613cf5565b604080516001600160801b03938416815292909116602083015201610b80565b60006114138383613452565b6001600160a01b038116600090815260208190526040812060010154611416907f0000000000000000000000000000000000000000000000000000000000000078906001600160801b0316613d4c565b336001600160a01b037f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae16146123b0576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260208190526040902060020180547f000000000000000000000000000000000000000000000000000000000000000a6001600160801b03600160801b8084048216839003821681029382168481178087559596957fc8d4f2228d78be7d0ca97344025aae4f9bc2c87ece32295d72791a4d39f2a71a9561244794939091048316921617613cf5565b604080516001600160801b0393841681529290911660208301520160405180910390a25050565b60008260026040517f30ccebb50000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae16906330ccebb590602401602060405180830381865afa1580156124f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125169190613c6f565b600581111561252757612527613c40565b10806125d157506040517f56b65e970000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae16906356b65e9790602401602060405180830381865afa1580156125ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d19190613c90565b15612608576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160801b031660000361264b576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126896001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c2741633306001600160801b0387166134c1565b60006126958585613452565b6001600160a01b038616600090815260208181526040808320600381018054600160801b6fffffffffffffffffffffffffffffffff1982166001600160801b039283168d0183169081178290048316890183168202179092553386526005909201909352922080548316840183164290931690910291909117905590506040517f5bab847f0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152600060248301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae1690635bab847f90604401600060405180830381600087803b15801561279557600080fd5b505af11580156127a9573d6000803e3d6000fd5b5050604080516001600160801b038089168252851660208201523393506001600160a01b03891692507f334cabe84b7338f2bdd62070c02f24ffbcc7735e46f425fa401db349717e1328910160405180910390a3949350505050565b336001600160a01b037f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae1614612867576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128dc7f00000000000000000000000023618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f30836128978688613d4c565b6128a19190613d4c565b6001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c274169291906001600160801b03166134c1565b7f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c06001600160a01b0316846001600160a01b03160361298d576129887f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0826129448587613d4c565b61294e9190613d4c565b6001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c2741691906001600160801b0316613131565b612aec565b6001600160a01b03841660009081526020819052604090206003810180546001600160801b03808216870181166fffffffffffffffffffffffffffffffff19928316179092556002830180548084168601841692169190911781556004909201541615612a425760028101546001600160801b0390811690841681612a1457612a14613d77565b6002830180546001600160801b0380821694909304600160801b918290048416019092169091029190911790555b80547f000000000000000000000000000000000000000000000000000000000000000a6001600160801b03600160801b8084048216839003821681029382168481178087556001600160a01b038b16957fc8d4f2228d78be7d0ca97344025aae4f9bc2c87ece32295d72791a4d39f2a71a9594612ac794909204821692911617613cf5565b604080516001600160801b0393841681529290911660208301520160405180910390a2505b50505050565b6001600160a01b038116600090815260208190526040812060020154611416906001600160801b03600160801b820481169116613cf5565b6001600160a01b0382811660009081526020818152604080832093851683526005909301905290812054611413907f000000000000000000000000000000000000000000000000000000000000007890600160801b90046001600160801b0316613d4c565b806001600160801b0316600003612bd2576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612bde8383613452565b9050806001600160801b0316600003612c23576040517fab32f25400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166000908152602081815260408083203384526005019091529020546001600160801b039081169082161115612c8e576040517fab32f25400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42612c998433612b2a565b6001600160801b03161115612cda576040517f285d5a9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166000908152602081815260408083206003810180546001600160801b03600160801b80830482168990038216028082169282169290921789900381166fffffffffffffffffffffffffffffffff1992831617909255338652600590920190935292208054808316859003909216919092161790556040517f5bab847f0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600160248301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae1690635bab847f90604401600060405180830381600087803b158015612ddb57600080fd5b505af1158015612def573d6000803e3d6000fd5b50612e329250506001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c274169050336001600160801b038516613131565b604080516001600160801b0380851682528316602082015233916001600160a01b038616917f6acf5e34cb1562e3a0785bb4565e0761928cda3dd258168c73bca09621c669e9910160405180910390a3505050565b6000336001600160a01b037f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae1614612eeb576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038084166000818152602081905260409020600201917f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0169003612f9657612f8d6001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c274167f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c06001600160801b038616613131565b82915050611416565b6000612fae6001600160801b03851660146064613512565b905061300d6001600160a01b037f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c274167f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c06001600160801b038416613131565b81546fffffffffffffffffffffffffffffffff198116919094036001600160801b03948516810190941617905550919050565b6001600160a01b03808316600090815260208181526040808320938516835260059093019052908120546114139084906001600160801b03166133d2565b6001600160a01b038216600090815260208190526040902060020180546130b7906001600160801b03600160801b820481169116613cf5565b6001600160801b0316826001600160801b03161115613102576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546fffffffffffffffffffffffffffffffff1981166001600160801b03918216939093031691909117905550565b6040516001600160a01b0383166024820152604481018290526131f89084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526135b4565b505050565b6001600160a01b0380841660009081526020819052604090209061324e907f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c2741685306001600160801b0387166134c1565b6002810180546fffffffffffffffffffffffffffffffff198082166001600160801b039283168701831617909255600183018054909216429091161790558115612aec576040517f5bab847f0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152600060248301527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae1690635bab847f90604401600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b5050505050505050565b6001600160a01b038083166000908152602081815260408083209385168352600684019091528120600483015481549293926001600160801b03600160801b9092048216918591613385911683613cf5565b83546133a19190600160801b90046001600160801b0316613d1d565b83546fffffffffffffffffffffffffffffffff19166001600160801b03939093169290921790925595945050505050565b6001600160a01b038216600090815260208190526040812060030154611413906001600160801b0316613406906001613d4c565b6001600160a01b038516600090815260208190526040902060030154620f424090600160801b90046001600160801b03166134419190613d4c565b6001600160801b0385169190613512565b6001600160a01b03821660009081526020819052604081206003015461141390620f424090600160801b90046001600160801b03166134919190613d4c565b6001600160a01b0385166000908152602081905260409020600301546001600160801b0316613441906001613d4c565b6040516001600160a01b0380851660248301528316604482015260648101829052612aec9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613176565b6000838302608081901c6001600160801b03841611613592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826001600160801b031681816135aa576135aa613d77565b0495945050505050565b6000613609826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136b69092919063ffffffff16565b905080516000148061362a57508080602001905181019061362a9190613c90565b6131f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401613589565b606061210a848460008585600080866001600160a01b031685876040516136dd9190613da6565b60006040518083038185875af1925050503d806000811461371a576040519150601f19603f3d011682016040523d82523d6000602084013e61371f565b606091505b509150915061209687838387606083156137b45782516000036137ad576001600160a01b0385163b6137ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401613589565b508161210a565b61210a83838151156137c95781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135899190613a5e565b80356001600160a01b0381168114611d2b57600080fd5b6001600160801b038116811461382957600080fd5b50565b6000806040838503121561383f57600080fd5b613848836137fd565b9150602083013561385881613814565b809150509250929050565b60008060008060006080868803121561387b57600080fd5b613884866137fd565b9450613892602087016137fd565b935060408601359250606086013567ffffffffffffffff808211156138b657600080fd5b818801915088601f8301126138ca57600080fd5b8135818111156138d957600080fd5b8960208285010111156138eb57600080fd5b9699959850939650602001949392505050565b60008060006060848603121561391357600080fd5b61391c846137fd565b9250602084013561392c81613814565b915061393a604085016137fd565b90509250925092565b60008060006040848603121561395857600080fd5b613961846137fd565b9250602084013567ffffffffffffffff8082111561397e57600080fd5b818601915086601f83011261399257600080fd5b8135818111156139a157600080fd5b8760208260051b85010111156139b657600080fd5b6020830194508093505050509250925092565b600080604083850312156139dc57600080fd5b6139e5836137fd565b946020939093013593505050565b600060208284031215613a0557600080fd5b611413826137fd565b600060208284031215613a2057600080fd5b8135613a2b81613814565b9392505050565b60005b83811015613a4d578181015183820152602001613a35565b83811115612aec5750506000910152565b6020815260008251806020840152613a7d816040850160208701613a32565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215613ac257600080fd5b613acb836137fd565b9150613ad9602084016137fd565b90509250929050565b600080600060608486031215613af757600080fd5b613b00846137fd565b9250613b0e602085016137fd565b9150604084013590509250925092565b60008060008060808587031215613b3457600080fd5b613b3d856137fd565b93506020850135613b4d81613814565b92506040850135613b5d81613814565b91506060850135613b6d81613814565b939692955090935050565b600060208284031215613b8a57600080fd5b8151613a2b81613814565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613bf657600080fd5b8260051b8083602087013760009401602001938452509192915050565b604081526000613c27604083018587613bc4565b90506001600160801b0383166020830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215613c8157600080fd5b815160068110613a2b57600080fd5b600060208284031215613ca257600080fd5b81518015158114613a2b57600080fd5b60208152600061210a602083018486613bc4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006001600160801b0383811690831681811015613d1557613d15613cc6565b039392505050565b60006001600160801b0380831681851681830481118215151615613d4357613d43613cc6565b02949350505050565b60006001600160801b03808316818516808303821115613d6e57613d6e613cc6565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008251613db8818460208701613a32565b919091019291505056fea164736f6c634300080f000a", + "key": "0x99788c27e3f808333f1310014e009197d1b276b5c0e497bef00bb8f50ccdd2b9" }, "0x3aa5ebb10dc797cac828524e59a333d0a371443c": { "balance": "0", "nonce": 1, - "root": "0xb45fafbc41242521fb222c114d80647c0858e2a27d7574ef837788f7a78cdaaa", - "codeHash": "0x02898aaa7c1add99de89629303000fbd799dcaaec7d7380cb042e86d96a9fd75", - "code": "0x60806040526004361061015f5760003560e01c80636e296e45116100c0578063a4e7f8bd11610074578063b28ade2511610059578063b28ade25146103d2578063d764ad0b146103f2578063ecc704281461040557600080fd5b8063a4e7f8bd14610372578063b1b1b209146103a257600080fd5b806383a74074116100a557806383a74074146103275780638cbeeef2146102575780639fce812c1461033e57600080fd5b80636e296e45146102fd5780638129fc1c1461031257600080fd5b80633f827a5a1161011757806354fd4d50116100fc57806354fd4d501461026d5780635644cfdf146102c35780635c975abb146102d957600080fd5b80633f827a5a1461022f5780634c1d6a691461025757600080fd5b80630ff754ea116101485780630ff754ea146101ac5780632828d7e8146102055780633dbb202b1461021a57600080fd5b8063028f85f7146101645780630c56849814610197575b600080fd5b34801561017057600080fd5b50610179601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156101a357600080fd5b50610179603f81565b3480156101b857600080fd5b506101e07f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018e565b34801561021157600080fd5b50610179604081565b61022d610228366004611563565b610443565b005b34801561023b57600080fd5b50610244600081565b60405161ffff909116815260200161018e565b34801561026357600080fd5b50610179619c4081565b34801561027957600080fd5b506102b66040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161018e9190611635565b3480156102cf57600080fd5b5061017961138881565b3480156102e557600080fd5b5060335460ff165b604051901515815260200161018e565b34801561030957600080fd5b506101e0610631565b34801561031e57600080fd5b5061022d61071d565b34801561033357600080fd5b5061017962030d4081565b34801561034a57600080fd5b506101e07f000000000000000000000000420000000000000000000000000000000000000481565b34801561037e57600080fd5b506102ed61038d36600461164f565b60686020526000908152604090205460ff1681565b3480156103ae57600080fd5b506102ed6103bd36600461164f565b60656020526000908152604090205460ff1681565b3480156103de57600080fd5b506101796103ed366004611668565b6108af565b61022d6104003660046116bc565b61091d565b34801561041157600080fd5b506067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660405190815260200161018e565b61055b7f00000000000000000000000042000000000000000000000000000000000000046104728585856108af565b347fd764ad0b000000000000000000000000000000000000000000000000000000006104bd6067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b338a34898c8c6040516024016104d9979695949392919061178b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110d0565b3373ffffffffffffffffffffffffffffffffffffffff85167fdd28cef75ff18fb538e43317144469f339702f973eace2bc808f2acc37db310e3486866105c06067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b876040516105d29594939291906117ea565b60405180910390a35050606780547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60665460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215301610700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060665473ffffffffffffffffffffffffffffffffffffffff1690565b600054610100900460ff161580801561073d5750600054600160ff909116105b806107575750303b158015610757575060005460ff166001145b6107e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106f7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561084157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610849611185565b80156108ac57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000611388619c4080603f6108cb604063ffffffff8816611851565b6108d59190611881565b6108e0601088611851565b6108ed9062030d406118cf565b6108f791906118cf565b61090191906118cf565b61090b91906118cf565b61091591906118cf565b949350505050565b60f087901c600181106109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206d6573736167657320697320737570706f7274656420617420746860648201527f69732074696d6500000000000000000000000000000000000000000000000000608482015260a4016106f7565b6000610a1e898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061124a92505050565b9050610a2861126d565b15610a6057853414610a3c57610a3c6118fb565b60008181526068602052604090205460ff1615610a5b57610a5b6118fb565b610bb2565b3415610b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a4016106f7565b60008181526068602052604090205460ff16610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016106f7565b610bbb87611391565b15610c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a4016106f7565b60008181526065602052604090205460ff1615610d0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016106f7565b610d2e85610d1f611388619c406118cf565b67ffffffffffffffff16611408565b1580610d54575060665473ffffffffffffffffffffffffffffffffffffffff1661dead14155b15610e6d5760008181526068602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201610e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016106f7565b50506110a6565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a161790556000610efe88619c405a610ec1919061192a565b8988888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142692505050565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905590508015610f955760008281526065602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a26110a2565b60008281526068602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016106f7565b5050505b50505050505050565b905090565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fe9e05c4200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0169063e9e05c4290849061114d908890839089906000908990600401611941565b6000604051808303818588803b15801561116657600080fd5b505af115801561117a573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff1661121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106f7565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b600061125a878787878787611440565b8051906020012090509695505050505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0161480156110af57507f000000000000000000000000420000000000000000000000000000000000000473ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e073ffffffffffffffffffffffffffffffffffffffff16639bf62d826040518163ffffffff1660e01b8152600401602060405180830381865afa158015611351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113759190611999565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600073ffffffffffffffffffffffffffffffffffffffff821630148061140257507f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b606086868686868660405160240161145d969594939291906119b6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108ac57600080fd5b60008083601f84011261151357600080fd5b50813567ffffffffffffffff81111561152b57600080fd5b60208301915083602082850101111561154357600080fd5b9250929050565b803563ffffffff8116811461155e57600080fd5b919050565b6000806000806060858703121561157957600080fd5b8435611584816114df565b9350602085013567ffffffffffffffff8111156115a057600080fd5b6115ac87828801611501565b90945092506115bf90506040860161154a565b905092959194509250565b6000815180845260005b818110156115f0576020818501810151868301820152016115d4565b81811115611602576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061164860208301846115ca565b9392505050565b60006020828403121561166157600080fd5b5035919050565b60008060006040848603121561167d57600080fd5b833567ffffffffffffffff81111561169457600080fd5b6116a086828701611501565b90945092506116b390506020850161154a565b90509250925092565b600080600080600080600060c0888a0312156116d757600080fd5b8735965060208801356116e9816114df565b955060408801356116f9816114df565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561172357600080fd5b61172f8a828b01611501565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a08301526117dd60c083018486611742565b9998505050505050505050565b858152608060208201526000611804608083018688611742565b905083604083015263ffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168183048111821515161561187857611878611822565b02949350505050565b600067ffffffffffffffff808416806118c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff8083168185168083038211156118f2576118f2611822565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008282101561193c5761193c611822565b500390565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015267ffffffffffffffff84166040820152821515606082015260a06080820152600061198e60a08301846115ca565b979650505050505050565b6000602082840312156119ab57600080fd5b8151611648816114df565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611a0160c08301846115ca565b9897505050505050505056fea164736f6c634300080f000a", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000066": "dead" - }, + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0x04cf1177eaf30046defb1ea34d250724a59af480e0a140551f5509bf39a56675", + "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806312e64a7214610046578063c423b1e81461006e578063dc8b50381461008f575b600080fd5b6100596100543660046117b2565b6100db565b60405190151581526020015b60405180910390f35b61008161007c366004611827565b6101a6565b6040516100659291906118f1565b6100b67f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610065565b6040517fc423b1e800000000000000000000000000000000000000000000000000000000815260009081908190309063c423b1e890610122908a908990899060040161190c565b600060405180830381865afa15801561013f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610185919081019061199c565b9150915081801561019b575061019b868261074b565b979650505050505050565b600060606002845110156102275760405162461bcd60e51b815260206004820152602960248201527f5a4b4d65726b6c65547269653a2070726f76696465642070726f6f662069732060448201527f746f6f2073686f7274000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61027e84600186516102399190611a5d565b8151811061024957610249611a74565b602002602001015180516020909101207f950654da67865a81bc70e45f3230f5179f08e29c66184bf746f71050f117b3b81490565b6102f05760405162461bcd60e51b815260206004820152602d60248201527f5a4b4d65726b6c65547269653a20746865206c617374206974656d206973206e60448201527f6f74206d61676963206861736800000000000000000000000000000000000000606482015260840161021e565b60006102fb86610767565b9050600061030886610846565b90506103526040805161010081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c0820181905260e09091015290565b60408051602081019091526000808252835190918291829190829061037990600290611a5d565b90505b86818151811061038e5761038e611a74565b6020026020010151602001519550600060038111156103af576103af611aa3565b865160038111156103c2576103c2611aa3565b036104a05760006103d38983610939565b90508015610433578660200151861461042e5760405162461bcd60e51b815260206004820152601b60248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b6579204c0000000000604482015260640161021e565b610486565b866040015186146104865760405162461bcd60e51b815260206004820152601b60248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b657920520000000000604482015260640161021e565b61049887602001518860400151610996565b9550506106b5565b6001865160038111156104b5576104b5611aa3565b0361061857831580156104c6575082155b6105385760405162461bcd60e51b815260206004820152602660248201527f5a4b4d65726b6c65547269653a206475706c696361746564207465726d696e6160448201527f6c206e6f64650000000000000000000000000000000000000000000000000000606482015260840161021e565b87866060015114935083156107385761056b600160001b87606001516105668960a001518a60800151610a63565b610bff565b6080870151805160208102825260e0890151929750909350839115610611578e8860e00151148061059f5750898860e00151145b6106115760405162461bcd60e51b815260206004820152602260248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b657920707265696d6160448201527f6765000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b50506106b5565b60028651600381111561062d5761062d611aa3565b036106b5578315801561063e575082155b6106b05760405162461bcd60e51b815260206004820152602660248201527f5a4b4d65726b6c65547269653a206475706c696361746564207465726d696e6160448201527f6c206e6f64650000000000000000000000000000000000000000000000000000606482015260840161021e565b600192505b80600003610711578a851461070c5760405162461bcd60e51b815260206004820152601960248201527f5a4b4d65726b65547269653a20696e76616c696420726f6f7400000000000000604482015260640161021e565b610738565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161037c565b50919b919a509098505050505050505050565b6000818051906020012083805190602001201490505b92915050565b600080600061077584610d77565b6040805180820182528381526020810183905290517f299e566000000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed169163299e5660916107fd91600401611ad2565b602060405180830381865afa15801561081a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083e9190611b03565b949350505050565b805160609060008167ffffffffffffffff811115610866576108666115f9565b60405190808252806020026020018201604052801561089f57816020015b61088c61159a565b8152602001906001900390816108845790505b50905060005b6108b0600184611a5d565b8110156109315760006108db8683815181106108ce576108ce611a74565b6020026020010151610d9f565b905060405180604001604052808784815181106108fa576108fa611a74565b602002602001015181526020018281525083838151811061091d5761091d611a74565b6020908102919091010152506001016108a5565b509392505050565b6000610100821061098c5760405162461bcd60e51b815260206004820152601c60248201527f5a4b4d65726b6c65547269653a20746f6f206c6f6e6720646570746800000000604482015260640161021e565b506001901b161590565b6040805180820182528381526020810183905290517f299e566000000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed169163299e566091610a1b91600401611ad2565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190611b03565b9392505050565b6000600182511015610add5760405162461bcd60e51b815260206004820152602b60248201527f5a4b547269654861736865723a20746f6f206665772076616c75657320666f7260448201527f205f76616c756548617368000000000000000000000000000000000000000000606482015260840161021e565b6000825167ffffffffffffffff811115610af957610af96115f9565b604051908082528060200260200182016040528015610b22578160200160208202803683370190505b50905060005b8351811015610bc8576001811b851663ffffffff1615610b8757610b64848281518110610b5757610b57611a74565b6020026020010151610767565b828281518110610b7657610b76611a74565b602002602001018181525050610bc0565b838181518110610b9957610b99611a74565b6020026020010151828281518110610bb357610bb3611a74565b6020026020010181815250505b600101610b28565b50600283511015610bf65780600081518110610be657610be6611a74565b6020026020010151915050610761565b61083e81611122565b6040805180820182528481526020810184905290517f299e56600000000000000000000000000000000000000000000000000000000081526000917f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed9173ffffffffffffffffffffffffffffffffffffffff83169163299e566091610c879190600401611ad2565b602060405180830381865afa158015610ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc89190611b03565b6040805180820182528281526020810186905290517f299e566000000000000000000000000000000000000000000000000000000000815291965073ffffffffffffffffffffffffffffffffffffffff83169163299e566091610d2d91600401611ad2565b602060405180830381865afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e9190611b03565b95945050505050565b60008082608081901b610d8a8260801c90565b610d948260801c90565b935093505050915091565b60408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e081019190915260408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e08101919091526000610e53846040805180820182526060815260006020918201528151808301909252828101825291519181019190915290565b90506000610e608261130c565b60ff16905080610e8b57610e7382611393565b6020840152610e8182611393565b60408401526110de565b6001810361101857610e9c82611393565b6060840152600080610ead84611431565b60ff16915091508163ffffffff166001148015610eca5750806001145b80610ee657508163ffffffff166004148015610ee65750806004145b610f585760405162461bcd60e51b815260206004820152602360248201527f4e6f64655265616465723a20696e76616c696420636f6d70726573736564466c60448201527f6167730000000000000000000000000000000000000000000000000000000000606482015260840161021e565b63ffffffff821660a08601528067ffffffffffffffff811115610f7d57610f7d6115f9565b604051908082528060200260200182016040528015610fa6578160200160208202803683370190505b50608086015260005b81811015610fe957610fc085611393565b86608001518281518110610fd657610fd6611a74565b6020908102919091010152600101610faf565b506000610ff58561130c565b60ff16905080156110105761100a85826114cb565b60e08701525b5050506110de565b600281146110de57600381036110965760405162461bcd60e51b815260206004820152602560248201527f4e6f64655265616465723a20756e657870656374656420726f6f74206e6f646560448201527f2074797065000000000000000000000000000000000000000000000000000000606482015260840161021e565b60405162461bcd60e51b815260206004820152601d60248201527f4e6f64655265616465723a20696e76616c6964206e6f64652074797065000000604482015260640161021e565b8060038111156110f0576110f0611aa3565b8390600381111561110357611103611aa3565b9081600381111561111657611116611aa3565b90525091949350505050565b600060048251101561119c5760405162461bcd60e51b815260206004820152602b60248201527f5a4b547269654861736865723a20746f6f206665772076616c75657320666f7260448201527f205f68617368456c656d73000000000000000000000000000000000000000000606482015260840161021e565b81517f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed9060009081906001906002905b808310156112e457600094505b808510156112d6578285019350808410156112cd578573ffffffffffffffffffffffffffffffffffffffff1663299e566060405180604001604052808b898151811061122757611227611a74565b602002602001015181526020018b888151811061124657611246611a74565b60200260200101518152506040518263ffffffff1660e01b815260040161126d9190611ad2565b602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190611b03565b8886815181106112c0576112c0611a74565b6020026020010181815250505b938101936111d9565b909150600182901b906111cc565b876000815181106112f7576112f7611a74565b60200260200101519650505050505050919050565b60006001826020015110156113635760405162461bcd60e51b815260206004820152601f60248201527f4e6f64655265616465723a20746f6f2073686f727420666f722075696e743800604482015260640161021e565b81518051600180830180865260208601805191949360f81c9291611388908390611a5d565b905250949350505050565b60006020826020015110156114105760405162461bcd60e51b815260206004820152602160248201527f4e6f64655265616465723a20746f6f2073686f727420666f722062797465733360448201527f3200000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b81518051602080830180865281860180519194939291611388908390611a5d565b6000806004836020015110156114895760405162461bcd60e51b815260206004820181905260248201527f4e6f64655265616465723a20746f6f2073686f727420666f722075696e743332604482015260640161021e565b8251805160048083018087526020870180519194939260f084901c9260f885901c92906114b7908390611a5d565b90525060ff90911697909650945050505050565b600081836020015110156115475760405162461bcd60e51b815260206004820152602160248201527f4e6f64655265616465723a20746f6f2073686f727420666f72206e206279746560448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b825160609060008061155a866008611b1c565b61156690610100611a5d565b8351848801808a5260208a01805191975091831c9450919250879161158c908390611a5d565b905250909695505050505050565b6040518060400160405280606081526020016115f46040805161010081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c0820181905260e09091015290565b905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561166f5761166f6115f9565b604052919050565b600067ffffffffffffffff821115611691576116916115f9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126116ce57600080fd5b81356116e16116dc82611677565b611628565b8181528460208386010111156116f657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261172457600080fd5b8135602067ffffffffffffffff80831115611741576117416115f9565b8260051b611750838201611628565b938452858101830193838101908886111561176a57600080fd5b84880192505b858310156117a6578235848111156117885760008081fd5b6117968a87838c01016116bd565b8352509184019190840190611770565b98975050505050505050565b600080600080608085870312156117c857600080fd5b84359350602085013567ffffffffffffffff808211156117e757600080fd5b6117f3888389016116bd565b9450604087013591508082111561180957600080fd5b5061181687828801611713565b949793965093946060013593505050565b60008060006060848603121561183c57600080fd5b83359250602084013567ffffffffffffffff81111561185a57600080fd5b61186686828701611713565b925050604084013590509250925092565b60005b8381101561189257818101518382015260200161187a565b838111156118a1576000848401525b50505050565b600081518084526118bf816020860160208601611877565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b821515815260406020820152600061083e60408301846118a7565b600060608201858352602060608185015281865180845260808601915060808160051b870101935082880160005b82811015611986577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808887030184526119748683516118a7565b9550928401929084019060010161193a565b5050505050604092909201929092529392505050565b600080604083850312156119af57600080fd5b825180151581146119bf57600080fd5b602084015190925067ffffffffffffffff8111156119dc57600080fd5b8301601f810185136119ed57600080fd5b80516119fb6116dc82611677565b818152866020838501011115611a1057600080fd5b611a21826020830160208601611877565b8093505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611a6f57611a6f611a2e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408101818360005b6002811015611afa578151835260209283019290910190600101611adb565b50505092915050565b600060208284031215611b1557600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611b5457611b54611a2e565b50029056fea164736f6c634300080f000a", "key": "0x7694289e56b3885be351656b2b6cd001557c52e00baa368c33676c4a1431e6dc" }, "0x3fab184622dc19b6109349b94811493bf2a45362": { @@ -208,29 +187,6 @@ "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "key": "0xde33f5554ba92b642b2295d39f4de663601655a65aa90577cfd665fdbe35db04" }, - "0x4a679253410272dd5232b3ff7cf5dbb88f295319": { - "balance": "0", - "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xe7d30c7952210033e3cfd18ff7d7741d27b94e7cbaa9ddfcab4a59bbcb34746f", - "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80635269aa1b1461004657806354fd4d5014610083578063ee9a31a2146100cc575b600080fd5b61005961005436600461033a565b6100f3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100bf6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161007a9190610434565b6100597f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b600073ffffffffffffffffffffffffffffffffffffffff841661019c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4b726f6d614d696e7461626c654552433230466163746f72793a206d7573742060448201527f70726f766964652072656d6f746520746f6b656e206164647265737300000000606482015260840160405180910390fd5b60007f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f8585856040516101ce90610253565b6101db949392919061044e565b604051809103906000f0801580156101f7573d6000803e3d6000fd5b5060405133815290915073ffffffffffffffffffffffffffffffffffffffff80871691908316907f16f14001f89df9d8ecc68e7cbb61373ece9025038b9df30bea3635fc0e4701a99060200160405180910390a3949350505050565b611441806104a583390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126102a057600080fd5b813567ffffffffffffffff808211156102bb576102bb610260565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561030157610301610260565b8160405283815286602085880101111561031a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561034f57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461037357600080fd5b9250602084013567ffffffffffffffff8082111561039057600080fd5b61039c8783880161028f565b935060408601359150808211156103b257600080fd5b506103bf8682870161028f565b9150509250925092565b6000815180845260005b818110156103ef576020818501810151868301820152016103d3565b81811115610401576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061044760208301846103c9565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152506080604083015261048760808301856103c9565b828103606084015261049981856103c9565b97965050505050505056fe60c06040523480156200001157600080fd5b50604051620014413803806200144183398101604081905262000034916200015a565b8181600362000044838262000279565b50600462000053828262000279565b5050506001600160a01b0392831660805250501660a05262000345565b80516001600160a01b03811681146200008857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000b557600080fd5b81516001600160401b0380821115620000d257620000d26200008d565b604051601f8301601f19908116603f01168101908282118183101715620000fd57620000fd6200008d565b816040528381526020925086838588010111156200011a57600080fd5b600091505b838210156200013e57858201830151818301840152908201906200011f565b83821115620001505760008385830101525b9695505050505050565b600080600080608085870312156200017157600080fd5b6200017c8562000070565b93506200018c6020860162000070565b60408601519093506001600160401b0380821115620001aa57600080fd5b620001b888838901620000a3565b93506060870151915080821115620001cf57600080fd5b50620001de87828801620000a3565b91505092959194509250565b600181811c90821680620001ff57607f821691505b6020821081036200022057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027457600081815260208120601f850160051c810160208610156200024f5750805b601f850160051c820191505b8181101562000270578281556001016200025b565b5050505b505050565b81516001600160401b038111156200029557620002956200008d565b620002ad81620002a68454620001ea565b8462000226565b602080601f831160018114620002e55760008415620002cc5750858301515b600019600386901b1c1916600185901b17855562000270565b600085815260208120601f198616915b828110156200031657888601518255948401946001909101908401620002f5565b5085821015620003355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516110c862000379600039600081816103160152818161050a01526106270152600061014d01526110c86000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806340c10f19116100b25780639dc29fac11610081578063a9059cbb11610066578063a9059cbb146102b8578063dd62ed3e146102cb578063ee9a31a21461031157600080fd5b80639dc29fac14610292578063a457c2d7146102a557600080fd5b806340c10f191461020357806354fd4d501461021857806370a082311461025457806395d89b411461028a57600080fd5b806318160ddd116100ee57806318160ddd146101bc57806323b872dd146101ce578063313ce567146101e157806339509351146101f057600080fd5b806301ffc9a714610120578063033964be1461014857806306fdde0314610194578063095ea7b3146101a9575b600080fd5b61013361012e366004610e90565b610338565b60405190151581526020015b60405180910390f35b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b61019c6103d8565b60405161013f9190610ed9565b6101336101b7366004610f75565b61046a565b6002545b60405190815260200161013f565b6101336101dc366004610f9f565b610482565b6040516012815260200161013f565b6101336101fe366004610f75565b6104a6565b610216610211366004610f75565b6104f2565b005b61019c6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6101c0610262366004610fdb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61019c610600565b6102166102a0366004610f75565b61060f565b6101336102b3366004610f75565b61070c565b6101336102c6366004610f75565b6107c3565b6101c06102d9366004610ff6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f30a0c5a9000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000084168214806103d057507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b6060600380546103e790611029565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611029565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b6000336104788185856107d1565b5060019392505050565b600033610490858285610951565b61049b858585610a0e565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061047890829086906104ed90879061107c565b6107d1565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105a25760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e00000000000000000000000000000060648201526084015b60405180910390fd5b6105ac8282610c2f565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516105f491815260200190565b60405180910390a25050565b6060600480546103e790611029565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ba5760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e0000000000000000000000000000006064820152608401610599565b6106c48282610d08565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516105f491815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610599565b61049b82868684036107d1565b600033610478818585610a0e565b73ffffffffffffffffffffffffffffffffffffffff83166108595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff82166108e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a0857818110156109fb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610599565b610a0884848484036107d1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a975760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff8216610b205760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610bbc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a08565b73ffffffffffffffffffffffffffffffffffffffff8216610c925760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610599565b8060026000828254610ca4919061107c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610d915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610e2d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610944565b600060208284031215610ea257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ed257600080fd5b9392505050565b600060208083528351808285015260005b81811015610f0657858101830151858201604001528201610eea565b81811115610f18576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f7057600080fd5b919050565b60008060408385031215610f8857600080fd5b610f9183610f4c565b946020939093013593505050565b600080600060608486031215610fb457600080fd5b610fbd84610f4c565b9250610fcb60208501610f4c565b9150604084013590509250925092565b600060208284031215610fed57600080fd5b610ed282610f4c565b6000806040838503121561100957600080fd5b61101283610f4c565b915061102060208401610f4c565b90509250929050565b600181811c9082168061103d57607f821691505b602082108103611076577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082198211156110b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea164736f6c634300080f000aa164736f6c634300080f000a", - "key": "0xc158f1c4ca002e59c1aa0ce71d03e1a6fcb8722608e7b0e397a3c94dcb96c4cd" - }, - "0x4c5859f0f772848b2d91f1d83e2fe57935348029": { - "balance": "0", - "nonce": 1, - "root": "0x7764c6088e9cfa756b2d7eeaed6b90ec301988efc899e3b6f514bf00b5fa984b", - "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", - "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", - "storage": { - "0x000000000000000000000000000000000000000000000000000000000000000c": "01", - "0x000000000000000000000000000000000000000000000000000000000000003f": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000071": "1291be112d480055dafd8a610b7d1e203891c274", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "5f3f1dbd7b74c6b46e8c44f98792a1daf8d69154", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - }, - "key": "0x7392cffa2105097e2c40fb48f59b2e37173affe4b8047e54483cc5eb85b2db13" - }, "0x4e59b44847b379578588920ca78fbf26c0b4956c": { "balance": "0", "nonce": 1, @@ -239,22 +195,39 @@ "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3", "key": "0x491ded984cd17b1afee6ccb6ef366c53dd79f50b592816adc12e9302a9f2b36c" }, - "0x59b670e9fa9d0a427751af201d676719a970857b": { + "0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1": { "balance": "0", "nonce": 1, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "codeHash": "0xdcc518c7fadf757cf1e4e6a15d0ac839b78d9dbaa999e18b0ae05ede6535b58c", "code": "0x6080604052600436106100b55760003560e01c80637f46ddb2116100695780638f601f661161004e5780638f601f6614610298578063927ede2d146102db578063e11013dd1461030f57600080fd5b80637f46ddb21461021f578063870876231461027857600080fd5b80631635f5fd1161009a5780631635f5fd1461018d578063540abf73146101a057806354fd4d50146101c057600080fd5b80630166a07a1461015a57806309fc88431461017a57600080fd5b3661015557333b156101345760405162461bcd60e51b815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b61015333333462030d4060405180602001604052806000815250610322565b005b600080fd5b34801561016657600080fd5b50610153610175366004611973565b610547565b610153610188366004611a24565b610943565b61015361019b366004611a77565b610a00565b3480156101ac57600080fd5b506101536101bb366004611aea565b610e7a565b3480156101cc57600080fd5b506102096040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102169190611bd7565b60405180910390f35b34801561022b57600080fd5b506102537f000000000000000000000000420000000000000000000000000000000000000981565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610216565b34801561028457600080fd5b50610153610293366004611bea565b610ec8565b3480156102a457600080fd5b506102cd6102b3366004611c6d565b600060208181529281526040808220909352908152205481565b604051908152602001610216565b3480156102e757600080fd5b506102537f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b61015361031d366004611ca6565b610f82565b8234146103975760405162461bcd60e51b815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c75650000606482015260840161012b565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af585846040516103f6929190611d09565b60405180910390a37f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16633dbb202b847f0000000000000000000000004200000000000000000000000000000000000009631635f5fd60e01b8989898860405160240161047b9493929190611d22565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261050e92918890600401611d6b565b6000604051808303818588803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b50505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614801561066557507f000000000000000000000000420000000000000000000000000000000000000973ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190611db0565b73ffffffffffffffffffffffffffffffffffffffff16145b6106fd5760405162461bcd60e51b815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161012b565b61070687610fcb565b1561083a576107158787610ffd565b6107ad5760405162461bcd60e51b815260206004820152604760248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204b726f6d61204d696e7461626c65204552433230206c6f636160648201527f6c20746f6b656e00000000000000000000000000000000000000000000000000608482015260a40161012b565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b15801561081d57600080fd5b505af1158015610831573d6000803e3d6000fd5b505050506108b8565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260208181526040808320938a1683529290522054610876908490611dfc565b73ffffffffffffffffffffffffffffffffffffffff808916600081815260208181526040808320948c16835293905291909120919091556108b89085856110a4565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd878787876040516109329493929190611e5c565b60405180910390a450505050505050565b333b156109b85760405162461bcd60e51b815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161012b565b6109fb3333348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061032292505050565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570716148015610b1e57507f000000000000000000000000420000000000000000000000000000000000000973ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b069190611db0565b73ffffffffffffffffffffffffffffffffffffffff16145b610bb65760405162461bcd60e51b815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161012b565b823414610c2b5760405162461bcd60e51b815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e74207265717569726564000000000000606482015260840161012b565b3073ffffffffffffffffffffffffffffffffffffffff851603610cb65760405162461bcd60e51b815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161012b565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d775760405162461bcd60e51b815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161012b565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d858585604051610dd893929190611e92565b60405180910390a36000610dfd855a8660405180602001604052806000815250611178565b905080610e725760405162461bcd60e51b815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161012b565b505050505050565b610ebf87873388888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119492505050565b50505050505050565b333b15610f3d5760405162461bcd60e51b815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161012b565b610e7286863333888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119492505050565b610fc53385348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061032292505050565b50505050565b6000610ff7827f30a0c5a90000000000000000000000000000000000000000000000000000000061152f565b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663033964be6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e9190611db0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109fb9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611552565b600080600080845160208601878a8af19150505b949350505050565b61119d87610fcb565b156112d1576111ac8787610ffd565b6112445760405162461bcd60e51b815260206004820152604760248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204b726f6d61204d696e7461626c65204552433230206c6f636160648201527f6c20746f6b656e00000000000000000000000000000000000000000000000000608482015260a40161012b565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b50505050611361565b6112f373ffffffffffffffffffffffffffffffffffffffff8816863086611647565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260208181526040808320938a168352929052205461132f908490611eb5565b73ffffffffffffffffffffffffffffffffffffffff808916600090815260208181526040808320938b16835292905220555b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf8787866040516113d993929190611ecd565b60405180910390a47f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16633dbb202b7f0000000000000000000000004200000000000000000000000000000000000009630166a07a60e01b898b8a8a8a8960405160240161146196959493929190611f02565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526114f492918790600401611d6b565b600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b5050505050505050505050565b600061153a836116a5565b801561154b575061154b8383611709565b9392505050565b60006115b4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166117d89092919063ffffffff16565b90508051600014806115d55750808060200190518101906115d59190611f5d565b6109fb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161012b565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610fc59085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016110f6565b60006116d1827f01ffc9a700000000000000000000000000000000000000000000000000000000611709565b8015610ff75750611702827fffffffff00000000000000000000000000000000000000000000000000000000611709565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156117c1575060208210155b80156117cd5750600081115b979650505050505050565b606061118c8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161180c9190611f7f565b60006040518083038185875af1925050503d8060008114611849576040519150601f19603f3d011682016040523d82523d6000602084013e61184e565b606091505b50915091506117cd87838387606083156118d65782516000036118cf5773ffffffffffffffffffffffffffffffffffffffff85163b6118cf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161012b565b508161118c565b61118c83838151156118eb5781518083602001fd5b8060405162461bcd60e51b815260040161012b9190611bd7565b73ffffffffffffffffffffffffffffffffffffffff8116811461192757600080fd5b50565b60008083601f84011261193c57600080fd5b50813567ffffffffffffffff81111561195457600080fd5b60208301915083602082850101111561196c57600080fd5b9250929050565b600080600080600080600060c0888a03121561198e57600080fd5b873561199981611905565b965060208801356119a981611905565b955060408801356119b981611905565b945060608801356119c981611905565b93506080880135925060a088013567ffffffffffffffff8111156119ec57600080fd5b6119f88a828b0161192a565b989b979a50959850939692959293505050565b803563ffffffff81168114611a1f57600080fd5b919050565b600080600060408486031215611a3957600080fd5b611a4284611a0b565b9250602084013567ffffffffffffffff811115611a5e57600080fd5b611a6a8682870161192a565b9497909650939450505050565b600080600080600060808688031215611a8f57600080fd5b8535611a9a81611905565b94506020860135611aaa81611905565b935060408601359250606086013567ffffffffffffffff811115611acd57600080fd5b611ad98882890161192a565b969995985093965092949392505050565b600080600080600080600060c0888a031215611b0557600080fd5b8735611b1081611905565b96506020880135611b2081611905565b95506040880135611b3081611905565b945060608801359350611b4560808901611a0b565b925060a088013567ffffffffffffffff8111156119ec57600080fd5b60005b83811015611b7c578181015183820152602001611b64565b83811115610fc55750506000910152565b60008151808452611ba5816020860160208601611b61565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061154b6020830184611b8d565b60008060008060008060a08789031215611c0357600080fd5b8635611c0e81611905565b95506020870135611c1e81611905565b945060408701359350611c3360608801611a0b565b9250608087013567ffffffffffffffff811115611c4f57600080fd5b611c5b89828a0161192a565b979a9699509497509295939492505050565b60008060408385031215611c8057600080fd5b8235611c8b81611905565b91506020830135611c9b81611905565b809150509250929050565b60008060008060608587031215611cbc57600080fd5b8435611cc781611905565b9350611cd560208601611a0b565b9250604085013567ffffffffffffffff811115611cf157600080fd5b611cfd8782880161192a565b95989497509550505050565b82815260406020820152600061118c6040830184611b8d565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611d616080830184611b8d565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000611d9a6060830185611b8d565b905063ffffffff83166040830152949350505050565b600060208284031215611dc257600080fd5b815161154b81611905565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611e0e57611e0e611dcd565b500390565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000611d61606083018486611e13565b838152604060208201526000611eac604083018486611e13565b95945050505050565b60008219821115611ec857611ec8611dcd565b500190565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000611eac6060830184611b8d565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a0830152611f5160c0830184611b8d565b98975050505050505050565b600060208284031215611f6f57600080fd5b8151801515811461154b57600080fd5b60008251611f91818460208701611b61565b919091019291505056fea164736f6c634300080f000a", - "key": "0x955b9191e283f55b64f3d7bbeacf7afa8b939366f402751f848ad0791681c7df" + "key": "0x5de0e21cdf25878b7a77849412f455c97a2362c7162876bf459d8d8e84c55255" + }, + "0x5eb3bc0a489c5a8288765d2336659ebca68fcd00": { + "balance": "0", + "nonce": 1, + "root": "0x01f9e62d19297f681ea2208de1fec6c67ed86a26e55dbf4b27a1b0881060507b", + "codeHash": "0x032951ba4bf0d8d857d02de99c2aa30177d9ab6b78004524a5b3c52de71caf02", + "code": "0x60806040526004361061030c5760003560e01c80637b3c71d31161019a578063c01f9e37116100e1578063ea0217cf1161008a578063f23a6e6111610064578063f23a6e6114610a9e578063f8ce560a14610ae3578063fc0c546a14610b0357600080fd5b8063ea0217cf14610a3e578063eb9019d414610a5e578063ece40cc114610a7e57600080fd5b8063d33219b4116100bb578063d33219b4146109a5578063dd4e2ba5146109c4578063deaaa7cc14610a0a57600080fd5b8063c01f9e3714610938578063c28bc2fa14610972578063c59057e41461098557600080fd5b80639a802a6d11610143578063ab58fb8e1161011d578063ab58fb8e146108be578063b58131b0146108de578063bc197c81146108f357600080fd5b80639a802a6d14610869578063a7713a7014610889578063a890c9101461089e57600080fd5b806386489ba91161017457806386489ba91461080957806391ddadf41461082957806397c3d3341461085557600080fd5b80637b3c71d3146107a15780637d5e81e2146107c157806384b0196e146107e157600080fd5b80633932abb11161025e578063544ffc9c116102075780635f398a14116101e15780635f398a141461074157806360c4247f1461076157806370b0f6601461078157600080fd5b8063544ffc9c1461068557806354fd4d50146106db578063567813881461072157600080fd5b806343859632116102385780634385963214610605578063452115d6146106505780634bf5d7e91461067057600080fd5b80633932abb1146105a35780633bccf4fd146105b85780633e4f49e6146105d857600080fd5b8063143489d0116102c05780632656227d1161029a5780632656227d146105255780632d63f693146105385780632fe3e2611461056f57600080fd5b8063143489d014610436578063150b7a0214610490578063160cbed71461050557600080fd5b806303420181116102f157806303420181146103d457806306f3f9e6146103f457806306fdde031461041457600080fd5b806301ffc9a71461037c57806302a251a3146103b157600080fd5b36610377573061031a610b24565b6001600160a01b0316146103755760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561038857600080fd5b5061039c610397366004614a0c565b610b3e565b60405190151581526020015b60405180910390f35b3480156103bd57600080fd5b506103c6610b4f565b6040519081526020016103a8565b3480156103e057600080fd5b506103c66103ef366004614b8e565b610b5b565b34801561040057600080fd5b5061037561040f366004614c35565b610c53565b34801561042057600080fd5b50610429610d0d565b6040516103a89190614caa565b34801561044257600080fd5b50610478610451366004614c35565b600090815260fe60205260409020546801000000000000000090046001600160a01b031690565b6040516001600160a01b0390911681526020016103a8565b34801561049c57600080fd5b506104d46104ab366004614cd2565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a8565b34801561051157600080fd5b506103c6610520366004614eac565b610d9f565b6103c6610533366004614eac565b611045565b34801561054457600080fd5b506103c6610553366004614c35565b600090815260fe602052604090205467ffffffffffffffff1690565b34801561057b57600080fd5b506103c67fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156105af57600080fd5b506103c66111ab565b3480156105c457600080fd5b506103c66105d3366004614f3c565b6111b7565b3480156105e457600080fd5b506105f86105f3366004614c35565b61122d565b6040516103a89190614fb9565b34801561061157600080fd5b5061039c610620366004614ffa565b6000828152610161602090815260408083206001600160a01b038516845260030190915290205460ff1692915050565b34801561065c57600080fd5b506103c661066b366004614eac565b611238565b34801561067c57600080fd5b50610429611369565b34801561069157600080fd5b506106c06106a0366004614c35565b600090815261016160205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016103a8565b3480156106e757600080fd5b5060408051808201909152600581527f312e302e300000000000000000000000000000000000000000000000000000006020820152610429565b34801561072d57600080fd5b506103c661073c36600461502a565b61142f565b34801561074d57600080fd5b506103c661075c366004615056565b611458565b34801561076d57600080fd5b506103c661077c366004614c35565b6114a2565b34801561078d57600080fd5b5061037561079c366004614c35565b611597565b3480156107ad57600080fd5b506103c66107bc3660046150da565b61164e565b3480156107cd57600080fd5b506103c66107dc366004615134565b611696565b3480156107ed57600080fd5b506107f66116ad565b6040516103a89796959493929190615224565b34801561081557600080fd5b506103756108243660046152a0565b61176f565b34801561083557600080fd5b5061083e611951565b60405165ffffffffffff90911681526020016103a8565b34801561086157600080fd5b5060646103c6565b34801561087557600080fd5b506103c66108843660046152f9565b6119de565b34801561089557600080fd5b506103c66119f5565b3480156108aa57600080fd5b506103756108b9366004615352565b611a37565b3480156108ca57600080fd5b506103c66108d9366004614c35565b611aee565b3480156108ea57600080fd5b506103c6611ba3565b3480156108ff57600080fd5b506104d461090e36600461536f565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561094457600080fd5b506103c6610953366004614c35565b600090815260fe602052604090206001015467ffffffffffffffff1690565b610375610980366004615403565b611baf565b34801561099157600080fd5b506103c66109a0366004614eac565b611ce5565b3480156109b157600080fd5b506101f8546001600160a01b0316610478565b3480156109d057600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e90820152610429565b348015610a1657600080fd5b506103c67f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610a4a57600080fd5b50610375610a59366004614c35565b611d1f565b348015610a6a57600080fd5b506103c6610a79366004615447565b611dd6565b348015610a8a57600080fd5b50610375610a99366004614c35565b611df7565b348015610aaa57600080fd5b506104d4610ab9366004615473565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b348015610aef57600080fd5b506103c6610afe366004614c35565b611eae565b348015610b0f57600080fd5b5061019354610478906001600160a01b031681565b6000610b396101f8546001600160a01b031690565b905090565b6000610b4982611eb9565b92915050565b6000610b396101305490565b600080610bff610bf77fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610b979291906154dc565b60405180910390208b80519060200120604051602001610bdc959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120611f0f565b868686611f57565b9050610c458a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250611f75915050565b9a9950505050505050505050565b610c5b610b24565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30610cc4610b24565b6001600160a01b031614610d015760008036604051610ce49291906154dc565b604051809103902090505b80610cfa60ff6120e5565b03610cef57505b610d0a816121a2565b50565b606060fd8054610d1c906154ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610d48906154ec565b8015610d955780601f10610d6a57610100808354040283529160200191610d95565b820191906000526020600020905b815481529060010190602001808311610d7857829003601f168201915b5050505050905090565b600080610dae86868686611ce5565b90506004610dbb8261122d565b6007811115610dcc57610dcc614f8a565b14610e3f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c00000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6101f854604080517ff27a0c9200000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec7919061553f565b6101f8546040517fb1c5f4270000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063b1c5f42790610f1b908a908a908a906000908b906004016155e6565b602060405180830381865afa158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c919061553f565b60008381526101f96020526040808220929092556101f85491517f8f2a0bb00000000000000000000000000000000000000000000000000000000081526001600160a01b0390921691638f2a0bb091610fc2918b918b918b91908b908990600401615634565b600060405180830381600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261102291906156bb565b604080519283526020830191909152015b60405180910390a15095945050505050565b60008061105486868686611ce5565b905060006110618261122d565b9050600481600781111561107757611077614f8a565b14806110945750600581600781111561109257611092614f8a565b145b6111065760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c00000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b600082815260fe60205260409081902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906111729084815260200190565b60405180910390a16111878288888888612343565b61119482888888886123e5565b6111a182888888886123f2565b5095945050505050565b6000610b3961012f5490565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061120590610bf790608001610bdc565b905061122287828860405180602001604052806000815250612438565b979650505050505050565b6000610b498261245b565b60008061124786868686611ce5565b905060006112548261122d565b600781111561126557611265614f8a565b146112b25760405162461bcd60e51b815260206004820152601c60248201527f476f7665726e6f723a20746f6f206c61746520746f2063616e63656c00000000604482015260640161036c565b600081815260fe60205260409020546801000000000000000090046001600160a01b0316336001600160a01b0316146113535760405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a206f6e6c792070726f706f7365722063616e2063616e6360448201527f656c000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b61135f868686866125da565b9695505050505050565b61019354604080517f4bf5d7e900000000000000000000000000000000000000000000000000000000815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156113ee57506040513d6000823e601f3d908101601f191682016040526113eb91908101906156d3565b60015b61142a575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061145084828560405180602001604052806000815250612438565b949350505050565b60008033905061122287828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611f75915050565b6101c7546000908082036114bb5750506101c654919050565b60006101c76114cb600184615741565b815481106114db576114db615758565b60009182526020918290206040805180820190915291015463ffffffff81168083526401000000009091047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928201929092529150841061155c57602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b611571611568856125e8565b6101c790612668565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b61159f610b24565b6001600160a01b0316336001600160a01b0316146115ff5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611608610b24565b6001600160a01b03161461164557600080366040516116289291906154dc565b604051809103902090505b8061163e60ff6120e5565b0361163357505b610d0a81612731565b60008033905061135f86828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061243892505050565b60006116a485858585612774565b95945050505050565b6000606080600080600060606065546000801b1480156116cd5750606654155b6117195760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a65640000000000000000000000604482015260640161036c565b611721612ca9565b611729612cb8565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b600054610100900460ff161580801561178f5750600054600160ff909116105b806117a95750303b1580156117a9575060005460ff166001145b61181b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161036c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561187957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6118b76040518060400160405280600f81526020017f55706772616465476f7665726e6f720000000000000000000000000000000000815250612cc7565b6118c2858585612d90565b6118ca612e1d565b6118d387612e9c565b6118dc82612f22565b6118e586612fa8565b801561194857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b61019354604080517f91ddadf400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156119d1575060408051601f3d908101601f191682019092526119ce91810190615787565b60015b61142a57610b394361302e565b60006119eb8484846130ac565b90505b9392505050565b6101c75460009015611a2f57611a0c6101c761313c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b506101c65490565b611a3f610b24565b6001600160a01b0316336001600160a01b031614611a9f5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611aa8610b24565b6001600160a01b031614611ae55760008036604051611ac89291906154dc565b604051809103902090505b80611ade60ff6120e5565b03611ad357505b610d0a81613182565b6101f85460008281526101f960205260408082205490517fd45c44350000000000000000000000000000000000000000000000000000000081526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015611b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8a919061553f565b905080600114611b9a57806119ee565b60009392505050565b6000610b396101315490565b611bb7610b24565b6001600160a01b0316336001600160a01b031614611c175760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611c20610b24565b6001600160a01b031614611c5d5760008036604051611c409291906154dc565b604051809103902090505b80611c5660ff6120e5565b03611c4b57505b600080856001600160a01b0316858585604051611c7b9291906154dc565b60006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b50915091506119488282604051806060016040528060288152602001615b8460289139613205565b600084848484604051602001611cfe94939291906157af565b60408051601f19818403018152919052805160209091012095945050505050565b611d27610b24565b6001600160a01b0316336001600160a01b031614611d875760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611d90610b24565b6001600160a01b031614611dcd5760008036604051611db09291906154dc565b604051809103902090505b80611dc660ff6120e5565b03611dbb57505b610d0a8161321e565b60006119ee8383611df260408051602081019091526000815290565b6130ac565b611dff610b24565b6001600160a01b0316336001600160a01b031614611e5f5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611e68610b24565b6001600160a01b031614611ea55760008036604051611e889291906154dc565b604051809103902090505b80611e9e60ff6120e5565b03611e9357505b610d0a816132d7565b6000610b498261331a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6e665ced000000000000000000000000000000000000000000000000000000001480610b495750610b49826133c2565b6000610b49611f1c61356c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000611f6887878787613576565b915091506111a18161363a565b600085815260fe602052604081206001611f8e8861122d565b6007811115611f9f57611f9f614f8a565b146120125760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201527f6976650000000000000000000000000000000000000000000000000000000000606482015260840161036c565b805460009061202d90889067ffffffffffffffff16866130ac565b905061203c888888848861379f565b835160000361209157866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48988848960405161208494939291906157fa565b60405180910390a2611222565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871289888489896040516120d2959493929190615822565b60405180910390a2979650505050505050565b600061210d8254600f81810b700100000000000000000000000000000000909204900b131590565b15612144576040517f3db2a12a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583547fffffffffffffffffffffffffffffffff000000000000000000000000000000001692016fffffffffffffffffffffffffffffffff169190911790915590565b606481111561223f5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e6160648201527f746f720000000000000000000000000000000000000000000000000000000000608482015260a40161036c565b60006122496119f5565b9050801580159061225b57506101c754155b156122d65760408051808201909152600081526101c7906020810161227f84613992565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b6123046122f16122e4611951565b65ffffffffffff166125e8565b6122fa84613992565b6101c79190613a26565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b3061234c610b24565b6001600160a01b0316146123de5760005b84518110156123dc57306001600160a01b031685828151811061238257612382615758565b60200260200101516001600160a01b0316036123cc576123cc8382815181106123ad576123ad615758565b60200260200101518051906020012060ff613a4190919063ffffffff16565b6123d581615868565b905061235d565b505b5050505050565b6123de8585858585613a93565b306123fb610b24565b6001600160a01b0316146123de5760ff54600f81810b700100000000000000000000000000000000909204900b13156123de57600060ff556123de565b60006116a48585858561245660408051602081019091526000815290565b611f75565b60008061246783613b21565b9050600481600781111561247d5761247d614f8a565b146124885792915050565b60008381526101f96020526040902054806124a4575092915050565b6101f8546040517f2ab0f529000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252b91906158a0565b1561253a575060079392505050565b6101f8546040517f584b153e000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa15801561259d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c191906158a0565b156125d0575060059392505050565b5060029392505050565b60006116a485858585613c64565b600063ffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b5090565b8154600090818160058111156126c557600061268384613d33565b61268d9085615741565b60008881526020902090915081015463ffffffff90811690871610156126b5578091506126c3565b6126c08160016156bb565b92505b505b60006126d387878585613e1b565b90508015612724576126f8876126ea600184615741565b600091825260209091200190565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611222565b6000979650505050505050565b61012f5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161012f55565b6000336127818184613e79565b6127cd5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161036c565b60006127d7611951565b65ffffffffffff1690506127e9611ba3565b6127f883610a79600185615741565b101561286c5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f77207060448201527f726f706f73616c207468726573686f6c64000000000000000000000000000000606482015260840161036c565b60006128818888888880519060200120611ce5565b905086518851146128fa5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b85518851146129715760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b60008851116129c25760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161036c565b600081815260fe602052604090205467ffffffffffffffff1615612a4e5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c726561647920657869737460448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6000612a586111ab565b612a6290846156bb565b90506000612a6e610b4f565b612a7890836156bb565b90506040518060e00160405280612a8e84613fc9565b67ffffffffffffffff1681526001600160a01b038716602082015260006040820152606001612abc83613fc9565b67ffffffffffffffff9081168252600060208084018290526040808501839052606094850183905288835260fe8252918290208551815492870151878501519186167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317680100000000000000006001600160a01b039094168402177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000060e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c0909401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009094169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115612c4657612c46614aa8565b604051908082528060200260200182016040528015612c7957816020015b6060815260200190600190039081612c645790505b508d88888f604051612c93999897969594939291906158c2565b60405180910390a1509098975050505050505050565b606060678054610d1c906154ec565b606060688054610d1c906154ec565b600054610100900460ff16612d445760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b612d8781612d8260408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b614049565b610d0a816140ee565b600054610100900460ff16612e0d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b612e1883838361417b565b505050565b600054610100900460ff16612e9a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b565b600054610100900460ff16612f195760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a81614213565b600054610100900460ff16612f9f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a816142cb565b600054610100900460ff166130255760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a81614348565b600065ffffffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f3820626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b610193546040517f3a46b1a80000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613118573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb919061553f565b80546000908015611b9a57613156836126ea600184615741565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166119ee565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606083156132145750816119ee565b6119ee83836143c5565b600081116132945760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f642060448201527f746f6f206c6f7700000000000000000000000000000000000000000000000000606482015260840161036c565b6101305460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161013055565b6101315460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161013155565b60006064613327836114a2565b610193546040517f8e539e8c000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa15801561338a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ae919061553f565b6133b8919061599a565b610b499190615a06565b60007f51159c06000000000000000000000000000000000000000000000000000000007fc6fba1f8000000000000000000000000000000000000000000000000000000007fbf26d897000000000000000000000000000000000000000000000000000000007f79dd796f000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000861682148061349c57507fffffffff00000000000000000000000000000000000000000000000000000000868116908216145b806134cb57507fffffffff00000000000000000000000000000000000000000000000000000000868116908516145b8061351757507fffffffff0000000000000000000000000000000000000000000000000000000086167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061135f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008716149695505050505050565b6000610b396143ef565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156135ad5750600090506003613631565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613601573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661362a57600060019250925050613631565b9150600090505b94509492505050565b600081600481111561364e5761364e614f8a565b036136565750565b600181600481111561366a5761366a614f8a565b036136b75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161036c565b60028160048111156136cb576136cb614f8a565b036137185760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161036c565b600381600481111561372c5761372c614f8a565b03610d0a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6000858152610161602090815260408083206001600160a01b0388168452600381019092529091205460ff161561383e5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72566f74696e6753696d706c653a20766f746520616c72656160448201527f6479206361737400000000000000000000000000000000000000000000000000606482015260840161036c565b6001600160a01b0385166000908152600382016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560ff84166138a8578281600001600082825461389d91906156bb565b909155506123dc9050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8516016138e6578281600101600082825461389d91906156bb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff851601613924578281600201600082825461389d91906156bb565b60405162461bcd60e51b815260206004820152603560248201527f476f7665726e6f72566f74696e6753696d706c653a20696e76616c696420766160448201527f6c756520666f7220656e756d20566f7465547970650000000000000000000000606482015260840161036c565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156126645760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f3234206269747300000000000000000000000000000000000000000000000000606482015260840161036c565b600080613a34858585614463565b915091505b935093915050565b815470010000000000000000000000000000000090819004600f0b6000818152600180860160205260409091209390935583546fffffffffffffffffffffffffffffffff908116939091011602179055565b6101f8546040517fe38335e50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063e38335e5903490613ae89088908890889060009089906004016155e6565b6000604051808303818588803b158015613b0157600080fd5b505af1158015613b15573d6000803e3d6000fd5b50505050505050505050565b600081815260fe60205260408120600281015460ff1615613b455750600792915050565b6002810154610100900460ff1615613b605750600292915050565b600083815260fe602052604081205467ffffffffffffffff1690819003613bc95760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161036c565b6000613bd3611951565b65ffffffffffff169050808210613bef57506000949350505050565b600085815260fe602052604090206001015467ffffffffffffffff16818110613c1e5750600195945050505050565b613c278661465a565b8015613c4757506000868152610161602052604090208054600190910154115b15613c585750600495945050505050565b50600395945050505050565b600080613c73868686866146a8565b60008181526101f96020526040902054909150156116a4576101f85460008281526101f96020526040908190205490517fc4d252f50000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163c4d252f591613ce89160040190815260200190565b600060405180830381600087803b158015613d0257600080fd5b505af1158015613d16573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600081600003613d4557506000919050565b60006001613d52846147d1565b901c6001901b90506001818481613d6b57613d6b6159d7565b048201901c90506001818481613d8357613d836159d7565b048201901c90506001818481613d9b57613d9b6159d7565b048201901c90506001818481613db357613db36159d7565b048201901c90506001818481613dcb57613dcb6159d7565b048201901c90506001818481613de357613de36159d7565b048201901c90506001818481613dfb57613dfb6159d7565b048201901c90506119ee81828581613e1557613e156159d7565b04614865565b60005b81831015613e71576000613e32848461487b565b60008781526020902090915063ffffffff86169082015463ffffffff161115613e5d57809250613e6b565b613e688160016156bb565b93505b50613e1e565b509392505050565b80516000906034811015613e91576001915050610b49565b8281017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec01517fffffffffffffffffffffffff000000000000000000000000000000000000000081167f2370726f706f7365723d3078000000000000000000000000000000000000000014613f0b57600192505050610b49565b600080613f19602885615741565b90505b83811015613fa857600080613f68888481518110613f3c57613f3c615758565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016614896565b9150915081613f805760019650505050505050610b49565b8060ff166004856001600160a01b0316901b179350505080613fa190615868565b9050613f1c565b50856001600160a01b0316816001600160a01b031614935050505092915050565b600067ffffffffffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f3420626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b600054610100900460ff166140c65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b60676140d28382615a87565b5060686140df8282615a87565b50506000606581905560665550565b600054610100900460ff1661416b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b60fd6141778282615a87565b5050565b600054610100900460ff166141f85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b61420183612731565b61420a8261321e565b612e18816132d7565b600054610100900460ff166142905760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b61019380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600054610100900460ff16610d015760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b600054610100900460ff16611ae55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b8151156143d55781518083602001fd5b8060405162461bcd60e51b815260040161036c9190614caa565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61441a614982565b6144226149db565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8254600090819080156145eb576000614481876126ea600185615741565b60408051808201909152905463ffffffff8082168084526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16602084015291925090871610156145185760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161036c565b805163ffffffff8088169116036145765784614539886126ea600186615741565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9092169190911790556145db565b6040805180820190915263ffffffff80881682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b602001519250839150613a399050565b50506040805180820190915263ffffffff80851682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a815291822095519251909316640100000000029190931617920191909155905081613a39565b6000818152610161602052604081206002810154600182015461467d91906156bb565b600084815260fe602052604090205461469f9067ffffffffffffffff16611eae565b11159392505050565b6000806146b786868686611ce5565b905060006146c48261122d565b905060028160078111156146da576146da614f8a565b141580156146fa575060068160078111156146f7576146f7614f8a565b14155b80156147185750600781600781111561471557614715614f8a565b14155b6147645760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161036c565b600082815260fe60205260409081902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906110339084815260200190565b600080608083901c156147e657608092831c92015b604083901c156147f857604092831c92015b602083901c1561480a57602092831c92015b601083901c1561481c57601092831c92015b600883901c1561482e57600892831c92015b600483901c1561484057600492831c92015b600283901c1561485257600292831c92015b600183901c15610b495760010192915050565b600081831061487457816119ee565b5090919050565b600061488a6002848418615a06565b6119ee908484166156bb565b60008060f883901c602f811180156148b15750603a8160ff16105b156148e4576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09091019350915050565b8060ff1660401080156148fa575060478160ff16105b1561492d576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc99091019350915050565b8060ff166060108015614943575060678160ff16105b15614976576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa99091019350915050565b50600093849350915050565b60008061498d612ca9565b8051909150156149a4578051602090910120919050565b60655480156149b35792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806149e6612cb8565b8051909150156149fd578051602090910120919050565b60665480156149b35792915050565b600060208284031215614a1e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119ee57600080fd5b803560ff8116811461142a57600080fd5b60008083601f840112614a7157600080fd5b50813567ffffffffffffffff811115614a8957600080fd5b602083019150836020828501011115614aa157600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0057614b00614aa8565b604052919050565b600067ffffffffffffffff821115614b2257614b22614aa8565b50601f01601f191660200190565b6000614b43614b3e84614b08565b614ad7565b9050828152838383011115614b5757600080fd5b828260208301376000602084830101529392505050565b600082601f830112614b7f57600080fd5b6119ee83833560208501614b30565b60008060008060008060008060e0898b031215614baa57600080fd5b88359750614bba60208a01614a4e565b9650604089013567ffffffffffffffff80821115614bd757600080fd5b614be38c838d01614a5f565b909850965060608b0135915080821115614bfc57600080fd5b50614c098b828c01614b6e565b945050614c1860808a01614a4e565b925060a0890135915060c089013590509295985092959890939650565b600060208284031215614c4757600080fd5b5035919050565b60005b83811015614c69578181015183820152602001614c51565b83811115614c78576000848401525b50505050565b60008151808452614c96816020860160208601614c4e565b601f01601f19169290920160200192915050565b6020815260006119ee6020830184614c7e565b6001600160a01b0381168114610d0a57600080fd5b60008060008060808587031215614ce857600080fd5b8435614cf381614cbd565b93506020850135614d0381614cbd565b925060408501359150606085013567ffffffffffffffff811115614d2657600080fd5b614d3287828801614b6e565b91505092959194509250565b600067ffffffffffffffff821115614d5857614d58614aa8565b5060051b60200190565b600082601f830112614d7357600080fd5b81356020614d83614b3e83614d3e565b82815260059290921b84018101918181019086841115614da257600080fd5b8286015b84811015614dc6578035614db981614cbd565b8352918301918301614da6565b509695505050505050565b600082601f830112614de257600080fd5b81356020614df2614b3e83614d3e565b82815260059290921b84018101918181019086841115614e1157600080fd5b8286015b84811015614dc65780358352918301918301614e15565b600082601f830112614e3d57600080fd5b81356020614e4d614b3e83614d3e565b82815260059290921b84018101918181019086841115614e6c57600080fd5b8286015b84811015614dc657803567ffffffffffffffff811115614e905760008081fd5b614e9e8986838b0101614b6e565b845250918301918301614e70565b60008060008060808587031215614ec257600080fd5b843567ffffffffffffffff80821115614eda57600080fd5b614ee688838901614d62565b95506020870135915080821115614efc57600080fd5b614f0888838901614dd1565b94506040870135915080821115614f1e57600080fd5b50614f2b87828801614e2c565b949793965093946060013593505050565b600080600080600060a08688031215614f5457600080fd5b85359450614f6460208701614a4e565b9350614f7260408701614a4e565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160088310614ff4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561500d57600080fd5b82359150602083013561501f81614cbd565b809150509250929050565b6000806040838503121561503d57600080fd5b8235915061504d60208401614a4e565b90509250929050565b60008060008060006080868803121561506e57600080fd5b8535945061507e60208701614a4e565b9350604086013567ffffffffffffffff8082111561509b57600080fd5b6150a789838a01614a5f565b909550935060608801359150808211156150c057600080fd5b506150cd88828901614b6e565b9150509295509295909350565b600080600080606085870312156150f057600080fd5b8435935061510060208601614a4e565b9250604085013567ffffffffffffffff81111561511c57600080fd5b61512887828801614a5f565b95989497509550505050565b6000806000806080858703121561514a57600080fd5b843567ffffffffffffffff8082111561516257600080fd5b61516e88838901614d62565b9550602087013591508082111561518457600080fd5b61519088838901614dd1565b945060408701359150808211156151a657600080fd5b6151b288838901614e2c565b935060608701359150808211156151c857600080fd5b508501601f810187136151da57600080fd5b614d3287823560208401614b30565b600081518084526020808501945080840160005b83811015615219578151875295820195908201906001016151fd565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e06020820152600061525f60e0830189614c7e565b82810360408401526152718189614c7e565b90508660608401526001600160a01b03861660808401528460a084015282810360c0840152610c4581856151e9565b60008060008060008060c087890312156152b957600080fd5b86356152c481614cbd565b955060208701356152d481614cbd565b95989597505050506040840135936060810135936080820135935060a0909101359150565b60008060006060848603121561530e57600080fd5b833561531981614cbd565b925060208401359150604084013567ffffffffffffffff81111561533c57600080fd5b61534886828701614b6e565b9150509250925092565b60006020828403121561536457600080fd5b81356119ee81614cbd565b600080600080600060a0868803121561538757600080fd5b853561539281614cbd565b945060208601356153a281614cbd565b9350604086013567ffffffffffffffff808211156153bf57600080fd5b6153cb89838a01614dd1565b945060608801359150808211156153e157600080fd5b6153ed89838a01614dd1565b935060808801359150808211156150c057600080fd5b6000806000806060858703121561541957600080fd5b843561542481614cbd565b935060208501359250604085013567ffffffffffffffff81111561511c57600080fd5b6000806040838503121561545a57600080fd5b823561546581614cbd565b946020939093013593505050565b600080600080600060a0868803121561548b57600080fd5b853561549681614cbd565b945060208601356154a681614cbd565b93506040860135925060608601359150608086013567ffffffffffffffff8111156154d057600080fd5b6150cd88828901614b6e565b8183823760009101908152919050565b600181811c9082168061550057607f821691505b602082108103615539577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561555157600080fd5b5051919050565b600081518084526020808501945080840160005b838110156152195781516001600160a01b03168752958201959082019060010161556c565b600081518084526020808501808196508360051b8101915082860160005b858110156155d95782840389526155c7848351614c7e565b988501989350908401906001016155af565b5091979650505050505050565b60a0815260006155f960a0830188615558565b828103602084015261560b81886151e9565b9050828103604084015261561f8187615591565b60608401959095525050608001529392505050565b60c08152600061564760c0830189615558565b828103602084015261565981896151e9565b9050828103604084015261566d8188615591565b60608401969096525050608081019290925260a0909101529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156156ce576156ce61568c565b500190565b6000602082840312156156e557600080fd5b815167ffffffffffffffff8111156156fc57600080fd5b8201601f8101841361570d57600080fd5b805161571b614b3e82614b08565b81815285602083850101111561573057600080fd5b6116a4826020830160208601614c4e565b6000828210156157535761575361568c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561579957600080fd5b815165ffffffffffff811681146119ee57600080fd5b6080815260006157c26080830187615558565b82810360208401526157d481876151e9565b905082810360408401526157e88186615591565b91505082606083015295945050505050565b84815260ff8416602082015282604082015260806060820152600061135f6080830184614c7e565b85815260ff8516602082015283604082015260a06060820152600061584a60a0830185614c7e565b828103608084015261585c8185614c7e565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036158995761589961568c565b5060010190565b6000602082840312156158b257600080fd5b815180151581146119ee57600080fd5b60006101208b835260206001600160a01b038c16818501528160408501526158ec8285018c615558565b91508382036060850152615900828b6151e9565b915083820360808501528189518084528284019150828160051b850101838c0160005b8381101561595157601f1987840301855261593f838351614c7e565b94860194925090850190600101615923565b505086810360a0880152615965818c615591565b9450505050508560c08401528460e084015282810361010084015261598a8185614c7e565b9c9b505050505050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156159d2576159d261568c565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615a3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b601f821115612e1857600081815260208120601f850160051c81016020861015615a685750805b601f850160051c820191505b818110156123dc57828155600101615a74565b815167ffffffffffffffff811115615aa157615aa1614aa8565b615ab581615aaf84546154ec565b84615a41565b602080601f831160018114615b085760008415615ad25750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556123dc565b600085815260208120601f198616915b82811015615b3757888601518255948401946001909101908401615b18565b5085821015615b7357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "ff" + }, + "key": "0xf5362f8385f6b0d71628d5c3bdf042baa255948d041600fd7dea8d0e13f1b41a" }, "0x5f3f1dbd7b74c6b46e8c44f98792a1daf8d69154": { "balance": "0", "nonce": 1, - "root": "0x3fe1d369b347a5a5c3ef2ffc7443ecb417736b02d5d3d46543e0dddbe76c8540", - "codeHash": "0x2d6cede68f07a8510838b46bb318ea6a139a5572ba3b127284651116581a2411", - "code": "0x608060405234801561001057600080fd5b50600436106102775760003560e01c806379ba509711610160578063a457c2d7116100d8578063dd62ed3e1161008c578063ee9a31a211610071578063ee9a31a21461060c578063f1127ed814610633578063f2fde38b1461068557600080fd5b8063dd62ed3e146105c2578063e30c3978146105fb57600080fd5b8063c3cda520116100bd578063c3cda52014610589578063c4d66de81461059c578063d505accf146105af57600080fd5b8063a457c2d714610563578063a9059cbb1461057657600080fd5b80638e539e8c1161012f57806395d89b411161011457806395d89b41146105045780639ab24eb01461053d5780639dc29fac1461055057600080fd5b80638e539e8c146104d257806391ddadf4146104e557600080fd5b806379ba50971461048b5780637ecebe001461049357806384b0196e146104a65780638da5cb5b146104c157600080fd5b80633a46b1a8116101f3578063587cde1e116101c25780636fcfff45116101a75780636fcfff451461043257806370a082311461045a578063715018a61461048357600080fd5b8063587cde1e146103f35780635c19a95c1461041f57600080fd5b80633a46b1a81461038757806340c10f191461039a5780634bf5d7e9146103af57806354fd4d50146103b757600080fd5b806318160ddd1161024a578063313ce5671161022f578063313ce5671461035d5780633644e5151461036c578063395093511461037457600080fd5b806318160ddd1461033857806323b872dd1461034a57600080fd5b806301ffc9a71461027c578063033964be146102a457806306fdde03146102e3578063095ea7b314610325575b600080fd5b61028f61028a366004612a65565b610698565b60405190151581526020015b60405180910390f35b6102cb7f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802981565b6040516001600160a01b03909116815260200161029b565b60408051808201909152600581527f4b726f6d6100000000000000000000000000000000000000000000000000000060208201525b60405161029b9190612b12565b61028f610333366004612b41565b610738565b6002545b60405190815260200161029b565b61028f610358366004612b6b565b610752565b6040516012815260200161029b565b61033c610776565b61028f610382366004612b41565b610785565b61033c610395366004612b41565b6107c4565b6103ad6103a8366004612b41565b610852565b005b610318610913565b6103186040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6102cb610401366004612ba7565b6001600160a01b039081166000908152600960205260409020541690565b6103ad61042d366004612ba7565b6109ab565b610445610440366004612ba7565b6109b8565b60405163ffffffff909116815260200161029b565b61033c610468366004612ba7565b6001600160a01b031660009081526020819052604090205490565b6103ad6109da565b6103ad6109ee565b61033c6104a1366004612ba7565b610a79565b6104ae610a97565b60405161029b9796959493929190612bc2565b603f546001600160a01b03166102cb565b61033c6104e0366004612c74565b610b3c565b6104ed610ba7565b60405165ffffffffffff909116815260200161029b565b60408051808201909152600381527f4b524f00000000000000000000000000000000000000000000000000000000006020820152610318565b61033c61054b366004612ba7565b610bb2565b6103ad61055e366004612b41565b610c5e565b61028f610571366004612b41565b610d06565b61028f610584366004612b41565b610db0565b6103ad610597366004612c9e565b610dbe565b6103ad6105aa366004612ba7565b610ef4565b6103ad6105bd366004612cf6565b611075565b61033c6105d0366004612d60565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6071546001600160a01b03166102cb565b6102cb7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b610646610641366004612d93565b6111d9565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928101929092520161029b565b6103ad610693366004612ba7565b611272565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f30a0c5a9000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061073057507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b60003361074681858561132f565b60019150505b92915050565b600033610760858285611487565b61076b858585611519565b506001949350505050565b600061078061170c565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061074690829086906107bf908790612e02565b61132f565b60006107ce610ba7565b65ffffffffffff1682106108295760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166000908152600a6020526040902061084b9083611837565b9392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614806108935750603f546001600160a01b031633145b6109055760405162461bcd60e51b815260206004820152602e60248201527f476f7665726e616e6365546f6b656e3a206f6e6c7920627269646765206f722060448201527f6f776e65722063616e206d696e740000000000000000000000000000000000006064820152608401610820565b61090f828261194a565b5050565b60604361091e610ba7565b65ffffffffffff16146109735760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152606401610820565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6109b5338261199b565b50565b6001600160a01b0381166000908152600a602052604081205461074c90611a2c565b6109e2611aac565b6109ec6000611b06565b565b60715433906001600160a01b03168114610a705760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610820565b6109b581611b06565b6001600160a01b03811660009081526007602052604081205461074c565b600060608082808083610acb7f4b726f6d610000000000000000000000000000000000000000000000000000056005611b37565b610af67f31000000000000000000000000000000000000000000000000000000000000016006611b37565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610b46610ba7565b65ffffffffffff168210610b9c5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000006044820152606401610820565b61074c600b83611837565b600061078043611bdb565b6001600160a01b0381166000908152600a60205260408120548015610c36576001600160a01b0383166000908152600a6020526040902080546000198301908110610bff57610bff612e49565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610c39565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610cfc5760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e0000000000000000000000000000006064820152608401610820565b61090f8282611c59565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610da35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610820565b61076b828686840361132f565b600033610746818585611519565b83421115610e0e5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610820565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610e8890610e809060a00160405160208183030381529060405280519060200120611c9e565b858585611ce6565b9050610e9381611d0e565b8614610ee15760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610820565b610eeb818861199b565b50505050505050565b600c54610100900460ff1615808015610f145750600c54600160ff909116105b80610f2e5750303b158015610f2e5750600c5460ff166001145b610fa05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610820565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ffe57600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611006611d36565b61100f82611272565b801561090f57600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b834211156110c55760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610820565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886110f48c611d0e565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061114f82611c9e565b9050600061115f82878787611ce6565b9050896001600160a01b0316816001600160a01b0316146111c25760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610820565b6111cd8a8a8a61132f565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600a60205260409020805463ffffffff841690811061121d5761121d612e49565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b61127a611aac565b607180546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556112c3603f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60006020835110156113175761131083611dbb565b905061074c565b816113228482612f13565b5060ff905061074c565b90565b6001600160a01b0383166113aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0382166114265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461151357818110156115065760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610820565b611513848484840361132f565b50505050565b6001600160a01b0383166115955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0382166116115760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b038316600090815260208190526040902054818110156116a05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611513848484611e17565b6000306001600160a01b037f0000000000000000000000005f3f1dbd7b74c6b46e8c44f98792a1daf8d691541614801561176557507f000000000000000000000000000000000000000000000000000000000000053946145b1561178f57507f442af78ca6ccf64fbca073e4289e47cad3d1257beda674aaa14b53d2afd8589e90565b610780604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f7d1780c7a694e1f75550e8e5f55a6c40ba84748efbfbd38087dbf009f30899ba918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b81546000908181600581111561189157600061185284611e22565b61185c9085612ff1565b600088815260209020909150869082015463ffffffff1611156118815780915061188f565b61188c816001612e02565b92505b505b808210156118de5760006118a58383611f0a565b600088815260209020909150869082015463ffffffff1611156118ca578091506118d8565b6118d5816001612e02565b92505b50611891565b801561191f576000868152602090208101600019015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611922565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169695505050505050565b6119548282611f25565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161198f91815260200190565b60405180910390a25050565b6001600160a01b038281166000818152600960208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611513828483611fd1565b600063ffffffff821115611aa85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610820565b5090565b603f546001600160a01b031633146109ec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610820565b607180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556109b58161210e565b606060ff8314611b4a5761131083612178565b818054611b5690612e78565b80601f0160208091040260200160405190810160405280929190818152602001828054611b8290612e78565b8015611bcf5780601f10611ba457610100808354040283529160200191611bcf565b820191906000526020600020905b815481529060010190602001808311611bb257829003601f168201915b5050505050905061074c565b600065ffffffffffff821115611aa85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152608401610820565b611c6382826121b7565b816001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161198f91815260200190565b600061074c611cab61170c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000611cf7878787876121cf565b91509150611d04816122b1565b5095945050505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b600c54610100900460ff16611db35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610820565b6109ec612416565b600080829050601f81511115611dff57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016108209190612b12565b8051611e0a82613008565b179392505050565b505050565b611e1283838361249c565b600081600003611e3457506000919050565b60006001611e41846124ce565b901c6001901b90506001818481611e5a57611e5a61302c565b048201901c90506001818481611e7257611e7261302c565b048201901c90506001818481611e8a57611e8a61302c565b048201901c90506001818481611ea257611ea261302c565b048201901c90506001818481611eba57611eba61302c565b048201901c90506001818481611ed257611ed261302c565b048201901c90506001818481611eea57611eea61302c565b048201901c905061084b81828581611f0457611f0461302c565b04612562565b6000611f19600284841861305b565b61084b90848416612e02565b611f2f8282612578565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1015611fc35760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610820565b611513600b61263f8361264b565b816001600160a01b0316836001600160a01b031614158015611ff35750600081115b15611e12576001600160a01b03831615612081576001600160a01b0383166000908152600a60205260408120819061202e906128148561264b565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612076929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611e12576001600160a01b0382166000908152600a6020526040812081906120b79061263f8561264b565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516120ff929190918252602082015260400190565b60405180910390a25050505050565b603f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060600061218583612820565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6121c18282612861565b611513600b6128148361264b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561220657506000905060036122a8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561225a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b0381166122a1576000600192509250506122a8565b9150600090505b94509492505050565b60008160048111156122c5576122c5613096565b036122cd5750565b60018160048111156122e1576122e1613096565b0361232e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610820565b600281600481111561234257612342613096565b0361238f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610820565b60038160048111156123a3576123a3613096565b036109b55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610820565b600c54610100900460ff166124935760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610820565b6109ec33611b06565b6001600160a01b03838116600090815260096020526040808220548584168352912054611e1292918216911683611fd1565b600080608083901c156124e357608092831c92015b604083901c156124f557604092831c92015b602083901c1561250757602092831c92015b601083901c1561251957601092831c92015b600883901c1561252b57600892831c92015b600483901c1561253d57600492831c92015b600283901c1561254f57600292831c92015b600183901c1561074c5760010192915050565b6000818310612571578161084b565b5090919050565b6001600160a01b0382166125ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610820565b80600260008282546125e09190612e02565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361090f60008383611e17565b600061084b8284612e02565b825460009081908181156126ad5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660208201526126c2565b60408051808201909152600080825260208201525b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1693506126f784868863ffffffff16565b9250600082118015612721575061270c610ba7565b65ffffffffffff16816000015163ffffffff16145b1561277b5761272f836129d1565b60008881526020902083016000190180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff90921691909117905561280a565b86604051806040016040528061279f612792610ba7565b65ffffffffffff16611a2c565b63ffffffff1681526020016127b3866129d1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b600061084b8284612ff1565b600060ff8216601f81111561074c576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166128dd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0382166000908152602081905260409020548181101561296c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611e1283600084611e17565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611aa85760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610820565b600060208284031215612a7757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084b57600080fd5b6000815180845260005b81811015612acd57602081850181015186830182015201612ab1565b81811115612adf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061084b6020830184612aa7565b80356001600160a01b0381168114612b3c57600080fd5b919050565b60008060408385031215612b5457600080fd5b612b5d83612b25565b946020939093013593505050565b600080600060608486031215612b8057600080fd5b612b8984612b25565b9250612b9760208501612b25565b9150604084013590509250925092565b600060208284031215612bb957600080fd5b61084b82612b25565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152612bfe60e084018a612aa7565b8381036040850152612c10818a612aa7565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015612c6257835183529284019291840191600101612c46565b50909c9b505050505050505050505050565b600060208284031215612c8657600080fd5b5035919050565b803560ff81168114612b3c57600080fd5b60008060008060008060c08789031215612cb757600080fd5b612cc087612b25565b95506020870135945060408701359350612cdc60608801612c8d565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215612d1157600080fd5b612d1a88612b25565b9650612d2860208901612b25565b95506040880135945060608801359350612d4460808901612c8d565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612d7357600080fd5b612d7c83612b25565b9150612d8a60208401612b25565b90509250929050565b60008060408385031215612da657600080fd5b612daf83612b25565b9150602083013563ffffffff81168114612dc857600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612e1557612e15612dd3565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c90821680612e8c57607f821691505b602082108103611d30577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115611e1257600081815260208120601f850160051c81016020861015612eec5750805b601f850160051c820191505b81811015612f0b57828155600101612ef8565b505050505050565b815167ffffffffffffffff811115612f2d57612f2d612e1a565b612f4181612f3b8454612e78565b84612ec5565b602080601f831160018114612f765760008415612f5e5750858301515b600019600386901b1c1916600185901b178555612f0b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612fc357888601518255948401946001909101908401612fa4565b5085821015612fe15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008282101561300357613003612dd3565b500390565b80516020808301519190811015611d305760001960209190910360031b1b16919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613091577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", + "root": "0xa7502d7e0c33edc1e464c30248922e1669db5c2bce2c79d47b9b7ab9538c23a1", + "codeHash": "0xb0da2f75830eaa4e991d1cf76e83e4b4af7a7d21c004b32a64db233cb8a9cda0", + "code": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637eb1184511610097578063d1bc76a111610066578063d1bc76a114610229578063e30c39781461023c578063e4fc6b6d1461025a578063f2fde38b1461026257600080fd5b80637eb11845146101ee5780638da5cb5b146101f857806398f1312e14610216578063baee5ed41461022157600080fd5b8063457c3977116100d3578063457c3977146101965780634f02c420146101a9578063715018a6146101de57806379ba5097146101e657600080fd5b80631249c58b1461010557806321e5e2c41461010f57806328df3f18146101425780632efd46d61461014a575b600080fd5b61010d610275565b005b61012f61011d366004610c7a565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b61010d610557565b6101717f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27481565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610139565b61010d6101a4366004610c7a565b6105e1565b6001546101ce9074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610139565b61010d61068d565b61010d6106a1565b61012f620186a081565b60005473ffffffffffffffffffffffffffffffffffffffff16610171565b61012f633b9aca0081565b61010d610756565b610171610237366004610cb7565b610870565b60015473ffffffffffffffffffffffffffffffffffffffff16610171565b61010d6108a7565b61010d610270366004610c7a565b610aa3565b61027d610bc8565b60015474010000000000000000000000000000000000000000900460ff161561032d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4d696e744d616e616765723a20616c7265616479206d696e746564206f6e207460448201527f68697320636861696e000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60007f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be9190610cd0565b6103c990600a610e44565b6103d790633b9aca00610e53565b90506000805b60025481101561046d576000600282815481106103fc576103fc610e90565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526003909152604082205490925090620186a061043f8388610e53565b6104499190610ebf565b90506104558186610efa565b9450505050808061046590610f12565b9150506103dd565b506040517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018290527f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27473ffffffffffffffffffffffffffffffffffffffff16906340c10f1990604401600060405180830381600087803b1580156104fc57600080fd5b505af1158015610510573d6000803e3d6000fd5b5050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905550505050565b61055f610bc8565b7f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27473ffffffffffffffffffffffffffffffffffffffff166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105c757600080fd5b505af11580156105db573d6000803e3d6000fd5b50505050565b6105e9610bc8565b6040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c274169063f2fde38b90602401600060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b5050505050565b610695610bc8565b61069f6000610c49565b565b600154339073ffffffffffffffffffffffffffffffffffffffff16811461074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610324565b61075381610c49565b50565b61075e610bc8565b60015474010000000000000000000000000000000000000000900460ff16610808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4d696e744d616e616765723a206e6f74206d696e746564206265666f7265207260448201527f656e6f756e6365206f776e6572736869700000000000000000000000000000006064820152608401610324565b7f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27473ffffffffffffffffffffffffffffffffffffffff1663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105c757600080fd5b6002818154811061088057600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6108af610bc8565b60007f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109409190610cd0565b61094b90600a610e44565b61095990633b9aca00610e53565b905060005b600254811015610a9f5760006002828154811061097d5761097d610e90565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526003909152604082205490925090620186a06109c08387610e53565b6109ca9190610ebf565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018390529192507f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c2749091169063a9059cbb906044016020604051808303816000875af1158015610a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a889190610f4a565b505050508080610a9790610f12565b91505061095e565b5050565b610aab610bc8565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610b0e60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610324565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561075381610b53565b600060208284031215610c8c57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610cb057600080fd5b9392505050565b600060208284031215610cc957600080fd5b5035919050565b600060208284031215610ce257600080fd5b815160ff81168114610cb057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115610d7b57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610d6157610d61610cf3565b80851615610d6e57918102915b93841c9390800290610d27565b509250929050565b600082610d9257506001610e3e565b81610d9f57506000610e3e565b8160018114610db55760028114610dbf57610ddb565b6001915050610e3e565b60ff841115610dd057610dd0610cf3565b50506001821b610e3e565b5060208310610133831016604e8410600b8410161715610dfe575081810a610e3e565b610e088383610d22565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e3a57610e3a610cf3565b0290505b92915050565b6000610cb060ff841683610d83565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e8b57610e8b610cf3565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082610ef5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115610f0d57610f0d610cf3565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f4357610f43610cf3565b5060010190565b600060208284031215610f5c57600080fd5b81518015158114610cb057600080fdfea164736f6c634300080f000a", "storage": { - "0x000000000000000000000000000000000000000000000000000000000000000c": "ff" + "0x0000000000000000000000000000000000000000000000000000000000000000": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000001": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000002": "02", + "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace": "14dc79964da2c08b23698b3d3cc7ca32193d9955", + "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf": "a0ee7a142d267c1f36714e4a8f75612f20a79720", + "0x6a706e96617ceafd46f24757f71aad32b88c8bf0b8ae22ec3de611582d2d4a6c": "0bb8", + "0xc9f51ff2393193a07f116cb1ed67be0783387c719e9662a8d0ec4684dcfc0fa0": "07d0" }, "key": "0x2f2e559016e1fc00ff23d4dd67946860f76979563e8f80a6faef78622494aa39" }, @@ -272,13 +245,13 @@ "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707": { "balance": "0", "nonce": 1, - "root": "0xd1a8132ce5b8d0cc8e477431fb98f5586d2a7cb47d70fe585976de8271e86ef3", + "root": "0xae59900351138a65269a7a3bfa2338b4c63f7b93b2dd1528e2442d957af50a8f", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", "0x0000000000000000000000000000000000000000000000000000000000000066": "dead", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "3aa5ebb10dc797cac828524e59a333d0a371443c", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "c6e7df5e7b4f2a278906862b61205850344d4e7d", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x0d61055ea920808012c78dfc3fd2714d5ce59f19b79b6147d59d69a3888a84f5" @@ -286,157 +259,183 @@ "0x610178da211fef7d417bc0e6fed39f05609ad788": { "balance": "0", "nonce": 1, - "root": "0x67afb40e27834cbd9ca326de47b395dc98d789f1d5368ab48151dd5167071991", + "root": "0x89e338423138cf234f263a82cda1828256a2df0f220e950c35dd7b53230ef81f", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "9e545e3c0baab3e08cdfd552c960a1050f373042", - "0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "03", - "0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49": "02", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3", - "0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "02", - "0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "03" + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "fd471836031dc5108809d173a067e8486b9047a3", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0xc6ca7521443eb53bb835320d8045532cc699c3564097dc83c2afa5aa02120e72" }, - "0x67d269191c92caf3cd7723f116c85e6e9bf55933": { + "0x68b1d87f95878fe05b998f19b66f4baba5de1aed": { "balance": "0", "nonce": 1, - "root": "0x821e2556a290c86405f8160a2d662042a431ba456b9db265c79bb837c04be5f0", - "codeHash": "0x87c2f1a51ca632e37dfdc53f34133f88d3c0463694fced6136cf4d5bf22ac087", - "code": "0x6080604052600436106101a05760003560e01c80639e45e8f4116100e1578063cf8e5cf01161008a578063e4a3011611610064578063e4a3011614610550578063e664672314610570578063f403838d14610590578063f4daa291146105a657600080fd5b8063cf8e5cf0146104fb578063d1de856c1461051b578063dcec33481461053b57600080fd5b8063ae9483e0116100bb578063ae9483e014610473578063b0ea09a8146104a7578063b98debbf146104c757600080fd5b80639e45e8f41461037b578063a25ae557146103d4578063a48ea6de1461045357600080fd5b806369f16eec1161014e5780637f006420116101285780637f0064201461031057806380446bd21461033057806388786272146103455780639902cdc01461035b57600080fd5b806369f16eec146102d05780636abcf563146102e557806370872aa5146102fa57600080fd5b8063529933df1161017f578063529933df1461023157806354fd4d50146102655780635a045f78146102bb57600080fd5b80622134cc146101a557806333727c4d146101ec5780634599c7881461021c575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000281565b6040519081526020015b60405180910390f35b3480156101f857600080fd5b5061020c610207366004611ac3565b6105da565b60405190151581526020016101e3565b34801561022857600080fd5b506101d96105ee565b34801561023d57600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000481565b34801561027157600080fd5b506102ae6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101e39190611adc565b6102ce6102c9366004611b4f565b610661565b005b3480156102dc57600080fd5b506101d9610e7d565b3480156102f157600080fd5b506003546101d9565b34801561030657600080fd5b506101d960015481565b34801561031c57600080fd5b506101d961032b366004611ac3565b610e8f565b34801561033c57600080fd5b506101d961106f565b34801561035157600080fd5b506101d960025481565b34801561036757600080fd5b506102ce610376366004611ac3565b611087565b34801561038757600080fd5b506103af7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e3565b3480156103e057600080fd5b506103f46103ef366004611ac3565b6112d9565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152828201516fffffffffffffffffffffffffffffffff90811692820192909252606092830151909116918101919091526080016101e3565b34801561045f57600080fd5b506101d961046e366004611ac3565b611396565b34801561047f57600080fd5b506103af7f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b181565b3480156104b357600080fd5b506103af6104c2366004611ac3565b611402565b3480156104d357600080fd5b506103af7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561050757600080fd5b506103f4610516366004611ac3565b611444565b34801561052757600080fd5b506101d9610536366004611ac3565b611483565b34801561054757600080fd5b506101d96114cb565b34801561055c57600080fd5b506102ce61056b366004611b81565b611511565b34801561057c57600080fd5b506102ce61058b366004611bc8565b61172a565b34801561059c57600080fd5b506101d960045481565b3480156105b257600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000007881565b6000426105e683611396565b111592915050565b60035460009015610658576003805461060990600190611c30565b8154811061061957610619611c47565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600061066c60035490565b6040517fad36d6cc0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9169063ad36d6cc90602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190611c76565b9050600081156107cd576040517f891aab740000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b173ffffffffffffffffffffffffffffffffffffffff169063891aab749060240160006040518083038186803b1580156107b057600080fd5b505afa1580156107c4573d6000803e3d6000fd5b5050505061085f565b7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc973ffffffffffffffffffffffffffffffffffffffff16633a5490466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085c9190611c9f565b90505b81158015610883575073ffffffffffffffffffffffffffffffffffffffff81811614155b1561093e573373ffffffffffffffffffffffffffffffffffffffff82161461093e5760405162461bcd60e51b815260206004820152604260248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206e65787420736560448201527f6c65637465642076616c696461746f722063616e207375626d6974206f75747060648201527f7574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6109466114cb565b86146109e05760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a401610935565b426109e961106f565b1115610a5d5760405162461bcd60e51b815260206004820152603560248201527f4c324f75747075744f7261636c653a2063616e6e6f74207375626d6974204c3260448201527f206f757470757420696e207468652066757475726500000000000000000000006064820152608401610935565b86610ad05760405162461bcd60e51b815260206004820152603c60248201527f4c324f75747075744f7261636c653a204c3220636865636b706f696e74206f7560448201527f747075742063616e6e6f7420626520746865207a65726f2068617368000000006064820152608401610935565b8415801590610adf5750834015155b15610b805784844014610b805760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a401610935565b60408051608081018252338152602081018981526fffffffffffffffffffffffffffffffff428181168486019081528b831660608601908152600380546001810182556000829052965196027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8101805473ffffffffffffffffffffffffffffffffffffffff989098167fffffffffffffffffffffffff00000000000000000000000000000000000000009098169790971790965593517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c86015551925182167001000000000000000000000000000000000292909116919091177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d909201919091559051879185918a917f457b4388026260019ae0b0b4f16c98235d74fe7359be469bdcba16e6d0d4968991610cd991815260200190565b60405180910390a48115610d8c576040517fbe119347000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b173ffffffffffffffffffffffffffffffffffffffff169063be11934790602401600060405180830381600087803b158015610d6f57600080fd5b505af1158015610d83573d6000803e3d6000fd5b50505050610e74565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663d38dc7ee84610df37f000000000000000000000000000000000000000000000000000000000000007842611cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050505b50505050505050565b60035460009061065c90600190611c30565b6000610e996105ee565b821115610f345760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f7375626d69747465640000000000000000000000000000000000000000000000608482015260a401610935565b600354610fcf5760405162461bcd60e51b815260206004820152604760248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e207375626d697460648201527f7465642079657400000000000000000000000000000000000000000000000000608482015260a401610935565b6003546000905b808210156110685760006002610fec8385611cbc565b610ff69190611cd4565b9050846003828154811061100c5761100c611c47565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16101561105e57611057816001611cbc565b9250611062565b8091505b50610fd6565b5092915050565b600061065c61107c6114cb565b610536906001611cbc565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663ad36d6cc6110ce600184611c30565b6040518263ffffffff1660e01b81526004016110ec91815260200190565b602060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611c76565b15611208573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b116146112035760405162461bcd60e51b815260206004820152605660248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f72206d616e6167657220636f6e74726163742063616e20736574206e65787460648201527f2066696e616c697a65206f757470757420696e64657800000000000000000000608482015260a401610935565b600455565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112035760405162461bcd60e51b815260206004820152605360248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f7220706f6f6c20636f6e74726163742063616e20736574206e65787420666960648201527f6e616c697a65206f757470757420696e64657800000000000000000000000000608482015260a401610935565b6040805160808101825260008082526020820181905291810182905260608101919091526003828154811061131057611310611c47565b6000918252602091829020604080516080810182526003909302909101805473ffffffffffffffffffffffffffffffffffffffff1683526001810154938301939093526002909201546fffffffffffffffffffffffffffffffff808216938301939093527001000000000000000000000000000000009004909116606082015292915050565b60007f0000000000000000000000000000000000000000000000000000000000000078600383815481106113cc576113cc611c47565b60009182526020909120600260039092020101546113fc91906fffffffffffffffffffffffffffffffff16611cbc565b92915050565b60006003828154811061141757611417611c47565b600091825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1692915050565b604080516080810182526000808252602082018190529181018290526060810191909152600361147383610e8f565b8154811061131057611310611c47565b60007f0000000000000000000000000000000000000000000000000000000000000002600154836114b49190611c30565b6114be9190611d0f565b6002546113fc9190611cbc565b60035460009015611509577f00000000000000000000000000000000000000000000000000000000000000046114ff6105ee565b61065c9190611cbc565b61065c6105ee565b600054610100900460ff16158080156115315750600054600160ff909116105b8061154b5750303b15801561154b575060005460ff166001145b6115bd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610935565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561161b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b428211156116b85760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a401610935565b60028290556001839055801561172557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78816146117fb5760405162461bcd60e51b815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c792074686520636f6c6f73736560448201527f756d20636f6e74726163742063616e207265706c61636520616e206f7574707560648201527f7400000000000000000000000000000000000000000000000000000000000000608482015260a401610935565b73ffffffffffffffffffffffffffffffffffffffff81166118845760405162461bcd60e51b815260206004820152603060248201527f4c324f75747075744f7261636c653a207375626d69747465722061646472657360448201527f732063616e6e6f74206265207a65726f000000000000000000000000000000006064820152608401610935565b60035483106119215760405162461bcd60e51b815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420616674657220746865206c6174657374206f757470757460648201527f20696e6465780000000000000000000000000000000000000000000000000000608482015260a401610935565b60006003848154811061193657611936611c47565b6000918252602090912060039091020160028101549091507f00000000000000000000000000000000000000000000000000000000000000789061198c906fffffffffffffffffffffffffffffffff1642611c30565b10611a255760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420746861742068617320616c7265616479206265656e206660648201527f696e616c697a6564000000000000000000000000000000000000000000000000608482015260a401610935565b6001810183905580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405184815285907f1ec0d63ba3dd4b277ece3e578c4c9587edfa0d855192704c88f9a1d74316624f9060200160405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600060208284031215611ad557600080fd5b5035919050565b600060208083528351808285015260005b81811015611b0957858101830151858201604001528201611aed565b81811115611b1b576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060008060808587031215611b6557600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611b9457600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff81168114611bc557600080fd5b50565b600080600060608486031215611bdd57600080fd5b83359250602084013591506040840135611bf681611ba3565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c4257611c42611c01565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c8857600080fd5b81518015158114611c9857600080fd5b9392505050565b600060208284031215611cb157600080fd5b8151611c9881611ba3565b60008219821115611ccf57611ccf611c01565b500190565b600082611d0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d4757611d47611c01565b50029056fea164736f6c634300080f000a", + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0x354b26999e434f8256d168395315e1f51fc15bf49bf2e6bb58fc549bd597e7da", + "code": "0x7c010000000000000000000000000000000000000000000000000000000060003504806329a5f2f6149063299e566014176200003757fe5b7f109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b6020527f16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e06040527f2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d6060527f2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd7716080527f2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe2360a0527f101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa60c0527f143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a760e0527f176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911610100527f19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0610120527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016024356004356000837f0ee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e82089050837f00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e86483089150837f08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f58408925083818180828009800909905083828180828009800909915083838180828009800909925062000249600052620025ba565b837f2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d082089050837f2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf283089150837f0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa84089250838181808280098009099050838281808280098009099150838381808280098009099250620002ec600052620025ba565b837f28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d82089050837f2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb7883089150837f234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632840892508381818082800980090990508382818082800980090991508383818082800980090992506200038f600052620025ba565b837f15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d42882089050837f0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f683089150837f1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c8408925083818180828009800909905083828180828009800909915083838180828009800909925062000432600052620025ba565b837f10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de55982089050837f1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f683089150837f1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c870584089250838181808280098009099050620004bd600052620025ba565b837f04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d82089050837f0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be82883089150837f099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b98408925083818180828009800909905062000548600052620025ba565b837f052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa682089050837f0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc83089150837f119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd184089250838181808280098009099050620005d3600052620025ba565b837f03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d0982089050837f2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea56583089150837f005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9840892508381818082800980090990506200065e600052620025ba565b837f233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b582089050837f05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d6028083089150837f0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b84089250838181808280098009099050620006e9600052620025ba565b837f2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec082089050837f1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c46083089150837f12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc08408925083818180828009800909905062000774600052620025ba565b837f0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e82089050837f037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f844883089150837f05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f84089250838181808280098009099050620007ff600052620025ba565b837f29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e82089050837f20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f83089150837f2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887840892508381818082800980090990506200088a600052620025ba565b837f143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c882089050837f0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf183089150837f028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da538408925083818180828009800909905062000915600052620025ba565b837f2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c82089050837f0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e83089150837f2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb3884089250838181808280098009099050620009a0600052620025ba565b837f30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a73520682089050837f1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad83089150837f10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c8408925083818180828009800909905062000a2b600052620025ba565b837f2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef82089050837f1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c9183089150837f07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a08408925083818180828009800909905062000ab6600052620025ba565b837f21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c075082089050837f2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e83089150837f2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e8408925083818180828009800909905062000b41600052620025ba565b837f162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab82089050837f2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a7009239331183089150837f2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a8408925083818180828009800909905062000bcc600052620025ba565b837f1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da982089050837f204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c456552983089150837f0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c5028408925083818180828009800909905062000c57600052620025ba565b837f174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b5482089050837f1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef83089150837f066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a8408925083818180828009800909905062000ce2600052620025ba565b837f2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd80482089050837f13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd64983089150837f1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a8408925083818180828009800909905062000d6d600052620025ba565b837f00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff182089050837f0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d383089150837f29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba898408925083818180828009800909905062000df8600052620025ba565b837f2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be82089050837f1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af183089150837f151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c58408925083818180828009800909905062000e83600052620025ba565b837f04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f10082089050837f13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c296783089150837f01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e48408925083818180828009800909905062000f0e600052620025ba565b837f2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b0282089050837f1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b64683089150837f041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d8408925083818180828009800909905062000f99600052620025ba565b837f154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc682089050837f0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da483089150837f0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e8408925083818180828009800909905062001024600052620025ba565b837f06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea065462682089050837f0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb83089150837f04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e1384089250838181808280098009099050620010af600052620025ba565b837f2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b375882089050837f123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef83089150837f2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9840892508381818082800980090990506200113a600052620025ba565b837f0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d82089050837f12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f283089150837f21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a9003584089250838181808280098009099050620011c5600052620025ba565b837f16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b14782089050837f1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac283089150837f07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a8408925083818180828009800909905062001250600052620025ba565b837f05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc82089050837f20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f83089150837f04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db6984089250838181808280098009099050620012db600052620025ba565b837f27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a82089050837f2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d183089150837f1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b88408925083818180828009800909905062001366600052620025ba565b837f15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a82089050837f1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c78583089150837f25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c7784089250838181808280098009099050620013f1600052620025ba565b837f15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a6782089050837f2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c7172783089150837f002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b840892508381818082800980090990506200147c600052620025ba565b837f2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d282089050837f00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe83089150837f0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c35128408925083818180828009800909905062001507600052620025ba565b837f00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d82089050837f171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda983089150837f170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a8088408925083818180828009800909905062001592600052620025ba565b837f29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae182089050837f1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e6497383089150837f1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09840892508381818082800980090990506200161d600052620025ba565b837f22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af3882089050837f0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd83089150837f11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e828484089250838181808280098009099050620016a8600052620025ba565b837f1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af82089050837f2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee46683089150837f3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad8408925083818180828009800909905062001733600052620025ba565b837f2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c822514508682089050837f119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c383089150837f1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd80084089250838181808280098009099050620017be600052620025ba565b837f28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb682089050837f083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e783089150837f0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b8408925083818180828009800909905062001849600052620025ba565b837f0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b82089050837f2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c9859183089150837f0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f17884089250838181808280098009099050620018d4600052620025ba565b837f0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d4082089050837f1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d483089150837f0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233840892508381818082800980090990506200195f600052620025ba565b837f0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b16887382089050837f1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d83089150837f2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc084089250838181808280098009099050620019ea600052620025ba565b837f1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb82089050837f01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f932647887583089150837f1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e8408925083818180828009800909905062001a75600052620025ba565b837f2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f01982089050837f23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b83089150837f2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d598408925083818180828009800909905062001b00600052620025ba565b837f0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f82089050837f2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a883089150837f15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f889488408925083818180828009800909905062001b8b600052620025ba565b837f193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f82089050837f2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f83089150837f1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d1428408925083818180828009800909905062001c16600052620025ba565b837f04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b82089050837f0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f2383089150837f058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c08408925083818180828009800909905062001ca1600052620025ba565b837f1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a82089050837f03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b583089150837f23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a588408925083818180828009800909905062001d2c600052620025ba565b837f0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f282089050837f06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b83089150837f118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d018408925083818180828009800909905062001db7600052620025ba565b837f13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b182089050837f169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b83089150837f04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d8408925083818180828009800909905062001e42600052620025ba565b837f256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec82089050837f30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb283089150837f10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc7928408925083818180828009800909905062001ecd600052620025ba565b837f193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e3686082089050837f18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d83089150837f29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea61118408925083818180828009800909905062001f58600052620025ba565b837f10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c71182089050837f0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb83089150837f16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa3368408925083818180828009800909905062001fe3600052620025ba565b837f0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a82089050837f1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf186083089150837f0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6840892508381818082800980090990506200206e600052620025ba565b837f161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b82089050837f0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b83089150837f1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f45184089250838181808280098009099050620020f9600052620025ba565b837f2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c55682089050837f1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f7083089150837f2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf778408925083818180828009800909905062002184600052620025ba565b837f23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea82089050837f09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d83089150837f188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630840892508381818082800980090990506200220f600052620025ba565b837f3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f82089050837f15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd7883089150837f1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc840892508381818082800980090990506200229a600052620025ba565b837f2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb82089050837f202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d6083089150837f096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f8408925083818180828009800909905062002325600052620025ba565b837f054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a482089050837f1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f183089150837f21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc84089250838181808280098009099050838281808280098009099150838381808280098009099250620023c8600052620025ba565b837f1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf0882089050837f0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb2410083089150837f1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320840892508381818082800980090990508382818082800980090991508383818082800980090992506200246b600052620025ba565b837f0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad87082089050837f193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba83089150837f102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8840892508381818082800980090990508382818082800980090991508383818082800980090992506200250e600052620025ba565b837f0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab182089050837f216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d2283089150837f1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e422832516184089250838181808280098009099050838281808280098009099150838381808280098009099250620025b1600052620025ba565b60005260206000f35b8360205182098460405184098591088460605185098591088460805183098560a05185098691088560c05186098691088560e0518409866101005186098791088661012051870987910894509250905060005156", + "key": "0x82bbeea1b838affd4d92ca0d2b311b02fb5ed4b7666c5e3b7f08aaa3053c9809" + }, + "0x70e0ba845a1a0f2da3359c97e0285013525ffc49": { + "balance": "0", + "nonce": 1, + "root": "0x01f9e62d19297f681ea2208de1fec6c67ed86a26e55dbf4b27a1b0881060507b", + "codeHash": "0xf0fad452b83cbe1ab636d54d05583153583b5d43a1e2e417746f46d42fdf89d3", + "code": "0x608060405234801561001057600080fd5b50600436106102925760003560e01c806370a08231116101605780639ab24eb0116100d8578063c4d66de81161008c578063d204c45e11610071578063d204c45e1461056c578063e985e9c51461057f578063f2fde38b146105bb57600080fd5b8063c4d66de814610546578063c87b56dd1461055957600080fd5b8063b45a3c0e116100bd578063b45a3c0e1461050d578063b88d4fde14610520578063c3cda5201461053357600080fd5b80639ab24eb0146104e7578063a22cb465146104fa57600080fd5b806384b0196e1161012f5780638e539e8c116101145780638e539e8c146104ad57806391ddadf4146104c057806395d89b41146104df57600080fd5b806384b0196e146104805780638da5cb5b1461049b57600080fd5b806370a082311461044a578063715018a61461045d5780637ecebe00146104655780638456cb591461047857600080fd5b80633f4ba83a1161020e57806354fd4d50116101c25780635c19a95c116101a75780635c19a95c146104195780635c975abb1461042c5780636352211e1461043757600080fd5b806354fd4d50146103b0578063587cde1e146103ec57600080fd5b806342966c68116101f357806342966c68146103825780634bf5d7e9146103955780634f6ccce71461039d57600080fd5b80633f4ba83a1461036757806342842e0e1461036f57600080fd5b806318160ddd116102655780632f745c591161024a5780632f745c59146103395780633644e5151461034c5780633a46b1a81461035457600080fd5b806318160ddd1461031457806323b872dd1461032657600080fd5b806301ffc9a71461029757806306fdde03146102bf578063081812fc146102d4578063095ea7b3146102ff575b600080fd5b6102aa6102a5366004613dae565b6105ce565b60405190151581526020015b60405180910390f35b6102c761062a565b6040516102b69190613e41565b6102e76102e2366004613e54565b6106bc565b6040516001600160a01b0390911681526020016102b6565b61031261030d366004613e89565b6106e3565b005b6099545b6040519081526020016102b6565b610312610334366004613eb3565b61072f565b610318610347366004613e89565b61077d565b61031861082a565b610318610362366004613e89565b610839565b6103126108e9565b61031261037d366004613eb3565b6108fb565b610312610390366004613e54565b610944565b6102c7610958565b6103186103ab366004613e54565b6109f0565b6102c76040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6102e76103fa366004613eef565b6001600160a01b03908116600090815261019360205260409020541690565b610312610427366004613eef565b610a94565b60fb5460ff166102aa565b6102e7610445366004613e54565b610a9f565b610318610458366004613eef565b610b04565b610312610b9e565b610318610473366004613eef565b610bb0565b610312610bcf565b610488610bdf565b6040516102b69796959493929190613f0a565b61012d546001600160a01b03166102e7565b6103186104bb366004613e54565b610ca3565b6104c8610d3c565b60405165ffffffffffff90911681526020016102b6565b6102c7610d47565b6103186104f5366004613eef565b610d56565b610312610508366004613fbc565b610d78565b6102aa61051b366004613e54565b610dc0565b61031261052e3660046140bb565b610e1a565b610312610541366004614137565b610e6a565b610312610554366004613eef565b610fa0565b6102c7610567366004613e54565b611168565b61031261057a366004614197565b611173565b6102aa61058d3660046141f9565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6103126105c9366004613eef565b6111b6565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb45a3c0e000000000000000000000000000000000000000000000000000000001480610624575061062482611243565b92915050565b6060606580546106399061422c565b80601f01602080910402602001604051908101604052809291908181526020018280546106659061422c565b80156106b25780601f10610687576101008083540402835291602001916106b2565b820191906000526020600020905b81548152906001019060200180831161069557829003601f168201915b5050505050905090565b60006106c782611299565b506000908152606960205260409020546001600160a01b031690565b6101f85460ff1615610721576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072b82826112fd565b5050565b6101f85460ff161561076d576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610778838383611429565b505050565b600061078883610b04565b82106108015760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b60006108346114b0565b905090565b6000610843610d3c565b65ffffffffffff1682106108995760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b757000000000000000000000000060448201526064016107f8565b6108c46108a5836114ba565b6001600160a01b0385166000908152610194602052604090209061153a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b6108f1611604565b6108f961165f565b565b6101f85460ff1615610939576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107788383836116b1565b61094c611604565b610955816116cc565b50565b606043610963610d3c565b65ffffffffffff16146109b85760405162461bcd60e51b815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f6465000000000000000060448201526064016107f8565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b60006109fb60995490565b8210610a6f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016107f8565b60998281548110610a8257610a82614279565b90600052602060002001549050919050565b3361072b81836116d5565b6000818152606760205260408120546001600160a01b0316806106245760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f8565b60006001600160a01b038216610b825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016107f8565b506001600160a01b031660009081526068602052604090205490565b610ba6611604565b6108f96000611760565b6001600160a01b03811660009081526101966020526040812054610624565b610bd7611604565b6108f96117cb565b60006060806000806000606061015f546000801b148015610c01575061016054155b610c4d5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064016107f8565b610c55611808565b610c5d611818565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610cad610d3c565b65ffffffffffff168210610d035760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b757000000000000000000000000060448201526064016107f8565b610d18610d0f836114ba565b6101959061153a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b600061083443611828565b6060606680546106399061422c565b6001600160a01b038116600090815261019460205260408120610d18906118a6565b6101f85460ff1615610db6576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072b82826118f6565b6000818152606760205260408120546001600160a01b0316610e0e576040517fae9a63f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50506101f85460ff1690565b6101f85460ff1615610e58576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e6484848484611901565b50505050565b83421115610eba5760405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e61747572652065787069726564000000000000000060448201526064016107f8565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610f3490610f2c9060a00160405160208183030381529060405280519060200120611989565b8585856119d1565b9050610f3f816119fb565b8614610f8d5760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e636500000000000000000000000060448201526064016107f8565b610f9781886116d5565b50505050505050565b600054610100900460ff1615808015610fc05750600054600160ff909116105b80610fda5750303b158015610fda575060005460ff166001145b61104c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107f8565b6000805460ff19166001179055801561108c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6111016040518060400160405280601481526020017f4b726f6d615365637572697479436f756e63696c0000000000000000000000008152506040518060400160405280600381526020017f4b5343000000000000000000000000000000000000000000000000000000000081525084611a24565b801561072b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b606061062482611b1d565b61117b611604565b60006111876101f75490565b90506111986101f780546001019055565b6111a28382611c4a565b6111ac8183611c64565b61077883846116d5565b6111be611604565b6001600160a01b03811661123a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107f8565b61095581611760565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f49064906000000000000000000000000000000000000000000000000000000001480610624575061062482611d37565b6000818152606760205260409020546001600160a01b03166109555760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f8565b600061130882610a9f565b9050806001600160a01b0316836001600160a01b0316036113915760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b336001600160a01b03821614806113ad57506113ad813361058d565b61141f5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016107f8565b6107788383611d8d565b6114333382611e13565b6114a55760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107f8565b610778838383611e91565b6000610834612105565b600063ffffffff8211156115365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f322062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b5090565b81546000908181600581111561159757600061155584612179565b61155f90856142d7565b60008881526020902090915081015463ffffffff908116908716101561158757809150611595565b6115928160016142ee565b92505b505b60006115a587878585612261565b905080156115f6576115ca876115bc6001846142d7565b600091825260209091200190565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166115f9565b60005b979650505050505050565b61012d546001600160a01b031633146108f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f8565b6116676122bf565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61077883838360405180602001604052806000815250610e1a565b61095581612311565b6001600160a01b038281166000818152610193602052604080822080548686167fffffffffffffffffffffffff0000000000000000000000000000000000000000821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610778818361175b86612351565b61235c565b61012d80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6117d361251e565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116943390565b606061016180546106399061422c565b606061016280546106399061422c565b600065ffffffffffff8211156115365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f382062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b805460009080156118ec576118c0836115bc6001846142d7565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166118ef565b60005b9392505050565b61072b338383612571565b61190b3383611e13565b61197d5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107f8565b610e648484848461263f565b60006106246119966114b0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006119e2878787876126c8565b915091506119ef816127aa565b5090505b949350505050565b6001600160a01b0381166000908152610196602052604090208054600181018255905b50919050565b600054610100900460ff16611aa15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b611aab600161290f565b611ab583836129a0565b611abd612a27565b611ac5612a27565b611acd612aa4565b611b0c836040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612b29565b611b14612a27565b61077881611760565b6060611b2882611299565b600082815260c9602052604081208054611b419061422c565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6d9061422c565b8015611bba5780601f10611b8f57610100808354040283529160200191611bba565b820191906000526020600020905b815481529060010190602001808311611b9d57829003601f168201915b505050505090506000611bfd60408051808201909152601d81527f68747470733a2f2f6e66742e6b726f6d612e6e6574776f726b2f73632f000000602082015290565b90508051600003611c0f575092915050565b815115611c41578082604051602001611c29929190614306565b60405160208183030381529060405292505050919050565b6119f384612bb0565b61072b828260405180602001604052806000815250612c48565b6000828152606760205260409020546001600160a01b0316611cee5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e00000000000000000000000000000000000060648201526084016107f8565b600082815260c960205260409020611d068282614383565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200161115c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610624575061062482612cd1565b600081815260696020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190611dda82610a9f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611e1f83610a9f565b9050806001600160a01b0316846001600160a01b03161480611e6657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806119f35750836001600160a01b0316611e7f846106bc565b6001600160a01b031614949350505050565b826001600160a01b0316611ea482610a9f565b6001600160a01b031614611f205760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038216611f9b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f8565b611fa88383836001612db4565b826001600160a01b0316611fbb82610a9f565b6001600160a01b0316146120375760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107f8565b600081815260696020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b038781168086526068855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a46107788383836001612dc8565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612130612dd4565b612138612e2e565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008160000361218b57506000919050565b6000600161219884612e60565b901c6001901b905060018184816121b1576121b161449d565b048201901c905060018184816121c9576121c961449d565b048201901c905060018184816121e1576121e161449d565b048201901c905060018184816121f9576121f961449d565b048201901c905060018184816122115761221161449d565b048201901c905060018184816122295761222961449d565b048201901c905060018184816122415761224161449d565b048201901c90506118ef8182858161225b5761225b61449d565b04612ef4565b60005b818310156122b75760006122788484612f0a565b60008781526020902090915063ffffffff86169082015463ffffffff1611156122a3578092506122b1565b6122ae8160016142ee565b93505b50612264565b509392505050565b60fb5460ff166108f95760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107f8565b61231a81612f25565b600081815260c96020526040902080546123339061422c565b15905061095557600081815260c96020526040812061095591613d36565b600061062482610b04565b816001600160a01b0316836001600160a01b03161415801561237e5750600081115b15610778576001600160a01b03831615612451576001600160a01b03831660009081526101946020526040812081906123c2906130086123bd86613014565b6130a8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612446929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610778576001600160a01b038216600090815261019460205260408120819061248b906130f16123bd86613014565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161250f929190918252602082015260400190565b60405180910390a25050505050565b60fb5460ff16156108f95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016107f8565b816001600160a01b0316836001600160a01b0316036125d25760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107f8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61264a848484611e91565b612656848484846130fd565b610e645760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126ff57506000905060036127a1565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612753573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b03811661279a576000600192509250506127a1565b9150600090505b94509492505050565b60008160048111156127be576127be6144cc565b036127c65750565b60018160048111156127da576127da6144cc565b036128275760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107f8565b600281600481111561283b5761283b6144cc565b036128885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107f8565b600381600481111561289c5761289c6144cc565b036109555760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b600054610100900460ff1661298c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6101f8805460ff1916911515919091179055565b600054610100900460ff16612a1d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b61072b82826132b9565b600054610100900460ff166108f95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b600054610100900460ff16612b215760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6108f961334f565b600054610100900460ff16612ba65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b61072b82826133d8565b6060612bbb82611299565b6000612bf760408051808201909152601d81527f68747470733a2f2f6e66742e6b726f6d612e6e6574776f726b2f73632f000000602082015290565b90506000815111612c1757604051806020016040528060008152506118ef565b80612c2184613481565b604051602001612c32929190614306565b6040516020818303038152906040529392505050565b612c52838361353f565b612c5f60008484846130fd565b6107785760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480612d6457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061062457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610624565b612dbc61251e565b610e64848484846136fa565b610e6484848484613836565b600080612ddf611808565b805190915015612df6578051602090910120919050565b61015f548015612e065792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080612e39611818565b805190915015612e50578051602090910120919050565b610160548015612e065792915050565b600080608083901c15612e7557608092831c92015b604083901c15612e8757604092831c92015b602083901c15612e9957602092831c92015b601083901c15612eab57601092831c92015b600883901c15612ebd57600892831c92015b600483901c15612ecf57600492831c92015b600283901c15612ee157600292831c92015b600183901c156106245760010192915050565b6000818310612f0357816118ef565b5090919050565b6000612f1960028484186144fb565b6118ef908484166142ee565b6000612f3082610a9f565b9050612f40816000846001612db4565b612f4982610a9f565b600083815260696020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b0385168085526068845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461072b816000846001612dc8565b60006118ef8284614536565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156115365760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016107f8565b6000806130e46130c66130b9610d3c565b65ffffffffffff166114ba565b6130dc6130d2886118a6565b868863ffffffff16565b879190613846565b915091505b935093915050565b60006118ef8284614573565b60006001600160a01b0384163b156132b1576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a029061315a9033908990889088906004016145aa565b6020604051808303816000875af19250505080156131b3575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526131b0918101906145e6565b60015b613266573d8080156131e1576040519150601f19603f3d011682016040523d82523d6000602084013e6131e6565b606091505b50805160000361325e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506119f3565b5060016119f3565b600054610100900460ff166133365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b60656133428382614383565b5060666107788282614383565b600054610100900460ff166133cc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b60fb805460ff19169055565b600054610100900460ff166134555760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6101616134628382614383565b506101626134708282614383565b5050600061015f8190556101605550565b6060600061348e83613854565b600101905060008167ffffffffffffffff8111156134ae576134ae613ff8565b6040519080825280601f01601f1916602001820160405280156134d8576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846134e257509392505050565b6001600160a01b0382166135955760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f8565b6000818152606760205260409020546001600160a01b0316156135fa5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b613608600083836001612db4565b6000818152606760205260409020546001600160a01b03161561366d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461072b600083836001612dc8565b60018111156137715760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f72746564000000000000000000000060648201526084016107f8565b816001600160a01b0385166137cd576137c881609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6137f0565b836001600160a01b0316856001600160a01b0316146137f0576137f08582613936565b6001600160a01b03841661380c57613807816139d3565b61382f565b846001600160a01b0316846001600160a01b03161461382f5761382f8482613a82565b5050505050565b613841848483613ac6565b610e64565b6000806130e4858585613b3f565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061389d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106138c9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106138e757662386f26fc10000830492506010015b6305f5e10083106138ff576305f5e100830492506008015b612710831061391357612710830492506004015b60648310613925576064830492506002015b600a83106106245760010192915050565b6000600161394384610b04565b61394d91906142d7565b6000838152609860205260409020549091508082146139a0576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906139e5906001906142d7565b6000838152609a602052604081205460998054939450909284908110613a0d57613a0d614279565b906000526020600020015490508060998381548110613a2e57613a2e614279565b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480613a6657613a66614603565b6001900381819060005260206000200160009055905550505050565b6000613a8d83610b04565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6001600160a01b038316613ae957613ae66101956130f16123bd84613014565b50505b6001600160a01b038216613b0c57613b096101956130086123bd84613014565b50505b6001600160a01b03838116600090815261019360205260408082205485841683529120546107789291821691168361235c565b825460009081908015613cc7576000613b5d876115bc6001856142d7565b60408051808201909152905463ffffffff8082168084526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660208401529192509087161015613bf45760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016107f8565b805163ffffffff808816911603613c525784613c15886115bc6001866142d7565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff909216919091179055613cb7565b6040805180820190915263ffffffff80881682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b6020015192508391506130e99050565b50506040805180820190915263ffffffff80851682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a8152918220955192519093166401000000000291909316179201919091559050816130e9565b508054613d429061422c565b6000825580601f10613d52575050565b601f01602090049060005260206000209081019061095591905b808211156115365760008155600101613d6c565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461095557600080fd5b600060208284031215613dc057600080fd5b81356118ef81613d80565b60005b83811015613de6578181015183820152602001613dce565b83811115610e645750506000910152565b60008151808452613e0f816020860160208601613dcb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006118ef6020830184613df7565b600060208284031215613e6657600080fd5b5035919050565b80356001600160a01b0381168114613e8457600080fd5b919050565b60008060408385031215613e9c57600080fd5b613ea583613e6d565b946020939093013593505050565b600080600060608486031215613ec857600080fd5b613ed184613e6d565b9250613edf60208501613e6d565b9150604084013590509250925092565b600060208284031215613f0157600080fd5b6118ef82613e6d565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152613f4660e084018a613df7565b8381036040850152613f58818a613df7565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015613faa57835183529284019291840191600101613f8e565b50909c9b505050505050505050505050565b60008060408385031215613fcf57600080fd5b613fd883613e6d565b915060208301358015158114613fed57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff8084111561404257614042613ff8565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561408857614088613ff8565b816040528093508581528686860111156140a157600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156140d157600080fd5b6140da85613e6d565b93506140e860208601613e6d565b925060408501359150606085013567ffffffffffffffff81111561410b57600080fd5b8501601f8101871361411c57600080fd5b61412b87823560208401614027565b91505092959194509250565b60008060008060008060c0878903121561415057600080fd5b61415987613e6d565b95506020870135945060408701359350606087013560ff8116811461417d57600080fd5b9598949750929560808101359460a0909101359350915050565b600080604083850312156141aa57600080fd5b6141b383613e6d565b9150602083013567ffffffffffffffff8111156141cf57600080fd5b8301601f810185136141e057600080fd5b6141ef85823560208401614027565b9150509250929050565b6000806040838503121561420c57600080fd5b61421583613e6d565b915061422360208401613e6d565b90509250929050565b600181811c9082168061424057607f821691505b602082108103611a1e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156142e9576142e96142a8565b500390565b60008219821115614301576143016142a8565b500190565b60008351614318818460208801613dcb565b83519083019061432c818360208801613dcb565b01949350505050565b601f82111561077857600081815260208120601f850160051c8101602086101561435c5750805b601f850160051c820191505b8181101561437b57828155600101614368565b505050505050565b815167ffffffffffffffff81111561439d5761439d613ff8565b6143b1816143ab845461422c565b84614335565b602080601f83116001811461440457600084156143ce5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561437b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561445157888601518255948401946001909101908401614432565b508582101561448d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082614531577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381169083168181101561456b5761456b6142a8565b039392505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851680830382111561432c5761432c6142a8565b60006001600160a01b038087168352808616602084015250836040830152608060608301526145dc6080830184613df7565b9695505050505050565b6000602082840312156145f857600080fd5b81516118ef81613d80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01" + "0x0000000000000000000000000000000000000000000000000000000000000000": "ff" }, - "key": "0x783e0404bdc19206cfb81beed0844473471141076bd03986d5bc87bc38ba4739" + "key": "0xfd858ca644b6b6ca63a3805c54048664a7709eb9c19d160c682ef39439d89f4c" }, - "0x68b1d87f95878fe05b998f19b66f4baba5de1aed": { + "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f": { "balance": "0", "nonce": 1, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xee7ac418c26e0e9579ccddfe3991a3028745aa036b4c337329b708ea847e77c2", - "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806312e64a7214610046578063c423b1e81461006e578063dc8b50381461008f575b600080fd5b6100596100543660046117b2565b6100db565b60405190151581526020015b60405180910390f35b61008161007c366004611827565b6101a6565b6040516100659291906118f1565b6100b67f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610065565b6040517fc423b1e800000000000000000000000000000000000000000000000000000000815260009081908190309063c423b1e890610122908a908990899060040161190c565b600060405180830381865afa15801561013f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610185919081019061199c565b9150915081801561019b575061019b868261074b565b979650505050505050565b600060606002845110156102275760405162461bcd60e51b815260206004820152602960248201527f5a4b4d65726b6c65547269653a2070726f76696465642070726f6f662069732060448201527f746f6f2073686f7274000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61027e84600186516102399190611a5d565b8151811061024957610249611a74565b602002602001015180516020909101207f950654da67865a81bc70e45f3230f5179f08e29c66184bf746f71050f117b3b81490565b6102f05760405162461bcd60e51b815260206004820152602d60248201527f5a4b4d65726b6c65547269653a20746865206c617374206974656d206973206e60448201527f6f74206d61676963206861736800000000000000000000000000000000000000606482015260840161021e565b60006102fb86610767565b9050600061030886610846565b90506103526040805161010081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c0820181905260e09091015290565b60408051602081019091526000808252835190918291829190829061037990600290611a5d565b90505b86818151811061038e5761038e611a74565b6020026020010151602001519550600060038111156103af576103af611aa3565b865160038111156103c2576103c2611aa3565b036104a05760006103d38983610939565b90508015610433578660200151861461042e5760405162461bcd60e51b815260206004820152601b60248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b6579204c0000000000604482015260640161021e565b610486565b866040015186146104865760405162461bcd60e51b815260206004820152601b60248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b657920520000000000604482015260640161021e565b61049887602001518860400151610996565b9550506106b5565b6001865160038111156104b5576104b5611aa3565b0361061857831580156104c6575082155b6105385760405162461bcd60e51b815260206004820152602660248201527f5a4b4d65726b6c65547269653a206475706c696361746564207465726d696e6160448201527f6c206e6f64650000000000000000000000000000000000000000000000000000606482015260840161021e565b87866060015114935083156107385761056b600160001b87606001516105668960a001518a60800151610a63565b610bff565b6080870151805160208102825260e0890151929750909350839115610611578e8860e00151148061059f5750898860e00151145b6106115760405162461bcd60e51b815260206004820152602260248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b657920707265696d6160448201527f6765000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b50506106b5565b60028651600381111561062d5761062d611aa3565b036106b5578315801561063e575082155b6106b05760405162461bcd60e51b815260206004820152602660248201527f5a4b4d65726b6c65547269653a206475706c696361746564207465726d696e6160448201527f6c206e6f64650000000000000000000000000000000000000000000000000000606482015260840161021e565b600192505b80600003610711578a851461070c5760405162461bcd60e51b815260206004820152601960248201527f5a4b4d65726b65547269653a20696e76616c696420726f6f7400000000000000604482015260640161021e565b610738565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161037c565b50919b919a509098505050505050505050565b6000818051906020012083805190602001201490505b92915050565b600080600061077584610d77565b6040805180820182528381526020810183905290517f299e566000000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae169163299e5660916107fd91600401611ad2565b602060405180830381865afa15801561081a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083e9190611b03565b949350505050565b805160609060008167ffffffffffffffff811115610866576108666115f9565b60405190808252806020026020018201604052801561089f57816020015b61088c61159a565b8152602001906001900390816108845790505b50905060005b6108b0600184611a5d565b8110156109315760006108db8683815181106108ce576108ce611a74565b6020026020010151610d9f565b905060405180604001604052808784815181106108fa576108fa611a74565b602002602001015181526020018281525083838151811061091d5761091d611a74565b6020908102919091010152506001016108a5565b509392505050565b6000610100821061098c5760405162461bcd60e51b815260206004820152601c60248201527f5a4b4d65726b6c65547269653a20746f6f206c6f6e6720646570746800000000604482015260640161021e565b506001901b161590565b6040805180820182528381526020810183905290517f299e566000000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae169163299e566091610a1b91600401611ad2565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190611b03565b9392505050565b6000600182511015610add5760405162461bcd60e51b815260206004820152602b60248201527f5a4b547269654861736865723a20746f6f206665772076616c75657320666f7260448201527f205f76616c756548617368000000000000000000000000000000000000000000606482015260840161021e565b6000825167ffffffffffffffff811115610af957610af96115f9565b604051908082528060200260200182016040528015610b22578160200160208202803683370190505b50905060005b8351811015610bc8576001811b851663ffffffff1615610b8757610b64848281518110610b5757610b57611a74565b6020026020010151610767565b828281518110610b7657610b76611a74565b602002602001018181525050610bc0565b838181518110610b9957610b99611a74565b6020026020010151828281518110610bb357610bb3611a74565b6020026020010181815250505b600101610b28565b50600283511015610bf65780600081518110610be657610be6611a74565b6020026020010151915050610761565b61083e81611122565b6040805180820182528481526020810184905290517f299e56600000000000000000000000000000000000000000000000000000000081526000917f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae9173ffffffffffffffffffffffffffffffffffffffff83169163299e566091610c879190600401611ad2565b602060405180830381865afa158015610ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc89190611b03565b6040805180820182528281526020810186905290517f299e566000000000000000000000000000000000000000000000000000000000815291965073ffffffffffffffffffffffffffffffffffffffff83169163299e566091610d2d91600401611ad2565b602060405180830381865afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e9190611b03565b95945050505050565b60008082608081901b610d8a8260801c90565b610d948260801c90565b935093505050915091565b60408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e081019190915260408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e08101919091526000610e53846040805180820182526060815260006020918201528151808301909252828101825291519181019190915290565b90506000610e608261130c565b60ff16905080610e8b57610e7382611393565b6020840152610e8182611393565b60408401526110de565b6001810361101857610e9c82611393565b6060840152600080610ead84611431565b60ff16915091508163ffffffff166001148015610eca5750806001145b80610ee657508163ffffffff166004148015610ee65750806004145b610f585760405162461bcd60e51b815260206004820152602360248201527f4e6f64655265616465723a20696e76616c696420636f6d70726573736564466c60448201527f6167730000000000000000000000000000000000000000000000000000000000606482015260840161021e565b63ffffffff821660a08601528067ffffffffffffffff811115610f7d57610f7d6115f9565b604051908082528060200260200182016040528015610fa6578160200160208202803683370190505b50608086015260005b81811015610fe957610fc085611393565b86608001518281518110610fd657610fd6611a74565b6020908102919091010152600101610faf565b506000610ff58561130c565b60ff16905080156110105761100a85826114cb565b60e08701525b5050506110de565b600281146110de57600381036110965760405162461bcd60e51b815260206004820152602560248201527f4e6f64655265616465723a20756e657870656374656420726f6f74206e6f646560448201527f2074797065000000000000000000000000000000000000000000000000000000606482015260840161021e565b60405162461bcd60e51b815260206004820152601d60248201527f4e6f64655265616465723a20696e76616c6964206e6f64652074797065000000604482015260640161021e565b8060038111156110f0576110f0611aa3565b8390600381111561110357611103611aa3565b9081600381111561111657611116611aa3565b90525091949350505050565b600060048251101561119c5760405162461bcd60e51b815260206004820152602b60248201527f5a4b547269654861736865723a20746f6f206665772076616c75657320666f7260448201527f205f68617368456c656d73000000000000000000000000000000000000000000606482015260840161021e565b81517f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae9060009081906001906002905b808310156112e457600094505b808510156112d6578285019350808410156112cd578573ffffffffffffffffffffffffffffffffffffffff1663299e566060405180604001604052808b898151811061122757611227611a74565b602002602001015181526020018b888151811061124657611246611a74565b60200260200101518152506040518263ffffffff1660e01b815260040161126d9190611ad2565b602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190611b03565b8886815181106112c0576112c0611a74565b6020026020010181815250505b938101936111d9565b909150600182901b906111cc565b876000815181106112f7576112f7611a74565b60200260200101519650505050505050919050565b60006001826020015110156113635760405162461bcd60e51b815260206004820152601f60248201527f4e6f64655265616465723a20746f6f2073686f727420666f722075696e743800604482015260640161021e565b81518051600180830180865260208601805191949360f81c9291611388908390611a5d565b905250949350505050565b60006020826020015110156114105760405162461bcd60e51b815260206004820152602160248201527f4e6f64655265616465723a20746f6f2073686f727420666f722062797465733360448201527f3200000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b81518051602080830180865281860180519194939291611388908390611a5d565b6000806004836020015110156114895760405162461bcd60e51b815260206004820181905260248201527f4e6f64655265616465723a20746f6f2073686f727420666f722075696e743332604482015260640161021e565b8251805160048083018087526020870180519194939260f084901c9260f885901c92906114b7908390611a5d565b90525060ff90911697909650945050505050565b600081836020015110156115475760405162461bcd60e51b815260206004820152602160248201527f4e6f64655265616465723a20746f6f2073686f727420666f72206e206279746560448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b825160609060008061155a866008611b1c565b61156690610100611a5d565b8351848801808a5260208a01805191975091831c9450919250879161158c908390611a5d565b905250909695505050505050565b6040518060400160405280606081526020016115f46040805161010081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c0820181905260e09091015290565b905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561166f5761166f6115f9565b604052919050565b600067ffffffffffffffff821115611691576116916115f9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126116ce57600080fd5b81356116e16116dc82611677565b611628565b8181528460208386010111156116f657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261172457600080fd5b8135602067ffffffffffffffff80831115611741576117416115f9565b8260051b611750838201611628565b938452858101830193838101908886111561176a57600080fd5b84880192505b858310156117a6578235848111156117885760008081fd5b6117968a87838c01016116bd565b8352509184019190840190611770565b98975050505050505050565b600080600080608085870312156117c857600080fd5b84359350602085013567ffffffffffffffff808211156117e757600080fd5b6117f3888389016116bd565b9450604087013591508082111561180957600080fd5b5061181687828801611713565b949793965093946060013593505050565b60008060006060848603121561183c57600080fd5b83359250602084013567ffffffffffffffff81111561185a57600080fd5b61186686828701611713565b925050604084013590509250925092565b60005b8381101561189257818101518382015260200161187a565b838111156118a1576000848401525b50505050565b600081518084526118bf816020860160208601611877565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b821515815260406020820152600061083e60408301846118a7565b600060608201858352602060608185015281865180845260808601915060808160051b870101935082880160005b82811015611986577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808887030184526119748683516118a7565b9550928401929084019060010161193a565b5050505050604092909201929092529392505050565b600080604083850312156119af57600080fd5b825180151581146119bf57600080fd5b602084015190925067ffffffffffffffff8111156119dc57600080fd5b8301601f810185136119ed57600080fd5b80516119fb6116dc82611677565b818152866020838501011115611a1057600080fd5b611a21826020830160208601611877565b8093505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611a6f57611a6f611a2e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408101818360005b6002811015611afa578151835260209283019290910190600101611adb565b50505092915050565b600060208284031215611b1557600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611b5457611b54611a2e565b50029056fea164736f6c634300080f000a", - "key": "0x82bbeea1b838affd4d92ca0d2b311b02fb5ed4b7666c5e3b7f08aaa3053c9809" + "codeHash": "0xe7d30c7952210033e3cfd18ff7d7741d27b94e7cbaa9ddfcab4a59bbcb34746f", + "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80635269aa1b1461004657806354fd4d5014610083578063ee9a31a2146100cc575b600080fd5b61005961005436600461033a565b6100f3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100bf6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161007a9190610434565b6100597f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b600073ffffffffffffffffffffffffffffffffffffffff841661019c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4b726f6d614d696e7461626c654552433230466163746f72793a206d7573742060448201527f70726f766964652072656d6f746520746f6b656e206164647265737300000000606482015260840160405180910390fd5b60007f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f8585856040516101ce90610253565b6101db949392919061044e565b604051809103906000f0801580156101f7573d6000803e3d6000fd5b5060405133815290915073ffffffffffffffffffffffffffffffffffffffff80871691908316907f16f14001f89df9d8ecc68e7cbb61373ece9025038b9df30bea3635fc0e4701a99060200160405180910390a3949350505050565b611441806104a583390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126102a057600080fd5b813567ffffffffffffffff808211156102bb576102bb610260565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561030157610301610260565b8160405283815286602085880101111561031a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561034f57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461037357600080fd5b9250602084013567ffffffffffffffff8082111561039057600080fd5b61039c8783880161028f565b935060408601359150808211156103b257600080fd5b506103bf8682870161028f565b9150509250925092565b6000815180845260005b818110156103ef576020818501810151868301820152016103d3565b81811115610401576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061044760208301846103c9565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152506080604083015261048760808301856103c9565b828103606084015261049981856103c9565b97965050505050505056fe60c06040523480156200001157600080fd5b50604051620014413803806200144183398101604081905262000034916200015a565b8181600362000044838262000279565b50600462000053828262000279565b5050506001600160a01b0392831660805250501660a05262000345565b80516001600160a01b03811681146200008857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000b557600080fd5b81516001600160401b0380821115620000d257620000d26200008d565b604051601f8301601f19908116603f01168101908282118183101715620000fd57620000fd6200008d565b816040528381526020925086838588010111156200011a57600080fd5b600091505b838210156200013e57858201830151818301840152908201906200011f565b83821115620001505760008385830101525b9695505050505050565b600080600080608085870312156200017157600080fd5b6200017c8562000070565b93506200018c6020860162000070565b60408601519093506001600160401b0380821115620001aa57600080fd5b620001b888838901620000a3565b93506060870151915080821115620001cf57600080fd5b50620001de87828801620000a3565b91505092959194509250565b600181811c90821680620001ff57607f821691505b6020821081036200022057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027457600081815260208120601f850160051c810160208610156200024f5750805b601f850160051c820191505b8181101562000270578281556001016200025b565b5050505b505050565b81516001600160401b038111156200029557620002956200008d565b620002ad81620002a68454620001ea565b8462000226565b602080601f831160018114620002e55760008415620002cc5750858301515b600019600386901b1c1916600185901b17855562000270565b600085815260208120601f198616915b828110156200031657888601518255948401946001909101908401620002f5565b5085821015620003355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516110c862000379600039600081816103160152818161050a01526106270152600061014d01526110c86000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806340c10f19116100b25780639dc29fac11610081578063a9059cbb11610066578063a9059cbb146102b8578063dd62ed3e146102cb578063ee9a31a21461031157600080fd5b80639dc29fac14610292578063a457c2d7146102a557600080fd5b806340c10f191461020357806354fd4d501461021857806370a082311461025457806395d89b411461028a57600080fd5b806318160ddd116100ee57806318160ddd146101bc57806323b872dd146101ce578063313ce567146101e157806339509351146101f057600080fd5b806301ffc9a714610120578063033964be1461014857806306fdde0314610194578063095ea7b3146101a9575b600080fd5b61013361012e366004610e90565b610338565b60405190151581526020015b60405180910390f35b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b61019c6103d8565b60405161013f9190610ed9565b6101336101b7366004610f75565b61046a565b6002545b60405190815260200161013f565b6101336101dc366004610f9f565b610482565b6040516012815260200161013f565b6101336101fe366004610f75565b6104a6565b610216610211366004610f75565b6104f2565b005b61019c6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6101c0610262366004610fdb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61019c610600565b6102166102a0366004610f75565b61060f565b6101336102b3366004610f75565b61070c565b6101336102c6366004610f75565b6107c3565b6101c06102d9366004610ff6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f30a0c5a9000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000084168214806103d057507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b6060600380546103e790611029565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611029565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b6000336104788185856107d1565b5060019392505050565b600033610490858285610951565b61049b858585610a0e565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061047890829086906104ed90879061107c565b6107d1565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105a25760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e00000000000000000000000000000060648201526084015b60405180910390fd5b6105ac8282610c2f565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516105f491815260200190565b60405180910390a25050565b6060600480546103e790611029565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ba5760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e0000000000000000000000000000006064820152608401610599565b6106c48282610d08565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516105f491815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610599565b61049b82868684036107d1565b600033610478818585610a0e565b73ffffffffffffffffffffffffffffffffffffffff83166108595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff82166108e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a0857818110156109fb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610599565b610a0884848484036107d1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a975760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff8216610b205760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610bbc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a08565b73ffffffffffffffffffffffffffffffffffffffff8216610c925760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610599565b8060026000828254610ca4919061107c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610d915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610e2d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610944565b600060208284031215610ea257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ed257600080fd5b9392505050565b600060208083528351808285015260005b81811015610f0657858101830151858201604001528201610eea565b81811115610f18576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f7057600080fd5b919050565b60008060408385031215610f8857600080fd5b610f9183610f4c565b946020939093013593505050565b600080600060608486031215610fb457600080fd5b610fbd84610f4c565b9250610fcb60208501610f4c565b9150604084013590509250925092565b600060208284031215610fed57600080fd5b610ed282610f4c565b6000806040838503121561100957600080fd5b61101283610f4c565b915061102060208401610f4c565b90509250929050565b600181811c9082168061103d57607f821691505b602082108103611076577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082198211156110b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea164736f6c634300080f000aa164736f6c634300080f000a", + "key": "0xcb3987d4474164ab910fb5dff94430b3d4189fdec573b11daa18756dea0b81e9" }, - "0x7969c5ed335650692bc04293b07f5bf2e7a673c0": { + "0x7bc06c482dead17c0e297afbc32f6e63d3846650": { "balance": "0", "nonce": 1, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xa1b783ec19482c2c8360e736c90145b4bc0945bb0b0808e094d4cd4075f0221b", - "code": "0x608060405234801561001057600080fd5b50600436106102d25760003560e01c8063943e400511610186578063b91b2723116100e3578063cdff5e1911610097578063e0cc26a211610071578063e0cc26a21461080e578063e428c2f414610840578063e7816b7f1461085357600080fd5b8063cdff5e1914610799578063daec6770146107b6578063dff221b5146107dd57600080fd5b8063be119347116100c8578063be1193471461072e578063be995dc214610741578063c26148fe1461075457600080fd5b8063b91b272314610359578063bde022bb1461071b57600080fd5b8063a83871721161013a578063ac6c52511161011f578063ac6c52511461062f578063af6ca762146106a4578063b2653fe3146106f457600080fd5b8063a838717214610609578063ab04b8aa1461061c57600080fd5b80639e449b021161016b5780639e449b02146105bc5780639f8a13d7146105e3578063a3433d07146105f657600080fd5b8063943e400514610579578063970531c11461058157600080fd5b80633ee4d4a3116102345780635bab847f116101e85780637d2243b4116101cd5780637d2243b41461054b578063891aab74146105535780638c1516c71461056657600080fd5b80635bab847f146105115780636874e0421461052457600080fd5b80634cca5e6c116102195780634cca5e6c1461045457806354fd4d501461047b57806356b65e97146104c457600080fd5b80633ee4d4a31461040657806342223ae91461042d57600080fd5b806322009af61161028b57806330ccebb51161027057806330ccebb5146103b75780633a549046146103d75780633ca83045146103df57600080fd5b806322009af614610388578063263a3402146103af57600080fd5b80630763fa7e116102bc5780630763fa7e14610330578063110d6069146103595780631796e52e1461036157600080fd5b80621c2ff6146102d7578063065643ea1461031b575b600080fd5b6102fe7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b61032e61032936600461556f565b61087a565b005b610338602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610312565b610338606481565b6103387f000000000000000000000000000000000000000000000000000000000000003281565b6103387f000000000000000000000000000000000000000000000000000000000000001481565b61032e610b74565b6103ca6103c53660046155b8565b610bff565b6040516103129190615604565b6102fe610e5b565b6103387f000000000000000000000000000000000000000000000000000000000000007881565b6102fe7f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c881565b6103387f000000000000000000000000000000000000000000000000000000000000000281565b6103387f000000000000000000000000000000000000000000000000000000000000000481565b6104b76040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516103129190615645565b6105016104d23660046155b8565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610312565b61032e61051f3660046156c6565b610f89565b6102fe7f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701681565b61032e6110fe565b61032e6105613660046155b8565b611241565b61032e6105743660046155b8565b611354565b61032e6114b8565b61033861058f3660046155b8565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6103387f000000000000000000000000000000000000000000000000000000000000007881565b6105016105f13660046155b8565b6116c9565b61032e6106043660046156ff565b6116fc565b61032e6106173660046155b8565b6118c8565b61032e61062a36600461571a565b6119fb565b61068461063d3660046155b8565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610312565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16610684565b6103387f000000000000000000000000000000000000000000000000000000000000006481565b6103386107293660046155b8565b611dc5565b61032e61073c36600461573f565b611e29565b61032e61074f366004615758565b612008565b6107876107623660046155b8565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610312565b6107a16123db565b60405163ffffffff9091168152602001610312565b6103387f000000000000000000000000000000000000000000000000000000000000003c81565b6107876107eb3660046155b8565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b61078761081c3660046155b8565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b61032e61084e3660046155b8565b612400565b6103387f000000000000000000000000000000000000000000000000000000000000000a81565b333b1515806108895750333214155b156108c0576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108cb33610bff565b60058111156108dc576108dc6155d5565b14610913576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000326fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff161015610991576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff831611156109cf576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600081815260046020819052604091829020805460ff871662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0090911617600117815591517f19412a20000000000000000000000000000000000000000000000000000000008152908101929092526fffffffffffffffffffffffffffffffff851660248301526001600160a01b03838116604484015290917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016909116906319412a2090606401600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050506fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000064811690851610801590610b1557610b15336124c4565b60408051821515815260ff861660208201526fffffffffffffffffffffffffffffffff871681830152905133917f36f43e5c63d19ec0a34168ec0838b5bfae77656b9f5b94b896e9d2172a41f4fe919081900360600190a25050505050565b6003610b7f33610bff565b6005811115610b9057610b906155d5565b141580610bbd5750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610bf4576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bfd336124c4565b565b6001600160a01b03811660009081526004602052604081205460ff16610c2757506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000326fffffffffffffffffffffffffffffffff16917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970169091169063981cee5390602401602060405180830381865afa158015610cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d00919061577f565b6fffffffffffffffffffffffffffffffff161015610d2057506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f8abf0af0000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000646fffffffffffffffffffffffffffffffff16917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701690911690638abf0af090602401602060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e15919061577f565b6fffffffffffffffffffffffffffffffff161015610e445780610e3b5750600292915050565b50600492915050565b80610e525750600392915050565b50600592915050565b600080546001600160a01b031615610f645760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef1919061579c565b9050804210610f53576000610f0682426157e4565b90507f00000000000000000000000000000000000000000000000000000000000000046fffffffffffffffffffffffffffffffff16811115610f51576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c890565b6000610f9483610bff565b9050818015610fcf57506001816005811115610fb257610fb26155d5565b1480610fcf57506004816005811115610fcd57610fcd6155d5565b145b1561102d57610fdf6001846125bc565b1561102857826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d99614260405161101f91815260200190565b60405180910390a25b505050565b6004816005811115611041576110416155d5565b10611028576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526110f89185917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970161690638abf0af090602401602060405180830381865afa1580156110cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ef919061577f565b6001919061275e565b50505050565b336000908152600560205260409020546fffffffffffffffffffffffffffffffff16611156576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260056020526040902054426fffffffffffffffffffffffffffffffff90911611156111b3576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111bc33612a73565b3360008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a2600361122233610bff565b6005811115611233576112336155d5565b03610bfd57610bfd336124c4565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146112a3576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112ad610e5b565b90506001600160a01b03808216148015906112da5750806001600160a01b0316826001600160a01b031614155b15611311576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61131a826116c9565b611350576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d691906157fb565b6001600160a01b0316336001600160a01b031614611420576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970161690638c1516c7906024015b600060405180830381600087803b15801561149d57600080fd5b505af11580156114b1573d6000803e3d6000fd5b5050505050565b60026114c333610bff565b60058111156114d4576114d46155d5565b10806115005750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15611537576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061154233611dc5565b90507f00000000000000000000000000000000000000000000000000000000000000786fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16036115c1576040517fdf80df2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806fffffffffffffffffffffffffffffffff1642101561160d576040517f82225faf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000ffffff6301000000820460ff90811662010000818102939093167fffffffffffffffffffffffff000000000000000000000000000000000000ffff851617855586519290930416808252938101829052919492939092917fa40865ec905b139b9cdbd0566756b576b074c47d9dde9f62388b1d66d3e72a6491015b60405180910390a250505050565b600060056116d683610bff565b60058111156116e7576116e76155d5565b036116f457506001919050565b506000919050565b600261170733610bff565b6005811115611718576117186155d5565b10806117445750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b1561177b576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff821611156117b9576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600460205260409020805460ff620100009091048116908316819003611811576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81547fffffffffffffffffffffffff0000000000000000000000000000000000ffffff16630100000060ff8581169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178455604080519284168352602083019190915233917f9d9fe61047777339f4f4cb36a1f75ee90e3c6aa90c13abd3ffa07f6f86e0a307910160405180910390a2505050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a91906157fb565b6001600160a01b0316336001600160a01b031614611994576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa83871720000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016169063a838717290602401611483565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7d91906157fb565b6001600160a01b0316336001600160a01b031614611ac7576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f536afae40000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970169091169063536afae4906024016020604051808303816000875af1158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b71919061577f565b60008481526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000081166fffffffffffffffffffffffffffffffff918216869003821617909155915191831682529192506001600160a01b0384169185917fe2d313b9d9b90c2930241ea64ee5d6f4ff30dfd44a15cd3f1df2c6cb8021ec07910160405180910390a36001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff1615611028576001600160a01b038216600090815260056020526040812054611c8d907f0000000000000000000000000000000000000000000000000000000000000078906fffffffffffffffffffffffffffffffff16615818565b9050806fffffffffffffffffffffffffffffffff16421015611d37576001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff861690811790915591519182527f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a26110f8565b6001600160a01b03831660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a26003611da684610bff565b6005811115611db757611db76155d5565b036110f8576110f8836124c4565b6001600160a01b038116600090815260046020526040812054611e23907f00000000000000000000000000000000000000000000000000000000000000789064010000000090046fffffffffffffffffffffffffffffffff16615849565b92915050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614611e8b576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e93612ad8565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3991906157fb565b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192507f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701690911690638c1516c790602401600060405180830381600087803b158015611fba57600080fd5b505af1158015611fce573d6000803e3d6000fd5b50506000546001600160a01b03908116908416039150611ff8905057611ff381612a73565b612000565b61200061320e565b6113506132e5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a91906157fb565b6001600160a01b0316336001600160a01b0316146120d4576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5636aabd0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701690911690635636aabd906024016020604051808303816000875af115801561215a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217e919061577f565b6040516fffffffffffffffffffffffffffffffff821681529091506001600160a01b0383169085907f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e689060200160405180910390a36121de82600061357f565b837f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612261919061579c565b116122b957600084815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790556110f8565b6040517fc42996d60000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526fffffffffffffffffffffffffffffffff831660248301527f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016169063c42996d6906044016020604051808303816000875af1158015612352573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612376919061577f565b9050612383836000610f89565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0384169085907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a350505050565b6001546000906123fb9063ffffffff64010000000082048116911661587d565b905090565b336001600160a01b037f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970161614612462576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600361246d82610bff565b600581111561247e5761247e6155d5565b1480156124b357506001600160a01b0381166000908152600560205260409020546fffffffffffffffffffffffffffffffff16155b156124c1576124c1816124c4565b50565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301526125769183917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970161690638abf0af090602401602060405180830381865afa158015612549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256d919061577f565b600191906136ec565b806001600160a01b03167ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a426040516125b191815260200190565b60405180910390a250565b6001600160a01b038116600090815260028301602052604081205463ffffffff168082036125ee576000915050611e23565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff8216156127055763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612663565b61270f8684613dba565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff90921691909117855591505092915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff16808203612790576000915050612a6c565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156129405763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156129305763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff909116179055547401000000000000000000000000000000000000000090049091169061288f565b5061293b87846145df565b612a64565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff821615612a595763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906129b7565b50612a6487846147eb565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff16156124c1576001600160a01b0316600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b6000807f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5d919061579c565b905060007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be3919061579c565b90507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6791906157fb565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b8152600401612c9491815260200190565b602060405180830381865afa158015612cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd5919061589a565b612ce25760009250505090565b6000805b7f000000000000000000000000000000000000000000000000000000000000000a6fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16108015612d395750828411155b1561314d576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015612dbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de0919061589a565b1561314d576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8791906157fb565b90506000806000612e9784614c16565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970169091169063ad42945190608401600060405180830381600087803b158015612f4557600080fd5b505af1158015612f59573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693508a92507fd74a44a8cd6c73740a70271e07ee96d8a495ff30037ae6381cbcdb8fe7f2a1ea9181900360600190a36000878152600660205260409020546fffffffffffffffffffffffffffffffff16801561312d576040517fc42996d60000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff831660248301527f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016169063c42996d6906044016020604051808303816000875af115801561307e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a2919061577f565b60008981526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681529192506001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b613138856000610f89565b87600101975085600101955050505050612ce6565b6fffffffffffffffffffffffffffffffff821615613203576040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031690639902cdc090602401600060405180830381600087803b1580156131e057600080fd5b505af11580156131f4573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b031661322057565b600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000026fffffffffffffffffffffffffffffffff1661010090910460ff161061329157600054610bfd906001600160a01b0316600161357f565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff1660009081526002602052604081209091015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16905060007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b8919061579c565b90506000826effffffffffffffffffffffffffffff161180156133db5750600081115b156135535760006001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663a25ae55761341c6001856157e4565b6040518263ffffffff1660e01b815260040161343a91815260200190565b608060405180830381865afa158015613457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347b91906158b7565b9050600083826020015143414460014361349591906157e4565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6135069190615989565b9050613513600182614f47565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506113509050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000816135ac577f00000000000000000000000000000000000000000000000000000000000000786135ce565b7f000000000000000000000000000000000000000000000000000000000000003c5b6001600160a01b038416600090815260056020526040812054919250908290613609906fffffffffffffffffffffffffffffffff1642615116565b6136139190615849565b6001600160a01b03851660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a26136ac6001856125bc565b156110f857836001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d9961426040516116bb91815260200190565b6001600160a01b038216613787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f42616c616e636564576569676874547265653a207a65726f206164647265737360448201527f206e6f7420616c6c6f776564000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216600090815260028401602052604090205463ffffffff1615613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f42616c616e636564576569676874547265653a206e6f646520616c726561647960448201527f206578697374696e670000000000000000000000000000000000000000000000606482015260840161377e565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff16600003613b1057845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b909104169003613c4c5763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b909102178155613c4387846145df565b50505050505050565b8054600160e01b900463ffffffff16600003613d225763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b909102178155613c4387846145df565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff70010000000000000000000000000000000092839004811692909104161115613da2578054600160e01b900463ffffffff169150613db4565b8054600160c01b900463ffffffff1691505b50613b25565b63ffffffff81166000908152600183016020526040902080546001600160a01b0316613e68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f42616c616e636564576569676874547265653a206e6f6465206e6f742065786960448201527f7374730000000000000000000000000000000000000000000000000000000000606482015260840161377e565b8054600160c01b900463ffffffff16600003614136578054600160e01b900463ffffffff16600003613fe557805474010000000000000000000000000000000000000000900463ffffffff16600003613ee65782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff168355613fa1565b600181015460ff1615613f4e57805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff169055613fa1565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116906145d9565b8054600160e01b900463ffffffff1660000361429d57805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116906145d9565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff6101009283900481169290910416111561446b57805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116906145d9565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b50613dba565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff161580159061466d5750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b156110f857815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff19918216179091558754965490951683528083208054909516740100000000000000000000000000000000000000009687900489161790945594548490048616808252918701909452818420805493909304909416835290912061461a565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff610100918290048116919092049091161115614a3457600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff6101009283900481169290910416111561102857805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c16179055885486900487168086529282528385205490971684529590955290208054909516909217909355905404166147ec565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff6101009283900481169290910416111561102857805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c16179055885486900487168086529282528385205490971684529590955290208054909516909217909355905404166147ec565b60008060007f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970166001600160a01b031663360864176040518163ffffffff1660e01b8152600401602060405180830381865afa158015614c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c9d91906157fb565b6001600160a01b0316846001600160a01b031603614ce35750600091508190507f0000000000000000000000000000000000000000000000000000000000000014614f40565b6001600160a01b03841660009081526004602052604081205462010000900460ff1690614d0f86615150565b9050600080614d546fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000014850116856064615286565b9050614d976fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000001416606486810390615286565b9150614dba6fffffffffffffffffffffffffffffffff8416606486810390615286565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301529194506000917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016169063981cee5390602401602060405180830381865afa158015614e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e63919061577f565b6040517f6b9ffeac0000000000000000000000000000000000000000000000000000000081526001600160a01b038b811660048301529192506000917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970161690636b9ffeac90602401602060405180830381865afa158015614ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f0c919061577f565b90506000614f2f6fffffffffffffffffffffffffffffffff861684808501615286565b948590039950949750505001925050505b9193909250565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff808516700100000000000000000000000000000000909204161115614fe05763ffffffff9081166000908152600185016020526040902054600160c01b900416614f5f565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff908116909403938481166101009092041611156150795763ffffffff1660009081526001840160205260409020546001600160a01b03169050611e23565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff9081169094039384811670010000000000000000000000000000000090920416111561510c5763ffffffff9081166000908152600185016020526040902054600160e01b900416614f5f565b6000915050611e23565b6000816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16116151495781612a6c565b5090919050565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016169063913f1a9f90602401602060405180830381865afa1580156151d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151f8919061577f565b9050600061523b6fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000141660286064615286565b905061527e816fffffffffffffffffffffffffffffffff1665010000000000615277856fffffffffffffffffffffffffffffffff166064615335565b91906153fc565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff84161161530a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f7700000000604482015260640161377e565b826fffffffffffffffffffffffffffffffff16818161532b5761532b61595a565b0495945050505050565b600080838310801561534e576001811461536157615370565b6501000000000085028490049150615370565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c9490940191909101039190910303905081831115611e23576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036154545783828161544a5761544a61595a565b0492505050612a6c565b8084116154bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f770000000000000000000000604482015260640161377e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6fffffffffffffffffffffffffffffffff811681146124c157600080fd5b803560ff8116811461555557600080fd5b919050565b6001600160a01b03811681146124c157600080fd5b60008060006060848603121561558457600080fd5b833561558f81615526565b925061559d60208501615544565b915060408401356155ad8161555a565b809150509250925092565b6000602082840312156155ca57600080fd5b8135612a6c8161555a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061563f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b8181101561567257858101830151858201604001528201615656565b81811115615684576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b80151581146124c157600080fd5b600080604083850312156156d957600080fd5b82356156e48161555a565b915060208301356156f4816156b8565b809150509250929050565b60006020828403121561571157600080fd5b612a6c82615544565b6000806040838503121561572d57600080fd5b8235915060208301356156f48161555a565b60006020828403121561575157600080fd5b5035919050565b60008060006060848603121561576d57600080fd5b83359250602084013561559d8161555a565b60006020828403121561579157600080fd5b8151612a6c81615526565b6000602082840312156157ae57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156157f6576157f66157b5565b500390565b60006020828403121561580d57600080fd5b8151612a6c8161555a565b60006fffffffffffffffffffffffffffffffff83811690831681811015615841576158416157b5565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115615874576158746157b5565b01949350505050565b600063ffffffff83811690831681811015615841576158416157b5565b6000602082840312156158ac57600080fd5b8151612a6c816156b8565b6000608082840312156158c957600080fd5b6040516080810181811067ffffffffffffffff82111715615913577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516159218161555a565b815260208381015190820152604083015161593b81615526565b6040820152606083015161594e81615526565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff808416806159d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b9216919091069291505056fea164736f6c634300080f000a", - "key": "0x60229d8572100b3ab5a8141d15bf4603349edc37075f6b048fb50d7c27fcb6a1" + "codeHash": "0x615caf3c0d0c27450cff86889902584780075e3c90c3d4f3e76d38673b50f34e", + "code": "0x608060405234801561001057600080fd5b50600436106102d25760003560e01c8063943e400511610186578063b91b2723116100e3578063cdff5e1911610097578063e0cc26a211610071578063e0cc26a21461080e578063e428c2f414610840578063e7816b7f1461085357600080fd5b8063cdff5e1914610799578063daec6770146107b6578063dff221b5146107dd57600080fd5b8063be119347116100c8578063be1193471461072e578063be995dc214610741578063c26148fe1461075457600080fd5b8063b91b272314610359578063bde022bb1461071b57600080fd5b8063a83871721161013a578063ac6c52511161011f578063ac6c52511461062f578063af6ca762146106a4578063b2653fe3146106f457600080fd5b8063a838717214610609578063ab04b8aa1461061c57600080fd5b80639e449b021161016b5780639e449b02146105bc5780639f8a13d7146105e3578063a3433d07146105f657600080fd5b8063943e400514610579578063970531c11461058157600080fd5b80633ee4d4a3116102345780635bab847f116101e85780637d2243b4116101cd5780637d2243b41461054b578063891aab74146105535780638c1516c71461056657600080fd5b80635bab847f146105115780636874e0421461052457600080fd5b80634cca5e6c116102195780634cca5e6c1461045457806354fd4d501461047b57806356b65e97146104c457600080fd5b80633ee4d4a31461040657806342223ae91461042d57600080fd5b806322009af61161028b57806330ccebb51161027057806330ccebb5146103b75780633a549046146103d75780633ca83045146103df57600080fd5b806322009af614610388578063263a3402146103af57600080fd5b80630763fa7e116102bc5780630763fa7e14610330578063110d6069146103595780631796e52e1461036157600080fd5b80621c2ff6146102d7578063065643ea1461031b575b600080fd5b6102fe7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b61032e61032936600461556f565b61087a565b005b610338602881565b6040516fffffffffffffffffffffffffffffffff9091168152602001610312565b610338606481565b6103387f000000000000000000000000000000000000000000000000000000000000003281565b6103387f000000000000000000000000000000000000000000000000000000000000001481565b61032e610b74565b6103ca6103c53660046155b8565b610bff565b6040516103129190615604565b6102fe610e5b565b6103387f000000000000000000000000000000000000000000000000000000000000007881565b6102fe7f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c881565b6103387f000000000000000000000000000000000000000000000000000000000000000281565b6103387f000000000000000000000000000000000000000000000000000000000000000481565b6104b76040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516103129190615645565b6105016104d23660046155b8565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff16151590565b6040519015158152602001610312565b61032e61051f3660046156c6565b610f89565b6102fe7f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b181565b61032e6110fe565b61032e6105613660046155b8565b611241565b61032e6105743660046155b8565b611354565b61032e6114b8565b61033861058f3660046155b8565b6001600160a01b03166000908152600560205260409020546fffffffffffffffffffffffffffffffff1690565b6103387f000000000000000000000000000000000000000000000000000000000000007881565b6105016105f13660046155b8565b6116c9565b61032e6106043660046156ff565b6116fc565b61032e6106173660046155b8565b6118c8565b61032e61062a36600461571a565b6119fb565b61068461063d3660046155b8565b6001600160a01b031660009081526003602090815260408083205463ffffffff168352600290915290206001015461010090046effffffffffffffffffffffffffffff1690565b6040516effffffffffffffffffffffffffffff9091168152602001610312565b6001805468010000000000000000900463ffffffff166000908152600260205260409020015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16610684565b6103387f000000000000000000000000000000000000000000000000000000000000006481565b6103386107293660046155b8565b611dc5565b61032e61073c36600461573f565b611e29565b61032e61074f366004615758565b612008565b6107876107623660046155b8565b6001600160a01b03166000908152600460205260409020546301000000900460ff1690565b60405160ff9091168152602001610312565b6107a16123db565b60405163ffffffff9091168152602001610312565b6103387f000000000000000000000000000000000000000000000000000000000000003c81565b6107876107eb3660046155b8565b6001600160a01b0316600090815260046020526040902054610100900460ff1690565b61078761081c3660046155b8565b6001600160a01b031660009081526004602052604090205462010000900460ff1690565b61032e61084e3660046155b8565b612400565b6103387f000000000000000000000000000000000000000000000000000000000000000a81565b333b1515806108895750333214155b156108c0576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108cb33610bff565b60058111156108dc576108dc6155d5565b14610913576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000326fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff161015610991576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff831611156109cf576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600081815260046020819052604091829020805460ff871662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0090911617600117815591517f19412a20000000000000000000000000000000000000000000000000000000008152908101929092526fffffffffffffffffffffffffffffffff851660248301526001600160a01b03838116604484015290917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1909116906319412a2090606401600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050506fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000064811690851610801590610b1557610b15336124c4565b60408051821515815260ff861660208201526fffffffffffffffffffffffffffffffff871681830152905133917f36f43e5c63d19ec0a34168ec0838b5bfae77656b9f5b94b896e9d2172a41f4fe919081900360600190a25050505050565b6003610b7f33610bff565b6005811115610b9057610b906155d5565b141580610bbd5750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15610bf4576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bfd336124c4565b565b6001600160a01b03811660009081526004602052604081205460ff16610c2757506000919050565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000326fffffffffffffffffffffffffffffffff16917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b19091169063981cee5390602401602060405180830381865afa158015610cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d00919061577f565b6fffffffffffffffffffffffffffffffff161015610d2057506001919050565b6001600160a01b03828116600081815260036020526040908190205490517f8abf0af0000000000000000000000000000000000000000000000000000000008152600481019290925263ffffffff161515917f00000000000000000000000000000000000000000000000000000000000000646fffffffffffffffffffffffffffffffff16917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b190911690638abf0af090602401602060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e15919061577f565b6fffffffffffffffffffffffffffffffff161015610e445780610e3b5750600292915050565b50600492915050565b80610e525750600392915050565b50600592915050565b600080546001600160a01b031615610f645760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef1919061579c565b9050804210610f53576000610f0682426157e4565b90507f00000000000000000000000000000000000000000000000000000000000000046fffffffffffffffffffffffffffffffff16811115610f51576001600160a01b039250505090565b505b50506000546001600160a01b031690565b507f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c890565b6000610f9483610bff565b9050818015610fcf57506001816005811115610fb257610fb26155d5565b1480610fcf57506004816005811115610fcd57610fcd6155d5565b145b1561102d57610fdf6001846125bc565b1561102857826001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d99614260405161101f91815260200190565b60405180910390a25b505050565b6004816005811115611041576110416155d5565b10611028576040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526110f89185917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11690638abf0af090602401602060405180830381865afa1580156110cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ef919061577f565b6001919061275e565b50505050565b336000908152600560205260409020546fffffffffffffffffffffffffffffffff16611156576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260056020526040902054426fffffffffffffffffffffffffffffffff90911611156111b3576040517f1dfc20f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111bc33612a73565b3360008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a2600361122233610bff565b6005811115611233576112336155d5565b03610bfd57610bfd336124c4565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146112a3576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112ad610e5b565b90506001600160a01b03808216148015906112da5750806001600160a01b0316826001600160a01b031614155b15611311576040517fc625317600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61131a826116c9565b611350576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d691906157fb565b6001600160a01b0316336001600160a01b031614611420576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11690638c1516c7906024015b600060405180830381600087803b15801561149d57600080fd5b505af11580156114b1573d6000803e3d6000fd5b5050505050565b60026114c333610bff565b60058111156114d4576114d46155d5565b10806115005750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b15611537576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061154233611dc5565b90507f00000000000000000000000000000000000000000000000000000000000000786fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16036115c1576040517fdf80df2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806fffffffffffffffffffffffffffffffff1642101561160d576040517f82225faf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526004602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000ffffff6301000000820460ff90811662010000818102939093167fffffffffffffffffffffffff000000000000000000000000000000000000ffff851617855586519290930416808252938101829052919492939092917fa40865ec905b139b9cdbd0566756b576b074c47d9dde9f62388b1d66d3e72a6491015b60405180910390a250505050565b600060056116d683610bff565b60058111156116e7576116e76155d5565b036116f457506001919050565b506000919050565b600261170733610bff565b6005811115611718576117186155d5565b10806117445750336000908152600560205260409020546fffffffffffffffffffffffffffffffff1615155b1561177b576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606460ff821611156117b9576040517f406b265300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600460205260409020805460ff620100009091048116908316819003611811576040517f150393f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81547fffffffffffffffffffffffff0000000000000000000000000000000000ffffff16630100000060ff8581169182027fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1692909217640100000000426fffffffffffffffffffffffffffffffff1602178455604080519284168352602083019190915233917f9d9fe61047777339f4f4cb36a1f75ee90e3c6aa90c13abd3ffa07f6f86e0a307910160405180910390a2505050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a91906157fb565b6001600160a01b0316336001600160a01b031614611994576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa83871720000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1169063a838717290602401611483565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7d91906157fb565b6001600160a01b0316336001600160a01b031614611ac7576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f536afae40000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b19091169063536afae4906024016020604051808303816000875af1158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b71919061577f565b60008481526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000081166fffffffffffffffffffffffffffffffff918216869003821617909155915191831682529192506001600160a01b0384169185917fe2d313b9d9b90c2930241ea64ee5d6f4ff30dfd44a15cd3f1df2c6cb8021ec07910160405180910390a36001600160a01b0382166000908152600560205260409020546fffffffffffffffffffffffffffffffff1615611028576001600160a01b038216600090815260056020526040812054611c8d907f0000000000000000000000000000000000000000000000000000000000000078906fffffffffffffffffffffffffffffffff16615818565b9050806fffffffffffffffffffffffffffffffff16421015611d37576001600160a01b03831660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff861690811790915591519182527f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a26110f8565b6001600160a01b03831660008181526005602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055517f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f199190a26003611da684610bff565b6005811115611db757611db76155d5565b036110f8576110f8836124c4565b6001600160a01b038116600090815260046020526040812054611e23907f00000000000000000000000000000000000000000000000000000000000000789064010000000090046fffffffffffffffffffffffffffffffff16615849565b92915050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614611e8b576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e93612ad8565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3991906157fb565b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192507f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b190911690638c1516c790602401600060405180830381600087803b158015611fba57600080fd5b505af1158015611fce573d6000803e3d6000fd5b50506000546001600160a01b03908116908416039150611ff8905057611ff381612a73565b612000565b61200061320e565b6113506132e5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a91906157fb565b6001600160a01b0316336001600160a01b0316146120d4576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5636aabd0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b190911690635636aabd906024016020604051808303816000875af115801561215a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217e919061577f565b6040516fffffffffffffffffffffffffffffffff821681529091506001600160a01b0383169085907f1237821480ce4d75f917bc39d1641eb17a5e09a2d5bf982cdd8cb2561aa28e689060200160405180910390a36121de82600061357f565b837f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612261919061579c565b116122b957600084815260066020526040902080546fffffffffffffffffffffffffffffffff8082168401167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790556110f8565b6040517fc42996d60000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526fffffffffffffffffffffffffffffffff831660248301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1169063c42996d6906044016020604051808303816000875af1158015612352573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612376919061577f565b9050612383836000610f89565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b0384169085907fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa149060200160405180910390a350505050565b6001546000906123fb9063ffffffff64010000000082048116911661587d565b905090565b336001600160a01b037f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11614612462576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600361246d82610bff565b600581111561247e5761247e6155d5565b1480156124b357506001600160a01b0381166000908152600560205260409020546fffffffffffffffffffffffffffffffff16155b156124c1576124c1816124c4565b50565b6040517f8abf0af00000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301526125769183917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11690638abf0af090602401602060405180830381865afa158015612549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256d919061577f565b600191906136ec565b806001600160a01b03167ff33a24861b76047debce215c7ae4915a9befc5d870e97efbd4152df23c72112a426040516125b191815260200190565b60405180910390a250565b6001600160a01b038116600090815260028301602052604081205463ffffffff168082036125ee576000915050611e23565b6001600160a01b03831660009081526002850160209081526040808320805463ffffffff1916905563ffffffff8481168452600180890190935292208054910154740100000000000000000000000000000000000000009091049091169061010090046effffffffffffffffffffffffffffff165b63ffffffff8216156127055763ffffffff91821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790555474010000000000000000000000000000000000000000900490911690612663565b61270f8684613dba565b50508354600163ffffffff64010000000080840482168301909116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff90921691909117855591505092915050565b6001600160a01b038216600090815260028401602052604081205463ffffffff16808203612790576000915050612a6c565b63ffffffff80821660009081526001808801602052604090912090810180546effffffffffffffffffffffffffffff8781166101008181027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff85161790945593549290910416927401000000000000000000000000000000000000000090910416908210156129405763ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116848803700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff908116820116909202179091555b63ffffffff8216156129305763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168601909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff909116179055547401000000000000000000000000000000000000000090049091169061288f565b5061293b87846145df565b612a64565b63ffffffff83166000908152600188810160205260409091200180547fff000000000000000000000000000000ffffffffffffffffffffffffffffffff8116878503700100000000000000000000000000000000928390046effffffffffffffffffffffffffffff90811682900316909202179091555b63ffffffff821615612a595763ffffffff91821660009081526001808a01602052604090912090810180546effffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216869003909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905554740100000000000000000000000000000000000000009004909116906129b7565b50612a6487846147eb565b600193505050505b9392505050565b6001600160a01b038116600090815260046020526040902054610100900460ff16156124c1576001600160a01b0316600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b6000807f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5d919061579c565b905060007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be3919061579c565b90507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6791906157fb565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b8152600401612c9491815260200190565b602060405180830381865afa158015612cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd5919061589a565b612ce25760009250505090565b6000805b7f000000000000000000000000000000000000000000000000000000000000000a6fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16108015612d395750828411155b1561314d576040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015612dbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de0919061589a565b1561314d576040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa158015612e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8791906157fb565b90506000806000612e9784614c16565b6040517fad4294510000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526fffffffffffffffffffffffffffffffff858116602484015284811660448401528316606483015293965091945092507f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b19091169063ad42945190608401600060405180830381600087803b158015612f4557600080fd5b505af1158015612f59573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8581168252878116602083015286168183015290516001600160a01b03881693508a92507fd74a44a8cd6c73740a70271e07ee96d8a495ff30037ae6381cbcdb8fe7f2a1ea9181900360600190a36000878152600660205260409020546fffffffffffffffffffffffffffffffff16801561312d576040517fc42996d60000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526fffffffffffffffffffffffffffffffff831660248301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1169063c42996d6906044016020604051808303816000875af115801561307e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a2919061577f565b60008981526006602090815260409182902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905590516fffffffffffffffffffffffffffffffff831681529192506001600160a01b038716918a917fd537f9e63e8da05cdb52f795e1c79d7b163e2517d5229375474dbe60b48cfa14910160405180910390a35b613138856000610f89565b87600101975085600101955050505050612ce6565b6fffffffffffffffffffffffffffffffff821615613203576040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031690639902cdc090602401600060405180830381600087803b1580156131e057600080fd5b505af11580156131f4573d6000803e3d6000fd5b50505050600194505050505090565b600094505050505090565b6000546001600160a01b031661322057565b600080546001600160a01b03168152600460205260409020547f00000000000000000000000000000000000000000000000000000000000000026fffffffffffffffffffffffffffffffff1661010090910460ff161061329157600054610bfd906001600160a01b0316600161357f565b600080546001600160a01b03168152600460205260409020805460ff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055565b6001805468010000000000000000900463ffffffff1660009081526002602052604081209091015470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16905060007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663f403838d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b8919061579c565b90506000826effffffffffffffffffffffffffffff161180156133db5750600081115b156135535760006001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663a25ae55761341c6001856157e4565b6040518263ffffffff1660e01b815260040161343a91815260200190565b608060405180830381865afa158015613457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347b91906158b7565b9050600083826020015143414460014361349591906157e4565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6135069190615989565b9050613513600182614f47565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055506113509050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000816135ac577f00000000000000000000000000000000000000000000000000000000000000786135ce565b7f000000000000000000000000000000000000000000000000000000000000003c5b6001600160a01b038416600090815260056020526040812054919250908290613609906fffffffffffffffffffffffffffffffff1642615116565b6136139190615849565b6001600160a01b03851660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8616908117909155915191825292935090917f95a398f2b6b2ad94f281708c97fe502386fc16adca43daed577a1e992a4cc814910160405180910390a26136ac6001856125bc565b156110f857836001600160a01b03167fdee7e7274fb1911def379ceda542a2723358c99d6d1f89fcbdbe9e9d638d9961426040516116bb91815260200190565b6001600160a01b038216613787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f42616c616e636564576569676874547265653a207a65726f206164647265737360448201527f206e6f7420616c6c6f776564000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216600090815260028401602052604090205463ffffffff1615613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f42616c616e636564576569676874547265653a206e6f646520616c726561647960448201527f206578697374696e670000000000000000000000000000000000000000000000606482015260840161377e565b60006040518060e00160405280846001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600115158152602001836effffffffffffffffffffffffffffff168152602001836effffffffffffffffffffffffffffff16815250905083600001600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff1602179055505060008460000160009054906101000a900463ffffffff169050818560010160008363ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548160ff02191690831515021790555060a08201518160010160016101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555060c08201518160010160106101000a8154816effffffffffffffffffffffffffffff02191690836effffffffffffffffffffffffffffff16021790555090505080856002016000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055508460000160089054906101000a900463ffffffff1663ffffffff16600003613b1057845463ffffffff90911668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff90911617909355505050565b845468010000000000000000900463ffffffff165b63ffffffff808216600090815260018089016020526040822090810180546effffffffffffffffffffffffffffff70010000000000000000000000000000000080830482168b01909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff90911617905580549092600160c01b909104169003613c4c5763ffffffff838116600081815260018a016020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000938616939093029290921790915581547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b909102178155613c4387846145df565b50505050505050565b8054600160e01b900463ffffffff16600003613d225763ffffffff838116600081815260018a8101602052604090912080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000948716949094029390931783559190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b909102178155613c4387846145df565b805463ffffffff600160e01b8204811660009081526001808b016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff70010000000000000000000000000000000092839004811692909104161115613da2578054600160e01b900463ffffffff169150613db4565b8054600160c01b900463ffffffff1691505b50613b25565b63ffffffff81166000908152600183016020526040902080546001600160a01b0316613e68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f42616c616e636564576569676874547265653a206e6f6465206e6f742065786960448201527f7374730000000000000000000000000000000000000000000000000000000000606482015260840161377e565b8054600160c01b900463ffffffff16600003614136578054600160e01b900463ffffffff16600003613fe557805474010000000000000000000000000000000000000000900463ffffffff16600003613ee65782547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff168355613fa1565b600181015460ff1615613f4e57805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff169055613fa1565b805474010000000000000000000000000000000000000000900463ffffffff166000908152600184016020526040902080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555b5063ffffffff1660009081526001918201602052604081209081550180547fff00000000000000000000000000000000000000000000000000000000000000169055565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116906145d9565b8054600160e01b900463ffffffff1660000361429d57805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b0397881617808955859004861684528084208084018054948a0180546effffffffffffffffffffffffffffff6101009788900481169097027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559254700100000000000000000000000000000000908190049097169096027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9092167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951717909355915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116906145d9565b805463ffffffff600160e01b82048116600090815260018087016020526040808320820154600160c01b909504909316825291902001546effffffffffffffffffffffffffffff6101009283900481169290910416111561446b57805463ffffffff600160c01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff821681178355600160e01b9096048c168a52868a20909801549254700100000000000000000000000000000000908190048316938190048316939093019091169091027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093167fff000000000000000000000000000000000000000000000000000000000000ff9096169590951791909117909355915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116906145d9565b805463ffffffff600160e01b80830482166000908152600180880160209081526040808420547fffffffffffffffffffffffff00000000000000000000000000000000000000009097166001600160a01b03978816178089558581048716855281852080850180548b870180546effffffffffffffffffffffffffffff6101009384900481169093027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff8216811783559354600160c01b9096048c168a52868a2090980154700100000000000000000000000000000000908190048316958190048316959095019091169093027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091167fff000000000000000000000000000000000000000000000000000000000000ff90961695909517949094179055915490951682526002880190945292909220805494821663ffffffff1990951694909417909355815404909116905b50613dba565b63ffffffff80821660009081526001840160205260408082208054740100000000000000000000000000000000000000009004909316825290205b815474010000000000000000000000000000000000000000900463ffffffff161580159061466d5750600180820154908301546effffffffffffffffffffffffffffff6101009283900481169290910416115b156110f857815481547fffffffffffffffffffffffff00000000000000000000000000000000000000008083166001600160a01b03928316178555835416918116919091178255600180840180548483018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117875584549584900483169384029516949094179092558354929003700100000000000000000000000000000000808404831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9091161790558354821660009081526002870160209081526040808320805463ffffffff998a1663ffffffff19918216179091558754965490951683528083208054909516740100000000000000000000000000000000000000009687900489161790945594548490048616808252918701909452818420805493909304909416835290912061461a565b5b63ffffffff8082166000908152600180850160205260408083208054600160e01b810486168552828520840154600160c01b90910490951684529220015490916effffffffffffffffffffffffffffff610100918290048116919092049091161115614a3457600180820154825463ffffffff600160c01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff6101009283900481169290910416111561102857805463ffffffff600160c01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c16179055885486900487168086529282528385205490971684529590955290208054909516909217909355905404166147ec565b600180820154825463ffffffff600160e01b90910416600090815285830160205260409020909101546effffffffffffffffffffffffffffff6101009283900481169290910416111561102857805463ffffffff600160e01b80830482166000908152600187810160208181526040808520547fffffffffffffffffffffffff0000000000000000000000000000000000000000808a166001600160a01b0392831617808c558890048916875282872080549091169982169990991790985583890180548a548890048916875282872086018054610100908190046effffffffffffffffffffffffffffff9081168083027fffffffffffffffffffffffffffffffff000000000000000000000000000000ff80871691909117909655835494839004821692830294909516939093179091558b548990048a168852838820909601805496909203700100000000000000000000000000000000808804831691909103909116027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935587548716845260028a0180825283852080549a881663ffffffff199b8c16179055885486900487168086529282528385205490971684529590955290208054909516909217909355905404166147ec565b60008060007f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b16001600160a01b031663360864176040518163ffffffff1660e01b8152600401602060405180830381865afa158015614c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c9d91906157fb565b6001600160a01b0316846001600160a01b031603614ce35750600091508190507f0000000000000000000000000000000000000000000000000000000000000014614f40565b6001600160a01b03841660009081526004602052604081205462010000900460ff1690614d0f86615150565b9050600080614d546fffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000014850116856064615286565b9050614d976fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000001416606486810390615286565b9150614dba6fffffffffffffffffffffffffffffffff8416606486810390615286565b6040517f981cee530000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301529194506000917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1169063981cee5390602401602060405180830381865afa158015614e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e63919061577f565b6040517f6b9ffeac0000000000000000000000000000000000000000000000000000000081526001600160a01b038b811660048301529192506000917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11690636b9ffeac90602401602060405180830381865afa158015614ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f0c919061577f565b90506000614f2f6fffffffffffffffffffffffffffffffff861684808501615286565b948590039950949750505001925050505b9193909250565b815460009068010000000000000000900463ffffffff165b63ffffffff80821660009081526001808701602052604080832054600160c01b9004909316825291902001546effffffffffffffffffffffffffffff808516700100000000000000000000000000000000909204161115614fe05763ffffffff9081166000908152600185016020526040902054600160c01b900416614f5f565b63ffffffff8181166000818152600187810160205260408083208054600160c01b9004909516835282208101549290915291909101547001000000000000000000000000000000009091046effffffffffffffffffffffffffffff908116909403938481166101009092041611156150795763ffffffff1660009081526001840160205260409020546001600160a01b03169050611e23565b63ffffffff818116600090815260018681016020526040808320808301549054600160e01b9004909416835290912001546101009091046effffffffffffffffffffffffffffff9081169094039384811670010000000000000000000000000000000090920416111561510c5763ffffffff9081166000908152600185016020526040902054600160e01b900416614f5f565b6000915050611e23565b6000816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16116151495781612a6c565b5090919050565b6040517f913f1a9f0000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015260009182917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1169063913f1a9f90602401602060405180830381865afa1580156151d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151f8919061577f565b9050600061523b6fffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000141660286064615286565b905061527e816fffffffffffffffffffffffffffffffff1665010000000000615277856fffffffffffffffffffffffffffffffff166064615335565b91906153fc565b949350505050565b6000838302608081901c6fffffffffffffffffffffffffffffffff84161161530a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f7700000000604482015260640161377e565b826fffffffffffffffffffffffffffffffff16818161532b5761532b61595a565b0495945050505050565b600080838310801561534e576001811461536157615370565b6501000000000085028490049150615370565b65010000000000840285900491505b506402ef6c3406818002602890811c808402821c808202831c808302841c808402851c938402851c95909502841c641da06a6e33909502841c6455232d2bb2909202841c640d4ca0c283909302841c643177d95571909102841c64fffe4bcada90960290931c9490940191909101039190910303905081831115611e23576501921fb544430392915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036154545783828161544a5761544a61595a565b0492505050612a6c565b8084116154bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f770000000000000000000000604482015260640161377e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6fffffffffffffffffffffffffffffffff811681146124c157600080fd5b803560ff8116811461555557600080fd5b919050565b6001600160a01b03811681146124c157600080fd5b60008060006060848603121561558457600080fd5b833561558f81615526565b925061559d60208501615544565b915060408401356155ad8161555a565b809150509250925092565b6000602082840312156155ca57600080fd5b8135612a6c8161555a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061563f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b8181101561567257858101830151858201604001528201615656565b81811115615684576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b80151581146124c157600080fd5b600080604083850312156156d957600080fd5b82356156e48161555a565b915060208301356156f4816156b8565b809150509250929050565b60006020828403121561571157600080fd5b612a6c82615544565b6000806040838503121561572d57600080fd5b8235915060208301356156f48161555a565b60006020828403121561575157600080fd5b5035919050565b60008060006060848603121561576d57600080fd5b83359250602084013561559d8161555a565b60006020828403121561579157600080fd5b8151612a6c81615526565b6000602082840312156157ae57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156157f6576157f66157b5565b500390565b60006020828403121561580d57600080fd5b8151612a6c8161555a565b60006fffffffffffffffffffffffffffffffff83811690831681811015615841576158416157b5565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115615874576158746157b5565b01949350505050565b600063ffffffff83811690831681811015615841576158416157b5565b6000602082840312156158ac57600080fd5b8151612a6c816156b8565b6000608082840312156158c957600080fd5b6040516080810181811067ffffffffffffffff82111715615913577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516159218161555a565b815260208381015190820152604083015161593b81615526565b6040820152606083015161594e81615526565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006effffffffffffffffffffffffffffff808416806159d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b9216919091069291505056fea164736f6c634300080f000a", + "key": "0x0683d274b11d96884eabdcdafc19c2eb1133e58f11ce5152e0ddccbac572a89f" }, - "0x82e01223d51eb87e16a03e24687edf0f294da6f1": { + "0x809d550fca64d94bd9f66e60752a544199cfac3d": { "balance": "0", "nonce": 1, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xa4b37949aa817c72c9ea8f35aaa82261866ca207b23f59257fc00dfe27de1d8d", - "code": "0x608060405234801561001057600080fd5b50600436106102f45760003560e01c80638abf0af011610191578063b172597e116100e3578063c2d9b68411610097578063d706200511610071578063d706200514610826578063de7d4d6a1461084d578063fdbb3fd21461085757600080fd5b8063c2d9b684146107d4578063c42996d614610800578063c7ab2c071461081357600080fd5b8063b744d2f9116100c8578063b744d2f914610773578063bcacc70a14610786578063c0a63a79146107ad57600080fd5b8063b172597e1461074d578063b55cd78e1461076057600080fd5b8063a51c9ace11610145578063a85120e41161011f578063a85120e414610700578063ad42945114610713578063ae9483e01461072657600080fd5b8063a51c9ace146106d2578063a63b8d14146106da578063a8387172146106ed57600080fd5b8063913f1a9f11610176578063913f1a9f14610655578063960a08931461068a578063981cee531461069d57600080fd5b80638abf0af01461062f5780638c1516c71461064257600080fd5b806354469aea1161024a5780636b9ffeac116101fe578063833a333b116101d8578063833a333b146105c5578063842d0d3b146105d857806386d18a941461061c57600080fd5b80636b9ffeac1461053d5780637db41f971461057257806382dae3aa146105bd57600080fd5b80635636aabd1161022f5780635636aabd146104c757806356576b5b146104da5780635959b7651461050157600080fd5b806354469aea1461046b57806354fd4d501461047e57600080fd5b8063209a9694116102ac5780633608641711610286578063360864171461040657806340ce01f114610445578063536afae41461045857600080fd5b8063209a9694146103b5578063270a1644146103e057806331d8e007146103f357600080fd5b806319412a20116102dd57806319412a201461037c5780631e5d81781461038f5780631f86f4f1146103a257600080fd5b806308fab167146102f9578063150b7a021461030e575b600080fd5b61030c61030736600461382c565b61087e565b005b61034661031c366004613863565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b61030c61038a3660046138fe565b610b8d565b61030c61039d366004613943565b610cc7565b61030c6103b03660046139c9565b61105e565b6103c86103c336600461382c565b611407565b6040516001600160801b039091168152602001610373565b61030c6103ee3660046139f3565b61141c565b61030c610401366004613943565b6114f7565b61042d7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610373565b61030c6104533660046139c9565b611989565b6103c86104663660046139f3565b611c42565b61030c610479366004613a0e565b611d30565b6104ba6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516103739190613a5e565b6103c86104d53660046139f3565b611f3d565b61042d7f000000000000000000000000ff000000000000000000000000000000000000ff81565b6103c861050f3660046139f3565b6001600160a01b0316600090815260208190526040902060020154600160801b90046001600160801b031690565b6103c861054b3660046139f3565b6001600160a01b03166000908152602081905260409020600301546001600160801b031690565b6103c8610580366004613aaf565b6001600160a01b0391821660009081526020818152604080832093909416825260069092019091522054600160801b90046001600160801b031690565b6103c8601481565b6103c86105d3366004613aaf565b612028565b6103c86105e6366004613aaf565b6001600160a01b03918216600090815260208181526040808320939094168252600590920190915220546001600160801b031690565b6103c861062a366004613ae2565b6120a1565b6103c861063d3660046139f3565b612112565b61030c6106503660046139f3565b61214b565b6103c86106633660046139f3565b6001600160a01b03166000908152602081905260409020600401546001600160801b031690565b6103c861069836600461382c565b6122f2565b6103c86106ab3660046139f3565b6001600160a01b03166000908152602081905260409020600201546001600160801b031690565b6103c8606481565b6103c86106e83660046139f3565b6122fe565b61030c6106fb3660046139f3565b61234e565b6103c861070e36600461382c565b61246e565b61030c610721366004613b1e565b612805565b61042d7f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b181565b6103c861075b3660046139f3565b612af2565b6103c861076e366004613aaf565b612b2a565b61030c61078136600461382c565b612b8f565b6103c87f000000000000000000000000000000000000000000000000000000000000000a81565b61042d7f00000000000000000000000023618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f81565b61042d6107e23660046139f3565b6001600160a01b039081166000908152602081905260409020541690565b6103c861080e36600461382c565b612e87565b6103c8610821366004613aaf565b613040565b61042d7f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802981565b6103c8620f424081565b6103c87f000000000000000000000000000000000000000000000000000000000000007881565b6001600160a01b0382811660009081526020819052604090205483911633146108d3576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160801b0316600003610916576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42610920846122fe565b6001600160801b03161115610961576040517f285d5a9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f970531c10000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015242917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b19091169063970531c190602401602060405180830381865afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190613b78565b6001600160801b03161115610a49576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a53838361307e565b6040517f5bab847f0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600160248301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11690635bab847f90604401600060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b5050506001600160a01b03808516600090815260208190526040902054610b4092507f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029821691166001600160801b038516613131565b6040516001600160801b03831681526001600160a01b038416907fab48b3d59a240196dc5bdd7f7a638fca310f8194c7d350c3dd7765861311ddf8906020015b60405180910390a2505050565b336001600160a01b037f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11614610bef576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610c2f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03838116600090815260208190526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692841692909217909155610c8390849084906131fd565b6040516001600160801b03831681526001600160a01b038416907fadb1a06aea2cd2ff20eac971640a5eb7d687df3e3a897be2f334836494958a4790602001610b80565b6000819003610d02576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166000908152602081815260408083203384526006019091528120905b82811015610e5a57816001016000858584818110610d4857610d48613b95565b602090810292909201358352508101919091526040016000908120546001600160801b03169003610da5576040517fe77a0da400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42610dc98633878786818110610dbd57610dbd613b95565b905060200201356120a1565b6001600160801b03161115610e0a576040517f285d5a9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001016000858584818110610e2257610e22613b95565b6020908102929092013583525081019190915260400160002080546fffffffffffffffffffffffffffffffff19169055600101610d28565b506000610e678533613333565b6001600160a01b0386166000908152602081815260408083206004810180546fffffffffffffffffffffffffffffffff1981166001600160801b039182168b900382161790915533855260069091019092529091208054808316600160801b91829004841688900390931602919091179055905060005b83811015610fbb577f000000000000000000000000ff000000000000000000000000000000000000ff6001600160a01b03166342842e0e3033888886818110610f2957610f29613b95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610f9857600080fd5b505af1158015610fac573d6000803e3d6000fd5b50505050806001019050610ede565b506001600160801b03811615611008576110086001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802916336001600160801b038416613131565b336001600160a01b0316856001600160a01b03167f6fcfb0c3a157955b6809f57bb114c142779ab9b7dd686a1b28ec0f2c9edfb94386868560405161104f93929190613c13565b60405180910390a35050505050565b8160026040517f30ccebb50000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b116906330ccebb590602401602060405180830381865afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111049190613c6f565b600581111561111557611115613c40565b10806111bf57506040517f56b65e970000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b116906356b65e9790602401602060405180830381865afa15801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf9190613c90565b156111f6576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112028433613333565b90506001600160801b0381161561129a576112506001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802916336001600160801b038416613131565b6040516001600160801b038216815233906001600160a01b038616907ff31a7084636b55317cfeed458343e6f580e12d52ba89be9f1faae91731fcce429060200160405180910390a35b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000ff000000000000000000000000000000000000ff6001600160a01b0316906342842e0e90606401600060405180830381600087803b15801561132157600080fd5b505af1158015611335573d6000803e3d6000fd5b505050506001600160a01b038416600090815260208181526040808320338452600681018352818420600490910180546001600160801b03808216600190810182166fffffffffffffffffffffffffffffffff19938416179093558354600160801b808204831685018316029082161784558987529190920190935292208054429092169190921617905560405183815233906001600160a01b038616907f7a9043ba5086cf56c416db64f7608d06eae96d08a7e35a101ad4f42aab23585d906020015b60405180910390a350505050565b600061141383836133d2565b90505b92915050565b60006114288233613333565b9050806001600160801b031660000361146d576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114aa6001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802916336001600160801b038416613131565b6040516001600160801b038216815233906001600160a01b038416907ff31a7084636b55317cfeed458343e6f580e12d52ba89be9f1faae91731fcce429060200160405180910390a35050565b8260026040517f30ccebb50000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b116906330ccebb590602401602060405180830381865afa158015611579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190613c6f565b60058111156115ae576115ae613c40565b108061165857506040517f56b65e970000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b116906356b65e9790602401602060405180830381865afa158015611634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190613c90565b1561168f576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290036116ca576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116d68533613333565b90506001600160801b0381161561176e576117246001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802916336001600160801b038416613131565b6040516001600160801b038216815233906001600160a01b038716907ff31a7084636b55317cfeed458343e6f580e12d52ba89be9f1faae91731fcce429060200160405180910390a35b6001600160a01b0385166000908152602081815260408083203384526006019091528120905b848110156118c3577f000000000000000000000000ff000000000000000000000000000000000000ff6001600160a01b03166342842e0e33308989868181106117df576117df613b95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561184e57600080fd5b505af1158015611862573d6000803e3d6000fd5b505050504282600101600088888581811061187f5761187f613b95565b90506020020135815260200190815260200160002060006101000a8154816001600160801b0302191690836001600160801b03160217905550806001019050611794565b506001600160a01b0386166000908152602081815260408083206004810180546fffffffffffffffffffffffffffffffff1981166001600160801b039182168b0182161790915533855260069091019092529091208054808316600160801b918290048416880190931602919091179055336001600160a01b0316866001600160a01b03167fafdb227ea10128ee703397dbff24db1f7c90303e6fff8068a2712a1b10c935f18787604051611979929190613cb2565b60405180910390a3505050505050565b6001600160a01b03821660009081526020818152604080832033845260060182528083208484526001810190925282205490916001600160801b0390911690036119ff576040517fe77a0da400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42611a0b8433856120a1565b6001600160801b03161115611a4c576040517f285d5a9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a588433613333565b9050611b0c8433856001600160a01b03928316600090815260208181526040808320949095168252600684018152848220600490940180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001600160801b03808316820181166fffffffffffffffffffffffffffffffff19938416179093558654600160801b808204851690920184169091029216919091178555928252600190930190925291902080549091169055565b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018490527f000000000000000000000000ff000000000000000000000000000000000000ff6001600160a01b0316906342842e0e90606401600060405180830381600087803b158015611b9357600080fd5b505af1158015611ba7573d6000803e3d6000fd5b505050506001600160801b03811615611bf757611bf76001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe5793534802916336001600160801b038416613131565b604080518481526001600160801b038316602082015233916001600160a01b038716917fd1343dccf52a899cdc8aaa99714d930d2871b21c218512c779ca3f7c7fddab4191016113f9565b6000336001600160a01b037f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11614611ca6576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b038116600090815260208190526040902060020180546fffffffffffffffffffffffffffffffff197f000000000000000000000000000000000000000000000000000000000000000a600160801b8084046001600160801b0390811683018116909102928316938116928116929092178101909116919091179091555b919050565b806001600160801b0316600003611d73576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040517f30ccebb50000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b16001600160a01b0316906330ccebb590602401602060405180830381865afa158015611df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e169190613c6f565b6005811115611e2757611e27613c40565b03611e5e576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e6a338260016131fd565b6040516001600160801b038216815233907fadb1a06aea2cd2ff20eac971640a5eb7d687df3e3a897be2f334836494958a479060200160405180910390a26040517fe428c2f40000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b16001600160a01b03169063e428c2f490602401600060405180830381600087803b158015611f2257600080fd5b505af1158015611f36573d6000803e3d6000fd5b5050505050565b6000336001600160a01b037f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11614611fa1576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b038116600090815260208190526040902060020180547f000000000000000000000000000000000000000000000000000000000000000a6001600160801b03600160801b808404821683900382160280821693821693909317829003166fffffffffffffffffffffffffffffffff199290921691909117909155919050565b6001600160a01b038083166000908152602081815260408083209385168352600684019091528120600483015481549293926001600160801b03600160801b909204821691859161207a911683613cf5565b83546120969190600160801b90046001600160801b0316613d1d565b979650505050505050565b6001600160a01b0380841660009081526020818152604080832093861683526006909301815282822084835260010190529081205461210a907f0000000000000000000000000000000000000000000000000000000000000078906001600160801b0316613d4c565b949350505050565b6001600160a01b03811660009081526020819052604081206002810154600390910154611416916001600160801b039081169116613d4c565b336001600160a01b037f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b116146121ad576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600090815260208190526040812060020180549091906121e9906001600160801b03600160801b820481169116613cf5565b90507f000000000000000000000000000000000000000000000000000000000000000a6001600160801b0316816001600160801b03161015612257576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81546001600160801b03600160801b80830482167f000000000000000000000000000000000000000000000000000000000000000a9081018316909102919092161783556001600160a01b038416907f7ad6f32675ff7ed77c34b45d23cd987ea6a62560f390baac683de0bc6b24fb7e906122d28185613cf5565b604080516001600160801b03938416815292909116602083015201610b80565b60006114138383613452565b6001600160a01b038116600090815260208190526040812060010154611416907f0000000000000000000000000000000000000000000000000000000000000078906001600160801b0316613d4c565b336001600160a01b037f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b116146123b0576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260208190526040902060020180547f000000000000000000000000000000000000000000000000000000000000000a6001600160801b03600160801b8084048216839003821681029382168481178087559596957fc8d4f2228d78be7d0ca97344025aae4f9bc2c87ece32295d72791a4d39f2a71a9561244794939091048316921617613cf5565b604080516001600160801b0393841681529290911660208301520160405180910390a25050565b60008260026040517f30ccebb50000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b116906330ccebb590602401602060405180830381865afa1580156124f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125169190613c6f565b600581111561252757612527613c40565b10806125d157506040517f56b65e970000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b116906356b65e9790602401602060405180830381865afa1580156125ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d19190613c90565b15612608576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160801b031660000361264b576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126896001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe579353480291633306001600160801b0387166134c1565b60006126958585613452565b6001600160a01b038616600090815260208181526040808320600381018054600160801b6fffffffffffffffffffffffffffffffff1982166001600160801b039283168d0183169081178290048316890183168202179092553386526005909201909352922080548316840183164290931690910291909117905590506040517f5bab847f0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152600060248301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11690635bab847f90604401600060405180830381600087803b15801561279557600080fd5b505af11580156127a9573d6000803e3d6000fd5b5050604080516001600160801b038089168252851660208201523393506001600160a01b03891692507f334cabe84b7338f2bdd62070c02f24ffbcc7735e46f425fa401db349717e1328910160405180910390a3949350505050565b336001600160a01b037f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11614612867576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128dc7f00000000000000000000000023618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f30836128978688613d4c565b6128a19190613d4c565b6001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029169291906001600160801b03166134c1565b7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e6001600160a01b0316846001600160a01b03160361298d576129887f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e826129448587613d4c565b61294e9190613d4c565b6001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe579353480291691906001600160801b0316613131565b612aec565b6001600160a01b03841660009081526020819052604090206003810180546001600160801b03808216870181166fffffffffffffffffffffffffffffffff19928316179092556002830180548084168601841692169190911781556004909201541615612a425760028101546001600160801b0390811690841681612a1457612a14613d77565b6002830180546001600160801b0380821694909304600160801b918290048416019092169091029190911790555b80547f000000000000000000000000000000000000000000000000000000000000000a6001600160801b03600160801b8084048216839003821681029382168481178087556001600160a01b038b16957fc8d4f2228d78be7d0ca97344025aae4f9bc2c87ece32295d72791a4d39f2a71a9594612ac794909204821692911617613cf5565b604080516001600160801b0393841681529290911660208301520160405180910390a2505b50505050565b6001600160a01b038116600090815260208190526040812060020154611416906001600160801b03600160801b820481169116613cf5565b6001600160a01b0382811660009081526020818152604080832093851683526005909301905290812054611413907f000000000000000000000000000000000000000000000000000000000000007890600160801b90046001600160801b0316613d4c565b806001600160801b0316600003612bd2576040517f69646ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612bde8383613452565b9050806001600160801b0316600003612c23576040517fab32f25400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166000908152602081815260408083203384526005019091529020546001600160801b039081169082161115612c8e576040517fab32f25400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42612c998433612b2a565b6001600160801b03161115612cda576040517f285d5a9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166000908152602081815260408083206003810180546001600160801b03600160801b80830482168990038216028082169282169290921789900381166fffffffffffffffffffffffffffffffff1992831617909255338652600590920190935292208054808316859003909216919092161790556040517f5bab847f0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600160248301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11690635bab847f90604401600060405180830381600087803b158015612ddb57600080fd5b505af1158015612def573d6000803e3d6000fd5b50612e329250506001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029169050336001600160801b038516613131565b604080516001600160801b0380851682528316602082015233916001600160a01b038616917f6acf5e34cb1562e3a0785bb4565e0761928cda3dd258168c73bca09621c669e9910160405180910390a3505050565b6000336001600160a01b037f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11614612eeb576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038084166000818152602081905260409020600201917f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e169003612f9657612f8d6001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029167f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e6001600160801b038616613131565b82915050611416565b6000612fae6001600160801b03851660146064613512565b905061300d6001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029167f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e6001600160801b038416613131565b81546fffffffffffffffffffffffffffffffff198116919094036001600160801b03948516810190941617905550919050565b6001600160a01b03808316600090815260208181526040808320938516835260059093019052908120546114139084906001600160801b03166133d2565b6001600160a01b038216600090815260208190526040902060020180546130b7906001600160801b03600160801b820481169116613cf5565b6001600160801b0316826001600160801b03161115613102576040517f24f21b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546fffffffffffffffffffffffffffffffff1981166001600160801b03918216939093031691909117905550565b6040516001600160a01b0383166024820152604481018290526131f89084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526135b4565b505050565b6001600160a01b0380841660009081526020819052604090209061324e907f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe579353480291685306001600160801b0387166134c1565b6002810180546fffffffffffffffffffffffffffffffff198082166001600160801b039283168701831617909255600183018054909216429091161790558115612aec576040517f5bab847f0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152600060248301527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b11690635bab847f90604401600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b5050505050505050565b6001600160a01b038083166000908152602081815260408083209385168352600684019091528120600483015481549293926001600160801b03600160801b9092048216918591613385911683613cf5565b83546133a19190600160801b90046001600160801b0316613d1d565b83546fffffffffffffffffffffffffffffffff19166001600160801b03939093169290921790925595945050505050565b6001600160a01b038216600090815260208190526040812060030154611413906001600160801b0316613406906001613d4c565b6001600160a01b038516600090815260208190526040902060030154620f424090600160801b90046001600160801b03166134419190613d4c565b6001600160801b0385169190613512565b6001600160a01b03821660009081526020819052604081206003015461141390620f424090600160801b90046001600160801b03166134919190613d4c565b6001600160a01b0385166000908152602081905260409020600301546001600160801b0316613441906001613d4c565b6040516001600160a01b0380851660248301528316604482015260648101829052612aec9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613176565b6000838302608081901c6001600160801b03841611613592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f55696e743132384d6174683a206d756c446976206f766572666c6f770000000060448201526064015b60405180910390fd5b826001600160801b031681816135aa576135aa613d77565b0495945050505050565b6000613609826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136b69092919063ffffffff16565b905080516000148061362a57508080602001905181019061362a9190613c90565b6131f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401613589565b606061210a848460008585600080866001600160a01b031685876040516136dd9190613da6565b60006040518083038185875af1925050503d806000811461371a576040519150601f19603f3d011682016040523d82523d6000602084013e61371f565b606091505b509150915061209687838387606083156137b45782516000036137ad576001600160a01b0385163b6137ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401613589565b508161210a565b61210a83838151156137c95781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135899190613a5e565b80356001600160a01b0381168114611d2b57600080fd5b6001600160801b038116811461382957600080fd5b50565b6000806040838503121561383f57600080fd5b613848836137fd565b9150602083013561385881613814565b809150509250929050565b60008060008060006080868803121561387b57600080fd5b613884866137fd565b9450613892602087016137fd565b935060408601359250606086013567ffffffffffffffff808211156138b657600080fd5b818801915088601f8301126138ca57600080fd5b8135818111156138d957600080fd5b8960208285010111156138eb57600080fd5b9699959850939650602001949392505050565b60008060006060848603121561391357600080fd5b61391c846137fd565b9250602084013561392c81613814565b915061393a604085016137fd565b90509250925092565b60008060006040848603121561395857600080fd5b613961846137fd565b9250602084013567ffffffffffffffff8082111561397e57600080fd5b818601915086601f83011261399257600080fd5b8135818111156139a157600080fd5b8760208260051b85010111156139b657600080fd5b6020830194508093505050509250925092565b600080604083850312156139dc57600080fd5b6139e5836137fd565b946020939093013593505050565b600060208284031215613a0557600080fd5b611413826137fd565b600060208284031215613a2057600080fd5b8135613a2b81613814565b9392505050565b60005b83811015613a4d578181015183820152602001613a35565b83811115612aec5750506000910152565b6020815260008251806020840152613a7d816040850160208701613a32565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215613ac257600080fd5b613acb836137fd565b9150613ad9602084016137fd565b90509250929050565b600080600060608486031215613af757600080fd5b613b00846137fd565b9250613b0e602085016137fd565b9150604084013590509250925092565b60008060008060808587031215613b3457600080fd5b613b3d856137fd565b93506020850135613b4d81613814565b92506040850135613b5d81613814565b91506060850135613b6d81613814565b939692955090935050565b600060208284031215613b8a57600080fd5b8151613a2b81613814565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613bf657600080fd5b8260051b8083602087013760009401602001938452509192915050565b604081526000613c27604083018587613bc4565b90506001600160801b0383166020830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215613c8157600080fd5b815160068110613a2b57600080fd5b600060208284031215613ca257600080fd5b81518015158114613a2b57600080fd5b60208152600061210a602083018486613bc4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006001600160801b0383811690831681811015613d1557613d15613cc6565b039392505050565b60006001600160801b0380831681851681830481118215151615613d4357613d43613cc6565b02949350505050565b60006001600160801b03808316818516808303821115613d6e57613d6e613cc6565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008251613db8818460208701613a32565b919091019291505056fea164736f6c634300080f000a", - "key": "0xc130247092931d8c66bf63db8788c6b72a7a8fcc5f0c53a0424bd8390131805e" + "codeHash": "0x44dda7646c59874f6e77a94b144f2a0cf125675c9b6c8c66ebbd9a32a359f0cd", + "code": "0x608060405234801561001057600080fd5b506004361061016c5760003560e01c80638b51d13f116100cd578063b77bf60011610081578063c01a8c8411610066578063c01a8c84146103c4578063c6427474146103d7578063ee22610b146103ea57600080fd5b8063b77bf6001461039b578063b9774f7b146103a457600080fd5b80639ab24eb0116100b25780639ab24eb01461033e5780639ace38c2146103515780639e45e8f41461037457600080fd5b80638b51d13f146102ff57806391ddadf41461031f57600080fd5b806349ae963d116101245780636dc0ae22116101095780636dc0ae2214610256578063784547a7146102a25780638a8e784c146102b557600080fd5b806349ae963d146101fa57806354fd4d501461020d57600080fd5b80631703a018116101555780631703a0181461019957806320ea8d86146101b45780632a758595146101c757600080fd5b80630192337114610171578063080b91ee14610186575b600080fd5b61018461017f366004611a5d565b6103fd565b005b610184610194366004611b6c565b61063b565b6101a1610737565b6040519081526020015b60405180910390f35b6101846101c2366004611bbc565b6109ba565b6101ea6101d5366004611bbc565b60396020526000908152604090205460ff1681565b60405190151581526020016101ab565b6101a1610208366004611bf7565b610c9c565b6102496040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ab9190611ca5565b61027d7f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b6101ea6102b0366004611bbc565b610d85565b6101ea6102c3366004611cbf565b600082815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845260010190915290205460ff1692915050565b6101a161030d366004611bbc565b60009081526034602052604090205490565b610327610da9565b60405165ffffffffffff90911681526020016101ab565b6101a161034c366004611ce4565b610ed5565b61036461035f366004611bbc565b610ffe565b6040516101ab9493929190611d01565b61027d7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6101a160385481565b6101a16103b2366004611bbc565b60346020526000908152604090205481565b6101846103d2366004611bbc565b6110dc565b6101a16103e5366004611bf7565b61133e565b6101846103f8366004611bbc565b6113d3565b33600061040982610ed5565b116104815760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e6572000000000060648201526084015b60405180910390fd5b60008381526039602052604090205460ff16158061049c5750815b6105355760405162461bcd60e51b8152602060048201526044602482018190527f5365637572697479436f756e63696c3a20746865206f75747075742068617320908201527f616c7265616479206265656e2072657175657374656420746f2062652064656c60648201527f6574656400000000000000000000000000000000000000000000000000000000608482015260a401610478565b6040805160248082018690528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe39a219c0000000000000000000000000000000000000000000000000000000017905260006105c87f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e828461133e565b90506105d3816110dc565b60008581526039602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905551869183917fc63c84660a471a970585c7cab9d0601af8e717ff0822a2ea049a3542fc5aa55a9190a35050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e16146106e65760405162461bcd60e51b815260206004820152603c60248201527f5365637572697479436f756e63696c3a206f6e6c792074686520636f6c6f737360448201527f65756d20636f6e74726163742063616e20626520612073656e646572000000006064820152608401610478565b60006106f433600084611741565b604080518681526020810186905291925082917eef5106e82a682c776fd7748be042f406a9ee0feaaea86ae9029477c2b91f2a910160405180910390a250505050565b6000806001610744610da9565b61074e9190611d77565b65ffffffffffff1690507f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701673ffffffffffffffffffffffffffffffffffffffff166397c3d3346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611d9e565b6040517f60c4247f000000000000000000000000000000000000000000000000000000008152600481018390527f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701673ffffffffffffffffffffffffffffffffffffffff16906360c4247f90602401602060405180830381865afa158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190611d9e565b7f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701673ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109259190611db7565b73ffffffffffffffffffffffffffffffffffffffff16638e539e8c846040518263ffffffff1660e01b815260040161095f91815260200190565b602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190611d9e565b6109aa9190611dd4565b6109b49190611e11565b91505090565b3360006109c682610ed5565b11610a395760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b600082815260336020526040902054829073ffffffffffffffffffffffffffffffffffffffff16610ad25760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b600083815260336020526040902054839074010000000000000000000000000000000000000000900460ff1615610b715760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d756c746953696757616c6c65743a20616c72656164792065786560448201527f63757465640000000000000000000000000000000000000000000000000000006064820152608401610478565b600084815260346020908152604080832033845260010190915290205460ff16610c035760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d756c746953696757616c6c65743a206e6f7420636f6e6669726d60448201527f65642079657400000000000000000000000000000000000000000000000000006064820152608401610478565b60008481526034602090815260408083203380855260018201909352922080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610c5090610ed5565b816000016000828254610c639190611e4c565b9091555050604051859033907f795394da21278ca39d59bb3ca00efeebdc0679acc420916c7385c2c5d942656f90600090a35050505050565b60008373ffffffffffffffffffffffffffffffffffffffff8116610d285760405162461bcd60e51b815260206004820152602960248201527f546f6b656e4d756c746953696757616c6c65743a20616464726573732069732060448201527f6e6f742076616c696400000000000000000000000000000000000000000000006064820152608401610478565b848484610d33610da9565b604051602001610d469493929190611e63565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012095945050505050565b6000610d8f610737565b600092835260346020526040909220549190911015919050565b60007f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701673ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a9190611db7565b73ffffffffffffffffffffffffffffffffffffffff166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ebe575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610ebb91810190611eb1565b60015b610ed057610ecb43611968565b905090565b919050565b60007f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701673ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f669190611db7565b6040517f9ab24eb000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529190911690639ab24eb090602401602060405180830381865afa158015610fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff89190611d9e565b92915050565b60336020526000908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff8416947401000000000000000000000000000000000000000090940460ff1693919061105990611ed9565b80601f016020809104026020016040519081016040528092919081815260200182805461108590611ed9565b80156110d25780601f106110a7576101008083540402835291602001916110d2565b820191906000526020600020905b8154815290600101906020018083116110b557829003601f168201915b5050505050905084565b3360006110e882610ed5565b1161115b5760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b600082815260336020526040902054829073ffffffffffffffffffffffffffffffffffffffff166111f45760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b6000838152603460209081526040808320338452600181019092529091205460ff16156112895760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d756c746953696757616c6c65743a20616c726561647920636f6e60448201527f6669726d656400000000000000000000000000000000000000000000000000006064820152608401610478565b3360008181526001838101602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556112ce90610ed5565b8160000160008282546112e19190611f2c565b9091555050604051849033907ff8a17c9136a3ae33364fac05eb088a3cbafee10c1889c88593e20ee2d8e4eb8890600090a361131b610737565b6000858152603460205260409020541061133857611338846113d3565b50505050565b600033600061134c82610ed5565b116113bf5760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b6113ca858585611741565b95945050505050565b6113db6119ea565b600081815260336020526040902054819073ffffffffffffffffffffffffffffffffffffffff166114745760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b600082815260336020526040902054829074010000000000000000000000000000000000000000900460ff16156115135760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d756c746953696757616c6c65743a20616c72656164792065786560448201527f63757465640000000000000000000000000000000000000000000000000000006064820152608401610478565b61151c83610d85565b61158e5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d756c746953696757616c6c65743a2071756f72756d206e6f742060448201527f72656163686564000000000000000000000000000000000000000000000000006064820152608401610478565b600083815260336020526040812080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff81167401000000000000000000000000000000000000000017825590919061168f9073ffffffffffffffffffffffffffffffffffffffff165a846001015485600201805461160c90611ed9565b80601f016020809104026020016040519081016040528092919081815260200182805461163890611ed9565b80156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b5050505050611a43565b9050806117045760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e4d756c746953696757616c6c65743a2063616c6c207472616e736160448201527f6374696f6e206661696c656400000000000000000000000000000000000000006064820152608401610478565b604051859033907f4e86ad0da28cbaaaa7e93e36c43b32696e970535225b316f1b84fbf30bdc04e890600090a35050505061173e60018055565b50565b60008373ffffffffffffffffffffffffffffffffffffffff81166117cd5760405162461bcd60e51b815260206004820152602960248201527f546f6b656e4d756c746953696757616c6c65743a20616464726573732069732060448201527f6e6f742076616c696400000000000000000000000000000000000000000000006064820152608401610478565b60006117da868686610c9c565b60008181526033602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16156118755760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20616c72656164792065786973747300000000000000000000000000000000006064820152608401610478565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff8089168252600060208084018281528486018b8152606086018b8152888552603390935295909220845181549351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00000000000000000000000000000000000000000090941694169390931791909117825592516001820155915190919060028201906119269082611f93565b505060388054600101905550604051819033907f1f50cd00b6a6fe3928bf4a5f2f23829e9a1c9396573b828b5fa14d95aae7e77590600090a395945050505050565b600065ffffffffffff8211156119e65760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152608401610478565b5090565b600260015403611a3c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610478565b6002600155565b600080600080845160208601878a8af19695505050505050565b60008060408385031215611a7057600080fd5b8235915060208301358015158114611a8757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611ad257600080fd5b813567ffffffffffffffff80821115611aed57611aed611a92565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611b3357611b33611a92565b81604052838152866020858801011115611b4c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611b8157600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611ba657600080fd5b611bb286828701611ac1565b9150509250925092565b600060208284031215611bce57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461173e57600080fd5b600080600060608486031215611c0c57600080fd5b8335611c1781611bd5565b925060208401359150604084013567ffffffffffffffff811115611ba657600080fd5b6000815180845260005b81811015611c6057602081850181015186830182015201611c44565b81811115611c72576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611cb86020830184611c3a565b9392505050565b60008060408385031215611cd257600080fd5b823591506020830135611a8781611bd5565b600060208284031215611cf657600080fd5b8135611cb881611bd5565b73ffffffffffffffffffffffffffffffffffffffff851681528315156020820152826040820152608060608201526000611d3e6080830184611c3a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600065ffffffffffff83811690831681811015611d9657611d96611d48565b039392505050565b600060208284031215611db057600080fd5b5051919050565b600060208284031215611dc957600080fd5b8151611cb881611bd5565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e0c57611e0c611d48565b500290565b600082611e47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015611e5e57611e5e611d48565b500390565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201526000611e986080830185611c3a565b905065ffffffffffff8316606083015295945050505050565b600060208284031215611ec357600080fd5b815165ffffffffffff81168114611cb857600080fd5b600181811c90821680611eed57607f821691505b602082108103611f26577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115611f3f57611f3f611d48565b500190565b601f821115611f8e57600081815260208120601f850160051c81016020861015611f6b5750805b601f850160051c820191505b81811015611f8a57828155600101611f77565b5050505b505050565b815167ffffffffffffffff811115611fad57611fad611a92565b611fc181611fbb8454611ed9565b84611f44565b602080601f8311600181146120145760008415611fde5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611f8a565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561206157888601518255948401946001909101908401612042565b508582101561209d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea164736f6c634300080f000a", + "key": "0xb941a4d745263122b73583e9d9468f102465f1b0e567d0287803d36470a306ae" + }, + "0x84ea74d481ee0a5332c457a4d796187f6ba67feb": { + "balance": "0", + "nonce": 1, + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0xc4825f5ac697c051a52eaac72a6c24043b771675aa90db220fe7fa7d0e8a7c13", + "code": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80634292dc3e1461003b57806354fd4d5014610063575b600080fd5b61004e61004936600461576f565b6100ac565b60405190151581526020015b60405180910390f35b61009f6040518060400160405280600581526020017f302e312e3500000000000000000000000000000000000000000000000000000081525081565b60405161005a91906157e3565b60006100b661560c565b848460008181106100c9576100c9615856565b9050602002013570ffffffffffffffffffffffffffffffffff16816000600681106100f6576100f6615856565b602002015260888585600181811061011057610110615856565b90506020020135600116901b60888686600081811061013157610131615856565b90506020020135901c61014491906158b4565b60208201528484600281811061015c5761015c615856565b9050602002013570ffffffffffffffffffffffffffffffffff168160026006811061018957610189615856565b60200201526088858560038181106101a3576101a3615856565b90506020020135600116901b6088868660028181106101c4576101c4615856565b90506020020135901c6101d791906158b4565b606080830191909152608084811c908301526fffffffffffffffffffffffffffffffff841660a08301526040805160028082529281019091526000918291829182918291816020015b60408051808201909152600080825260208201528152602001906001900390816102205750506040805160028082526060820190925291925060009190602082015b61026a61562a565b81526020019060019003908161026257905050905061028a8d8d896104fb565b85519399509097509095509350869083906000906102aa576102aa615856565b6020026020010151600001818152505083826000815181106102ce576102ce615856565b6020026020010151602001818152505084826001815181106102f2576102f2615856565b60200260200101516000018181525050828260018151811061031657610316615856565b6020026020010151602001818152505061032e614a63565b8160008151811061034157610341615856565b6020026020010181905250610354614b0e565b8160018151811061036757610367615856565b602002602001018190525061037c8282614bb5565b6103905760009750505050505050506104f2565b8a8a60008181106103a3576103a3615856565b90506020020135826000815181106103bd576103bd615856565b6020908102919091010151528a8a60018181106103dc576103dc615856565b90506020020135826000815181106103f6576103f6615856565b602002602001015160200181815250508a8a600281811061041957610419615856565b905060200201358260018151811061043357610433615856565b6020908102919091010151528a8a600381811061045257610452615856565b905060200201358260018151811061046c5761046c615856565b60200260200101516020018181525050610484614a63565b8160008151811061049757610497615856565b60200260200101819052506104aa614b0e565b816001815181106104bd576104bd615856565b60200260200101819052506104d28282614bb5565b6104e65760009750505050505050506104f2565b60019750505050505050505b95945050505050565b60008060008061050961564f565b61051161566e565b6000806105667f2754b04f3f510d0e86a0d0e811f0fc16f92b722514e1729066d2abf90811d6f27f1816b0f9909a5a979bd34c559e57b4096bee5cce7eb668bc0a9805677f40dc858b845b6020020151614e89565b90925090506105c07f174fa57071f8f6e53fcb31a5ecc33274ec76e4e186eeb0b64255d2f314cd50b27f1c399365e85e4de2761ebcf350da85ff4518cc82f7cef64a477a7a5fd11d4a448b60015b60200201518585614eef565b90925090506106127f259a4d5cd83279b6dc9ca2008b669f82e91f23804e2524c5087a2452d52c33bd7f303abddb7ae0f35e3a6bd39314b347c3c3a433f72833dda1998ad2176258baa38b60026105b4565b90925090506106647f252b158900f31a7c0c00b924e7d3c8d61a60c5e9fd2b83251ba73d1dc0b680f57f29c8c2b3f0d74267bc2b0f9f3568838cdb0eee4719391790d93d0015c00ce5af8b60036105b4565b90925090506106b67f0c25f9f3c38b6a128d7d38c5625a3976d389b5f9f33098bb419968e4d18e150e7f21fb777462c7f4af71940423babc7f882f0c97be9620ef84f6f11974ee0edb8e8b60046105b4565b90925090506107087f2280a0fd7dbf95c450830906ffc607a373d5b9b56b9101138e925ad557eb355a7f0697ab7e9a5377e2759ab6d1283301ccae9c72bad14946a9513ee19be1ec825e8b60056105b4565b6020860152845261073b7f00b54142d3712f03ff5c15914a3dce82c0d8a8d537e165e2342048adf14e34aa846000614f3b565b8351602085015161074f9190856002614f87565b600091505b600482116107ed576107db8b8b61076c8560026158fb565b6107779060006158b4565b81811061078657610786615856565b905060200201358c8c85600261079c91906158fb565b6107a79060016158b4565b8181106107b6576107b6615856565b90506020020135858560036107cb91906158fb565b6107d69060056158b4565b614f87565b816107e581615938565b925050610754565b6107f8836014614ff7565b6040850152600091505b600d8211610896576108848b8b61081a8560026158fb565b61082590600a6158b4565b81811061083457610834615856565b905060200201358c8c85600261084a91906158fb565b61085590600b6158b4565b81811061086457610864615856565b905060200201358585600361087991906158fb565b6107d69060016158b4565b8161088e81615938565b925050610802565b6108a183602b614ff7565b60608501526108b1836001614ff7565b6080850152600091505b600982116109205761090e8b8b6108d38560026158fb565b6108de9060266158b4565b8181106108ed576108ed615856565b905060200201358c8c85600261090391906158fb565b6108559060276158b4565b8161091881615938565b9250506108bb565b61092b83601f614ff7565b60a0850152600091505b6003821161099a576109888b8b61094d8560026158fb565b61095890603a6158b4565b81811061096757610967615856565b905060200201358c8c85600261097d91906158fb565b61085590603b6158b4565b8161099281615938565b925050610935565b6109a583600d614ff7565b60c0850152600091505b60468211610a1857610a068b8b6109c78560016158fb565b6109d29060426158b4565b8181106109e1576109e1615856565b90506020020135848460026109f691906158fb565b610a019060016158b4565b614f3b565b81610a1081615938565b9250506109af565b610a2383608f614ff7565b60e0850152600091505b60038211610a9257610a808b8b610a458560026158fb565b610a509060896158b4565b818110610a5f57610a5f615856565b905060200201358c8c856002610a7591906158fb565b61085590608a6158b4565b81610a8a81615938565b925050610a2d565b610a9d83600d614ff7565b61010085015260c0840151600080516020615a46833981519152907f1dba8b5bdd64ef6ce29a9039aca3c0e524395c43b9227b96c75090cc6cc7ec97900961012085015260c0840151600080516020615a46833981519152907f24a1fcd63e9f03b27281db85fe631ec8e5c466f8178a4ee94d4942b7ccd90e1c900961014085015260c0840151600080516020615a46833981519152907f20bab6e5f766b4edf82399e9c5ff0e40d4b6875321a3d8020e18521d8f5c7241900961016085015260c0840151610b70906304000000615059565b610180850152600080516020615a46833981519152610b90600182615970565b610180860151086101a08501819052600080516020615a46833981519152907f30644e66c81e03716be83b486d6feabcc7ddd0fe6cbf5e72d585d142f7829b05096101c0850152600080516020615a46833981519152610bf1600182615970565b60c0860151089150610c0b84600e5b6020020151836150c0565b6101c08501526101a0840151600080516020615a46833981519152907f07baaa5b7af9cf52cd226bc56865f0f99ef8fcd4219060f09f43e9a148b5ab68096101e0850152600080516020615a46833981519152610c887f20bab6e5f766b4edf82399e9c5ff0e40d4b6875321a3d8020e18521d8f5c724182615970565b60c0860151089150610c9b84600f610c00565b6101e08501526101a0840151600080516020615a46833981519152907f1c699f652457365bf2fc4fa2c5c63d6c4349b03cb46d633d7a2655c5da4b900a09610200850152600080516020615a46833981519152610d187f19277f31ecb5bfe8604677099c09556812b0b5c50cceb2b584098183a5a6c5c882615970565b60c0860151089150610d2b846010610c00565b6102008501526101a0840151600080516020615a46833981519152907f205cdbaf03903a5c23e60eef0df90673bc65a25762694c501e3281153b4e588a09610220850152600080516020615a46833981519152610da87f082a7bd4c0a7e4352229d332c27a160da18f0d7c651f3047df41b80345532f6e82615970565b60c0860151089150610dbb846011610c00565b6102208501526101a0840151600080516020615a46833981519152907f27db73b1a831278e143aab90091db38afdea3294c4ba05d1c697a392eb09cc7909610240850152600080516020615a46833981519152610e387f26501ebfe559ea5826f023d3e76e4b66f170cd940408eb5590a4075c80b498d682615970565b60c0860151089150610e4b846012610c00565b6102408501526101a0840151600080516020615a46833981519152907f0204822d629ab653697f028f5fa17d23ac2ba08c60c7112d98ebd28f325f0af609610260850152600080516020615a46833981519152610ec87f0d5eb4c216db2c3262de3f6a2ef71a9be95ff21a7a1a50ed069d6131e7d54e5f82615970565b60c0860151089150610edb846013610c00565b6102608501526101a0840151600080516020615a46833981519152907f2622622a60c0d9327ccf066a0f1fce13c48601b976affd1f41c2a72a9f77da6409610280850152600080516020615a46833981519152610f587f24a1fcd63e9f03b27281db85fe631ec8e5c466f8178a4ee94d4942b7ccd90e1c82615970565b60c0860151089150610f6b846014610c00565b6102808501526102008401516101e0850151600080516020615a468339815191529190089150600080516020615a46833981519152846011602002015183089150600080516020615a46833981519152846012602002015183089150600080516020615a46833981519152846013602002015183086101e085015261103c8b8b604a818110610ffc57610ffc615856565b905060200201358c8c604881811061101657611016615856565b905060200201358d8d604981811061103057611030615856565b905060200201356150f0565b915061107b8b8b604b81811061105457611054615856565b905060200201358c8c604381811061106e5761106e615856565b90506020020135846150f0565b91506110ad8b8b604c81811061109357611093615856565b905060200201358c8c604481811061106e5761106e615856565b91506110df8b8b604d8181106110c5576110c5615856565b905060200201358c8c604581811061106e5761106e615856565b91506111118b8b604e8181106110f7576110f7615856565b905060200201358c8c604681811061106e5761106e615856565b91506111438b8b604f81811061112957611129615856565b905060200201358c8c604781811061106e5761106e615856565b610200850152600080516020615a468339815191528b8b604481811061116b5761116b615856565b905060200201358c8c604381811061118557611185615856565b905060200201350991506111ca8b8b60508181106111a5576111a5615856565b9050602002013583866010605481106111c0576111c0615856565b60200201516150f0565b610200850152600080516020615a468339815191528b8b60468181106111f2576111f2615856565b905060200201358c8c604581811061120c5761120c615856565b9050602002013509915061122c8b8b60518181106111a5576111a5615856565b610200850152600080516020615a468339815191528b8b606181811061125457611254615856565b90506020020135600080516020615a468339815191526112749190615970565b6001089150600080516020615a468339815191528285600e602002015109610220850152600080516020615a468339815191528b8b60648181106112ba576112ba615856565b905060200201358c8c60648181106112d4576112d4615856565b90506020020135099150600080516020615a468339815191528b8b606481811061130057611300615856565b90506020020135600080516020615a468339815191526113209190615970565b83089150600080516020615a4683398151915282856014602002015109610240850152600080516020615a468339815191528b8b606381811061136557611365615856565b90506020020135600080516020615a468339815191526113859190615970565b8c8c606481811061139857611398615856565b90506020020135089150600080516020615a4683398151915284600e6020020151830961026085015260c08401516060850151600080516020615a468339815191529190096102a08501526101e0840151610280850151600080516020615a468339815191529190089150600080516020615a4683398151915261142a83600080516020615a46833981519152615970565b6001086101e08501526080840151600080516020615a46833981519152908c8c604381811061145b5761145b615856565b90506020020135086102c08501526114a68b8b605b81811061147f5761147f615856565b905060200201358560036054811061149957611499615856565b60200201518660166111c0565b9150600080516020615a468339815191528b8b60628181106114ca576114ca615856565b9050602002013583096102e08501526102a08401516102c0850151600080516020615a468339815191529190089150600080516020615a468339815191528b8b606181811061151b5761151b615856565b9050602002013583096102c08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526080840151600080516020615a46833981519152908c8c604481811061159057611590615856565b90506020020135086103208501526115db8b8b605c8181106115b4576115b4615856565b90506020020135856003605481106115ce576115ce615856565b60200201518660196111c0565b9150600080516020615a46833981519152846017602002015183096102e0850152610300840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846016602002015183096102c0850152610300840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526080840151600080516020615a46833981519152908c8c60458181106116a1576116a1615856565b90506020020135086103208501526116c58b8b605d8181106115b4576115b4615856565b9150600080516020615a46833981519152846017602002015183096102e0850152610300840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846016602002015183096102c0850152610300840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526102c0840151600080516020615a46833981519152906117839082615970565b6102e0860151089150600080516020615a4683398151915284600f602002015183096102c08501526102a0840151600080516020615a46833981519152907f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5290096102a08501526080840151600080516020615a46833981519152908c8c604681811061181257611812615856565b90506020020135086102e085015261185d8b8b605e81811061183657611836615856565b905060200201358560036054811061185057611850615856565b60200201518660176111c0565b9150600080516020615a468339815191528b8b606581811061188157611881615856565b9050602002013583096103008501526102a08401516102e0850151600080516020615a468339815191529190089150600080516020615a468339815191528b8b60648181106118d2576118d2615856565b9050602002013583096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526080840151600080516020615a46833981519152908c8c604781811061194757611947615856565b905060200201350861032085015261196b8b8b605f8181106115b4576115b4615856565b9150600080516020615a46833981519152846018602002015183096103008501526102a0840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846017602002015183096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526080840151600080516020615a46833981519152908c8c6042818110611a3157611a31615856565b9050602002013508610320850152611a558b8b60608181106115b4576115b4615856565b9150600080516020615a46833981519152846018602002015183096103008501526102a0840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846017602002015183096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526102e0840151600080516020615a4683398151915290611b139082615970565b610300860151089150600080516020615a4683398151915284600f602002015183096102a08501526060840151600080516020615a46833981519152908c8c6068818110611b6357611b63615856565b90506020020135089150600080516020615a46833981519152828c8c6067818110611b9057611b90615856565b90506020020135096102e08501526080840151600080516020615a46833981519152908c8c606a818110611bc657611bc6615856565b90506020020135089150600080516020615a46833981519152828560176020020151096102e0850152600080516020615a468339815191528b8b6052818110611c1157611c11615856565b905060200201358c8c6043818110611c2b57611c2b615856565b90506020020135096103008501526040840151600080516020615a468339815191529060000960408501819052610300850151600080516020615a468339815191529108610300850152600080516020615a468339815191528b8b6053818110611c9757611c97615856565b9050602002013585600260548110611cb157611cb1615856565b602002015108610320850152600080516020615a468339815191528b8b606a818110611cdf57611cdf615856565b90506020020135600080516020615a46833981519152611cff9190615970565b8c8c6068818110611d1257611d12615856565b9050602002013508610340850152600080516020615a468339815191528b8b6066818110611d4257611d42615856565b90506020020135600080516020615a46833981519152611d629190615970565b6001089150600080516020615a468339815191528285600e602002015109610360850152600080516020615a468339815191528b8b6066818110611da857611da8615856565b905060200201358c8c6066818110611dc257611dc2615856565b90506020020135099150600080516020615a468339815191528b8b6066818110611dee57611dee615856565b90506020020135600080516020615a46833981519152611e0e9190615970565b83089150600080516020615a46833981519152828560146020020151096103808501526060840151610300850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c6066818110611e7357611e73615856565b90506020020135096103008501526080840151610320850151600080516020615a468339815191529190086103208501819052610300850151600080516020615a468339815191529190099150600080516020615a46833981519152611ee783600080516020615a46833981519152615970565b6102e0860151089150600080516020615a4683398151915284600f602002015183096102e08501526103408401516101c0850151600080516020615a46833981519152919009610300850152600080516020615a468339815191528b8b6069818110611f5557611f55615856565b90506020020135600080516020615a46833981519152611f759190615970565b8c8c6068818110611f8857611f88615856565b90506020020135089150600080516020615a468339815191528285601a6020020151099150600080516020615a4683398151915284600f602002015183096103408501526060840151600080516020615a46833981519152908c8c606d818110611ff457611ff4615856565b90506020020135089150600080516020615a46833981519152828c8c606c81811061202157612021615856565b90506020020135096103a08501526080840151600080516020615a46833981519152908c8c606f81811061205757612057615856565b90506020020135089150600080516020615a468339815191528285601d6020020151096103a08501526120ca8b8b605281811061209657612096615856565b905060200201358c8c60448181106120b0576120b0615856565b90506020020135866002605481106111c0576111c0615856565b6103c0850152600080516020615a468339815191528b8b606f8181106120f2576120f2615856565b90506020020135600080516020615a468339815191526121129190615970565b8c8c606d81811061212557612125615856565b90506020020135086103e0850152600080516020615a468339815191528b8b606b81811061215557612155615856565b90506020020135600080516020615a468339815191526121759190615970565b6001089150600080516020615a468339815191528285600e602002015109610400850152600080516020615a468339815191528b8b606b8181106121bb576121bb615856565b905060200201358c8c606b8181106121d5576121d5615856565b90506020020135099150600080516020615a468339815191528b8b606b81811061220157612201615856565b90506020020135600080516020615a468339815191526122219190615970565b83089150600080516020615a468339815191528285601460200201510961042085015260608401516103c0850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c606b81811061228657612286615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a468339815191526122d283600080516020615a46833981519152615970565b6103a0860151089150600080516020615a4683398151915284600f602002015183096103a08501526103e08401516101c0850151600080516020615a468339815191529190096103c0850152600080516020615a468339815191528b8b606e81811061234057612340615856565b90506020020135600080516020615a468339815191526123609190615970565b8c8c606d81811061237357612373615856565b90506020020135089150600080516020615a468339815191528285601f6020020151099150600080516020615a4683398151915284600f602002015183096103e08501526060840151600080516020615a46833981519152908c8c60728181106123df576123df615856565b90506020020135089150600080516020615a46833981519152828c8c607181811061240c5761240c615856565b90506020020135096104408501526080840151600080516020615a46833981519152908c8c607481811061244257612442615856565b90506020020135089150600080516020615a468339815191528285602260200201510961044085015261249b8b8b605281811061248157612481615856565b905060200201358c8c60458181106120b0576120b0615856565b610460850152600080516020615a468339815191528b8b60748181106124c3576124c3615856565b90506020020135600080516020615a468339815191526124e39190615970565b8c8c60728181106124f6576124f6615856565b9050602002013508610480850152600080516020615a468339815191528b8b607081811061252657612526615856565b90506020020135600080516020615a468339815191526125469190615970565b6001089150600080516020615a468339815191528285600e6020020151096104a0850152600080516020615a468339815191528b8b607081811061258c5761258c615856565b905060200201358c8c60708181106125a6576125a6615856565b90506020020135099150600080516020615a468339815191528b8b60708181106125d2576125d2615856565b90506020020135600080516020615a468339815191526125f29190615970565b83089150600080516020615a46833981519152828560146020020151096104c08501526060840151610460850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607081811061265757612657615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a468339815191526126a383600080516020615a46833981519152615970565b610440860151089150600080516020615a4683398151915284600f602002015183096104408501526104808401516101c0850151600080516020615a46833981519152919009610460850152600080516020615a468339815191528b8b607381811061271157612711615856565b90506020020135600080516020615a468339815191526127319190615970565b8c8c607281811061274457612744615856565b90506020020135089150600080516020615a46833981519152828560246020020151099150600080516020615a4683398151915284600f602002015183096104808501526060840151600080516020615a46833981519152908c8c60778181106127b0576127b0615856565b90506020020135089150600080516020615a46833981519152828c8c60768181106127dd576127dd615856565b90506020020135096104e08501526080840151600080516020615a46833981519152908c8c607981811061281357612813615856565b90506020020135089150600080516020615a46833981519152828560276020020151096104e085015261286c8b8b605281811061285257612852615856565b905060200201358c8c60468181106120b0576120b0615856565b610500850152600080516020615a468339815191528b8b607981811061289457612894615856565b90506020020135600080516020615a468339815191526128b49190615970565b8c8c60778181106128c7576128c7615856565b9050602002013508610520850152600080516020615a468339815191528b8b60758181106128f7576128f7615856565b90506020020135600080516020615a468339815191526129179190615970565b6001089150600080516020615a468339815191528285600e602002015109610540850152600080516020615a468339815191528b8b607581811061295d5761295d615856565b905060200201358c8c607581811061297757612977615856565b90506020020135099150600080516020615a468339815191528b8b60758181106129a3576129a3615856565b90506020020135600080516020615a468339815191526129c39190615970565b83089150600080516020615a46833981519152828560146020020151096105608501526060840151610500850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c6075818110612a2857612a28615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a46833981519152612a7483600080516020615a46833981519152615970565b6104e0860151089150600080516020615a4683398151915284600f602002015183096103208501526105208401516101c0850151600080516020615a468339815191529190096104e0850152600080516020615a468339815191528b8b6078818110612ae257612ae2615856565b90506020020135600080516020615a46833981519152612b029190615970565b8c8c6077818110612b1557612b15615856565b90506020020135089150600080516020615a46833981519152828560296020020151099150600080516020615a4683398151915284600f602002015183096105008501526060840151600080516020615a46833981519152908c8c607c818110612b8157612b81615856565b90506020020135089150600080516020615a46833981519152828c8c607b818110612bae57612bae615856565b90506020020135096105208501526080840151600080516020615a46833981519152908c8c607e818110612be457612be4615856565b90506020020135089150600080516020615a4683398151915282856029602002015109610520850152612c3d8b8b6054818110612c2357612c23615856565b905060200201358c8c60438181106120b0576120b0615856565b610580850152600080516020615a468339815191528b8b6055818110612c6557612c65615856565b9050602002013585600260548110612c7f57612c7f615856565b6020020151086105a0850152600080516020615a468339815191528b8b607e818110612cad57612cad615856565b90506020020135600080516020615a46833981519152612ccd9190615970565b8c8c607c818110612ce057612ce0615856565b90506020020135086105c0850152600080516020615a468339815191528b8b607a818110612d1057612d10615856565b90506020020135600080516020615a46833981519152612d309190615970565b6001089150600080516020615a468339815191528285600e6020020151096105e0850152600080516020615a468339815191528b8b607a818110612d7657612d76615856565b905060200201358c8c607a818110612d9057612d90615856565b90506020020135099150600080516020615a468339815191528b8b607a818110612dbc57612dbc615856565b90506020020135600080516020615a46833981519152612ddc9190615970565b83089150600080516020615a46833981519152828560146020020151096106008501526060840151610580850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607a818110612e4157612e41615856565b905060200201350961058085015260808401516105a0850151600080516020615a468339815191529190089150600080516020615a468339815191528285602c6020020151099150600080516020615a46833981519152612eb083600080516020615a46833981519152615970565b610520860151089150600080516020615a4683398151915284600f602002015183096105208501526105c08401516101c0850151600080516020615a46833981519152919009610580850152600080516020615a468339815191528b8b607d818110612f1e57612f1e615856565b90506020020135600080516020615a46833981519152612f3e9190615970565b8c8c607c818110612f5157612f51615856565b90506020020135089150600080516020615a468339815191528285602e6020020151099150600080516020615a4683398151915284600f602002015183096105a08501526060840151600080516020615a46833981519152908c8c6081818110612fbd57612fbd615856565b90506020020135089150600080516020615a46833981519152828c8c6080818110612fea57612fea615856565b90506020020135096105c08501526080840151600080516020615a46833981519152908c8c608381811061302057613020615856565b90506020020135089150600080516020615a468339815191528285602e6020020151096105c085015261305f8b8b6056818110612c2357612c23615856565b610620850152600080516020615a468339815191528b8b605781811061308757613087615856565b90506020020135856002605481106130a1576130a1615856565b602002015108610640850152600080516020615a468339815191528b8b60838181106130cf576130cf615856565b90506020020135600080516020615a468339815191526130ef9190615970565b8c8c608181811061310257613102615856565b9050602002013508610660850152600080516020615a468339815191528b8b607f81811061313257613132615856565b90506020020135600080516020615a468339815191526131529190615970565b6001089150600080516020615a468339815191528285600e602002015109610680850152600080516020615a468339815191528b8b607f81811061319857613198615856565b905060200201358c8c607f8181106131b2576131b2615856565b90506020020135099150600080516020615a468339815191528b8b607f8181106131de576131de615856565b90506020020135600080516020615a468339815191526131fe9190615970565b83089150600080516020615a46833981519152828560146020020151096106a08501526060840151610620850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607f81811061326357613263615856565b90506020020135096106208501526080840151610640850151600080516020615a468339815191529190089150600080516020615a46833981519152828560316020020151099150600080516020615a468339815191526132d283600080516020615a46833981519152615970565b6105c0860151089150600080516020615a4683398151915284600f602002015183096105c08501526106608401516101c0850151600080516020615a46833981519152919009610620850152600080516020615a468339815191528b8b608281811061334057613340615856565b90506020020135600080516020615a468339815191526133609190615970565b8c8c608181811061337357613373615856565b90506020020135089150600080516020615a46833981519152828560336020020151099150600080516020615a4683398151915284600f602002015183096106408501526060840151600080516020615a46833981519152908c8c60868181106133df576133df615856565b90506020020135089150600080516020615a46833981519152828c8c608581811061340c5761340c615856565b90506020020135096106608501526080840151600080516020615a46833981519152908c8c608881811061344257613442615856565b90506020020135089150600080516020615a46833981519152828560336020020151096106608501526134818b8b6058818110612c2357612c23615856565b6106c0850152600080516020615a468339815191528b8b60598181106134a9576134a9615856565b90506020020135856002605481106134c3576134c3615856565b6020020151086040850152600080516020615a468339815191528b8b60888181106134f0576134f0615856565b90506020020135600080516020615a468339815191526135109190615970565b8c8c608681811061352357613523615856565b90506020020135086106e0850152600080516020615a468339815191528b8b608481811061355357613553615856565b90506020020135600080516020615a468339815191526135739190615970565b6001089150600080516020615a468339815191528285600e602002015109610700850152600080516020615a468339815191528b8b60848181106135b9576135b9615856565b905060200201358c8c60848181106135d3576135d3615856565b90506020020135099150600080516020615a468339815191528b8b60848181106135ff576135ff615856565b90506020020135600080516020615a4683398151915261361f9190615970565b83089150600080516020615a468339815191528285601460200201510961028085015260608401516106c0850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c608481811061368457613684615856565b9050602002013509606085015260808401516040850151600080516020615a468339815191529190089150600080516020615a46833981519152828560036020020151099150600080516020615a468339815191526136f183600080516020615a46833981519152615970565b610660860151089150600080516020615a4683398151915284600f6020020151830960408501526106e08401516101c0850151600080516020615a468339815191529190096060850152600080516020615a468339815191528b8b608781811061375d5761375d615856565b90506020020135600080516020615a4683398151915261377d9190615970565b8c8c608681811061379057613790615856565b90506020020135089150600080516020615a46833981519152828560376020020151099150600080516020615a4683398151915284600f60200201518309608085015260a08401516137e69060008660106111c0565b915061381b8480600560200201517f35342d2c29302f2827192b2a24232226251f1e1d21201a18171c1b15161312118561511d565b915061383984806005602002015168ff040302143832312e8561511d565b915061384c8285600d60200201516150c0565b6040850152610100840151600080516020615a4683398151915290800960608501819052610100850151600080516020615a46833981519152910960808501526138d68b8b608f8181106138a2576138a2615856565b905060200201358c8c60908181106138bc576138bc615856565b905060200201358660046054811061055c5761055c615856565b90925090506138ef848c8c65ffff088b038d86866151a0565b909250905061393282828d8d608981811061390c5761390c615856565b905060200201358e8e608a81811061392657613926615856565b905060200201356152a8565b6101e08601526101c08501526101608401516080850151600080516020615a4683398151915291900960a085015260e08401516080850151600080516020615a46833981519152919009610160850181905260e0850151600080516020615a4683398151915291096101a0850181905260e0850151600080516020615a468339815191529109610200850181905260e0850151600080516020615a468339815191529109610220850181905260e0850151600080516020615a468339815191529109610240850181905260e0850151600080516020615a468339815191529109610260850152600080516020615a468339815191528b8b6087818110613a3a57613a3a615856565b9050602002013585601360548110613a5457613a54615856565b6020020151099150613a75848c8c6bffff0b6e0d731078117d128286615316565b9150613ab28b8b6069818110613a8d57613a8d615856565b9050602002013585600460548110613aa757613aa7615856565b6020020151846150f0565b6102808501526101408401516060850151600080516020615a46833981519152919009610140850152613b188b8b6063818110613af157613af1615856565b9050602002013585600360548110613b0b57613b0b615856565b60200201518660146111c0565b610280850152610120840151610100850151600080516020615a4683398151915291900961012085015260e0840151610100850151600080516020615a468339815191529190096102a0850152600091505b6008821015613c1957600080516020615a4683398151915284613b8e8460006158fb565b613b999060076158b4565b60548110613ba957613ba9615856565b602002015185613bba8560016158fb565b613bc59060156158b4565b60548110613bd557613bd5615856565b60200201510984613be78460016158fb565b613bf29060166158b4565b60548110613c0257613c02615856565b602002015281613c1181615938565b925050613b6a565b600080516020615a468339815191528b8b6085818110613c3b57613c3b615856565b9050602002013585601d60548110613c5557613c55615856565b6020020151099150613c7e848c8c73ffff0848156216651767186c19711a761b7b1c8086615316565b9150600080516020615a46833981519152828560146020020151086102808501526102a08401516060850151600080516020615a46833981519152919008606085015260e0840151600080516020615a468339815191529080096102a0850181905260e0850151600080516020615a4683398151915291096103c0850152600091505b6032821015613db057600080516020615a4683398151915284613d258460006158fb565b613d309060076158b4565b60548110613d4057613d40615856565b602002015185613d518560016158fb565b613d5c90601e6158b4565b60548110613d6c57613d6c615856565b60200201510984613d7e8460016158fb565b613d8990601f6158b4565b60548110613d9957613d99615856565b602002015281613da881615938565b925050613d01565b600080516020615a468339815191528b8b605a818110613dd257613dd2615856565b9050602002013585605060548110613dec57613dec615856565b602002015109610a208501526101808401516109e0850151600080516020615a46833981519152919009610a408501819052610180850151600080516020615a468339815191529109610a608501819052610180850151600080516020615a4683398151915291096101808501526109e08401516040850151613e7291908660516111c0565b9150613ea1848c8c7f3f50405141524253435444554556465747584859495b4a5c4b5d4c5e4d5f4e6086615316565b9150613ed0848c8c7f2f7a307c317e327f338134833584368637883849394a3a4b3b4c3c4d3d4e3e4f86615316565b9150613eff848c8c7f1f4620472161226423662468256a266b276d286f29702a722b742c752d772e7986615316565b9150613f16848c8c67ffff074315441e4586615316565b9150600080516020615a468339815191528b8b6042818110613f3a57613f3a615856565b9050602002013583089150600080516020615a468339815191528285601460200201510860408501526106c0840151610260850151600080516020615a468339815191529190086102608501526106a08401516103a0850151600080516020615a46833981519152919008610280850152610660840151610240850151600080516020615a46833981519152919008610240850152610640840151610380850151600080516020615a46833981519152919008610380850152610600840151610220850151600080516020615a468339815191529190086102208501526105e0840151610360850151600080516020615a468339815191529190086103608501526105a0840151610200850151600080516020615a46833981519152919008610200850152610580840151610340850151600080516020615a468339815191529190086103408501526105408401516101a0850151600080516020615a468339815191529190086101a0850152610520840151610320850151600080516020615a468339815191529190086103208501526104e0840151610160850151600080516020615a468339815191529190086101608501526104c0840151610300850151600080516020615a468339815191529190086103008501526104808401516080850151600080516020615a4683398151915291900860808501526104608401516102e0850151600080516020615a468339815191529190086102e08501526104408401516102c0850151600080516020615a468339815191529190086102c08501526104208401516060850151600080516020615a468339815191529190086060850152610400840151610100850151600080516020615a4683398151915291900861010085015261420d8b8b608f8181106141d9576141d9615856565b905060200201358c8c60908181106141f3576141f3615856565b905060200201358660056054811061055c5761055c615856565b9092509050614240848c8c7f182c192e1a301b321c341436098b03260a8d040a0b0e0d121016111a121e132286866151a0565b9092509050614267848c8c73ffff4f3a523c533e0c405038068908081628172a86866151a0565b90925090506142b97f22cbc20a434be99c890d0fbf8c441feaf0dfb2178561a82783b0e74fad5d91eb7f186f16fd4e05464ed8a90fea4fac4fa3a80944bcaf19d9f536f8a67e301e75f386604e6105b4565b909250905061430b7f034336e9ed495c46a1c3ca745bad166bbb675c8ee31092792d0b3d435d3da0a77f120d0016a186defe5e27918247f5fb2c6f578d8ed259080a6a91ed9e503bc79c86604d6105b4565b909250905061435d7f2c4cbb935d4c9990fcaae8d9b0a244ee3f5327a7ca816aa58a58a40c8e00457e7f130d42ccd64a2e29acce747d0e976a363ab4b22f78b8a11b13ca81cf3549943986604c6105b4565b90925090506143af7f05ba13020527a88585e1f01f1d23dd68ee0d64cad4dcb82fce758883bafc1ef27f01696dcfadbe9736c07870ef063e349b30fddbd9ce85ccc7f7b19d1b18ddaf4b86604b6105b4565b90925090506144017f1adae7001a26c1f2f5640d6c60724b413dc22ae2ed96aaaccc659021a3ae1a307f2e6ff83e2f71937c1be92fe36ad1280cb68bcdf07699ee52e4d5540fef5a4bf386604a6105b4565b90925090506144537f1b9a33b5b4544142fd3f804b5f9457c34a4ff7da0852efc4b8d4241954ef859b7f2dc9f73c2504de7a2996b6c20aac9e53a6d6bee0e32ccdd44562c3498bd57a4e8660496105b4565b90925090506144a57f2bf75d9dd944249cd720ee71585980774cb83905b860feb5af3da42ca043b1157f07b4ff44a8e4250bf3ce16c06e8430b585a7a1e85243febe565a7929db37cc9f8660486105b4565b90925090506144f77f2444b554a3ef28ed5743cf5883acf229c2d774bf5076626197ca3093666a7fe57f2f54a38842d7fb7870618b48df360608f1a801e01dfa34b49e5964dc43f989bf8660476105b4565b90925090506145497f25d344a083be7e69cb907b8705b3bab3417d4a23f06d43ca7b287028a88ec5837f2c03f591ec6858cdff27cadaac1a67a1dc9ab7877f898686efe7033e7fd02a168660466105b4565b909250905061459b7f2fd1b96dd6e1ac88d9b5d438bace1ce6e7fe07412454779502af65284fef7e227f2fe224e0009d4ab99131c7c1cc045d0d0d7a50d6757fc12e4cfd720abc066d058660456105b4565b90925090506145ed7f2bf75d9dd944249cd720ee71585980774cb83905b860feb5af3da42ca043b1157f07b4ff44a8e4250bf3ce16c06e8430b585a7a1e85243febe565a7929db37cc9f8660446105b4565b909250905061463f7f1969a5f2f2d86eecccfdee75c39368f79759667bf445eed2f9d2d72c859011bf7f055449f64bace3dadff58d914f1647a98729c5476b53b66f1ff472b9537d183c8660436105b4565b90925090506146917f2fd08ae291ca0c95ada3f562b9f9be896737fd57493c4cefa087979abda4d2d67f04a6506069e2d39e944abcc54e70e881ccdd429ed4c1017fbe1099efeb70465f8660426105b4565b90925090506146e37f0ce55ceb7e62f5d45b387d78d357bc9a8423737e1c47b079a6cd4b64748aca117f2f92a53112cbb38374218eafba1349b77d3647f0423a3b48c8cc622f53c9c3e48660416105b4565b90925090506147357f229f748a69bee4ae7fdc62af12994ec2bd7f47b607216d282cc1f96054dac0787f015e9c5665a513c49920a46fbf7e607586f5b394f7487e045d45e99b7104f4778660406105b4565b90925090506147877f1fbdd7e6e58f01eb5a63b5922c2c6babed9c93d98d28363d97f78cd474cd4f1a7f23a726f04321315f0a8d73d3b596905c3e72eb5a899bd281f18abf3d674d1cfe86603f6105b4565b90925090506147d97f250ebdee646f64bb4af9f5f55fd76ae257408de7f0786f4817032e2581aeb8477f0ec875e3938bc9be9eab457a7d1655c96e5573e0d5c047692c45c3e4eaaa5a4386603e6105b4565b909250905061482b7f2617cd43f1512cc7ec9c2b728bbf4cf18de4b4f30912c811a6bd6d7a90eb35807f0c6dd39b0cb2bde148a8aa1dd84b71f6e47365a1cd726b8428c166e2d6f9e2d886603d6105b4565b909250905061487d7f24f6a4c5ff09d31cca15502ee379d50685bfe70be297201f44d4d967deb8be147f13e3df7f2f1cd670e9f473583298014f5286eb1f2402750ece5f75825484678286603c6105b4565b90925090506148cf7f0102612ad204a0291df816e0cbd8bfb60d03a26493db681420f83add5da28c3e7f0a229f00ff3a8cfce146e4c3ab5447e9d300c83f88e2072c860e05da3b9d60cc86603b6105b4565b90925090506149217f138c357f0a9847d66feca030756c854971c8783fb6a2c2547db480cda037781c7f2c03ebe8c2606106b122920dfe0a42293421ddff6bd205db46eacc956ff2a8a186603a6105b4565b90925090506149737f04a6e8bdc030c8594e55d7fb89399e76dba4d5e9bf60fb6e1fbdb2c0ffed69267f1094abfe954af52dbe746c8cf9aaabad56aa7e4da6a9294a1736fe685fee312f8660396105b4565b90925090506149c57f175a2d1aaf07ee184a955e35f3deac123ef1088b68c38bace37056dcfc9d304d7f150856c3d1750c2578b823cb3c7d74ed3e94c1cfece7e1bfdaaff36eea788fb98660386105b4565b90925090506149f0848c8c77ffff070015021e041f06250c28102b142e18311c3420372486866151a0565b85516020870151929450909250614a0a91849184916152a8565b60208601528452614a1f60016002868161055c565b85516020870151929450909250614a379184846153b8565b602086018190528186526101c08601516101e090960151959d959c50909a509850929650505050505050565b614a6b61562a565b80517f186282957db913abd99f91db59fe69922e95040603ef44c0bd7aa3adeef8f5ac905280517f17944351223333f260ddc3b4af45191b856689eda9eab5cbcddbbe570ce860d2602091820152810180517f298adc7396bd3865cbf6d6df91bae406694e6d2215baa893bdeadb63052895f49052517f297772d34bc9aa8ae56162486363ffe417b02dc7e8c207fc2cc20203e67a02ad9060015b602002015290565b614b1661562a565b80517f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2905280517f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602091820152810180517f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec9052517f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d906001614b06565b60008083516006614bc691906158fb565b905060008167ffffffffffffffff811115614be357614be36158cc565b604051908082528060200260200182016040528015614c0c578160200160208202803683370190505b509050614c1761568d565b60008551875114614c2757600080fd5b60005b8751811015614e6057878181518110614c4557614c45615856565b60200260200101516000015184826006614c5f91906158fb565b614c6a9060006158b4565b81518110614c7a57614c7a615856565b602002602001018181525050878181518110614c9857614c98615856565b60200260200101516020015184826006614cb291906158fb565b614cbd9060016158b4565b81518110614ccd57614ccd615856565b602002602001018181525050868181518110614ceb57614ceb615856565b6020908102919091010151515184614d048360066158fb565b614d0f9060026158b4565b81518110614d1f57614d1f615856565b602002602001018181525050868181518110614d3d57614d3d615856565b60209081029190910181015151015184614d588360066158fb565b614d639060036158b4565b81518110614d7357614d73615856565b602002602001018181525050868181518110614d9157614d91615856565b602002602001015160200151600060028110614daf57614daf615856565b602002015184614dc08360066158fb565b614dcb9060046158b4565b81518110614ddb57614ddb615856565b602002602001018181525050868181518110614df957614df9615856565b602002602001015160200151600160028110614e1757614e17615856565b602002015184614e288360066158fb565b614e339060056158b4565b81518110614e4357614e43615856565b602090810291909101015280614e5881615938565b915050614c2a565b50602082602086026020860160085afa905080614e7c57600080fd5b5051151595945050505050565b600080614e946156ab565b6000614eb3604051806040016040528060008152602001600081525090565b8783526020830187905260408084018790528160608560075afa915081614ed957600080fd5b8051602090910151909890975095505050505050565b600080614efa6156c9565b87815260208101879052604081018690526060810185905260808101849052614f22816153fd565b6060810151608090910151909890975095505050505050565b60028282614f4881615938565b935060908110614f5a57614f5a615856565b6020020152828282614f6b81615938565b935060908110614f7d57614f7d615856565b6020020152505050565b60018282614f9481615938565b935060908110614fa657614fa6615856565b6020020152838282614fb781615938565b935060908110614fc957614fc9615856565b6020020152828282614fda81615938565b935060908110614fec57614fec615856565b602002015250505050565b600080838363ffffffff166090811061501257615012615856565b60200201818152505060006150448484602061502e9190615987565b6150399060016159b3565b63ffffffff16615438565b5190506150508161546e565b93525090919050565b600061506361560c565b61506b61568d565b6020808352828101819052604083018190526060830186905260808301859052600080516020615a4683398151915260a08401526000908260c08560055afa9050806150b657600080fd5b5051949350505050565b6000816000036150cf57600080fd5b600080516020615a468339815191526150e7836155e2565b84099392505050565b6000600080516020615a4683398151915282600080516020615a4683398151915285870908949350505050565b6000805b60208110156151965760ff80851690811461517d5760089490941c93600080516020615a4683398151915287826054811061515e5761515e615856565b6020020151600080516020615a46833981519152868909089350615183565b50615196565b5061518f6001826158b4565b9050615121565b5090949350505050565b6000806151ab6156c9565b606081018590526080810184905260005b602081101561528d5760ff80881690811461527457601088901c9760081c60ff168a8a838181106151ef576151ef615856565b905060200201358460006005811061520957615209615856565b60200201528a8a61521b8460016158b4565b81811061522a5761522a615856565b905060200201358460016005811061524457615244615856565b60200201528b816054811061525b5761525b615856565b6020020151604085015261526e846153fd565b5061527a565b5061528d565b506152866002826158b4565b90506151bc565b50606081015160809091015190999098509650505050505050565b60008060006152ca604051806040016040528060008152602001600081525090565b6152d26156e7565b888152602081018890526040808201889052606082018790528260808360065afa9250826152ff57600080fd5b508051602090910151909890975095505050505050565b6000805b60208110156153ad5760ff80851690811461539457601085901c9460081c60ff16600080516020615a4683398151915285600080516020615a468339815191528b846054811061536c5761536c615856565b60200201518b8b8781811061538357615383615856565b90506020020135090894505061539a565b506153ad565b506153a66002826158b4565b905061531a565b509095945050505050565b6000806153f08686866153eb877f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47615970565b6152a8565b9150915094509492505050565b600060406020830160608460075afa90508061541857600080fd5b60406060830160806020850160065afa90508061543457600080fd5b5050565b61544061568d565b6000602082848660026107d05a03fa9050808061545957fe5b5080615467576154676159db565b5092915050565b6000816155c18160008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b6040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c179050608081901b608082901c179050919050565b90506155db600080516020615a4683398151915282615a0a565b9392505050565b6000615606826156016002600080516020615a46833981519152615970565b615059565b92915050565b6040518060c001604052806006906020820280368337509192915050565b604051806040016040528061563d615705565b815260200161564a615705565b905290565b60405180610a8001604052806054906020820280368337509192915050565b6040518061120001604052806090906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60008083601f84011261573557600080fd5b50813567ffffffffffffffff81111561574d57600080fd5b6020830191508360208260051b850101111561576857600080fd5b9250929050565b60008060008060006060868803121561578757600080fd5b853567ffffffffffffffff8082111561579f57600080fd5b6157ab89838a01615723565b909750955060208801359150808211156157c457600080fd5b506157d188828901615723565b96999598509660400135949350505050565b600060208083528351808285015260005b81811015615810578581018301518582016040015282016157f4565b81811115615822576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156158c7576158c7615885565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561593357615933615885565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361596957615969615885565b5060010190565b60008282101561598257615982615885565b500390565b600063ffffffff808316818516818304811182151516156159aa576159aa615885565b02949350505050565b600063ffffffff8083168185168083038211156159d2576159d2615885565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082615a40577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300080f000a", + "key": "0x6ed8898a487b7360c301d9bb5c9175a94d80e63aa3040e16bf5090e89d33b683" + }, + "0x851356ae760d987e095750cceb3bc6014560891c": { + "balance": "0", + "nonce": 1, + "root": "0x18f42320dc346e0ca8c14f343aa0b58d89a8f91c0f3586305be3012b9f81a4e0", + "codeHash": "0x62564e16eea304c90e282e2e5fe98439a1df3985e9255cf90fc00c2492312e13", + "code": "0x6080604052600436106101475760003560e01c80638c3152e9116100c0578063cff0ab9611610074578063e965084c11610059578063e965084c146104b5578063e9e05c4214610541578063f04987501461055457600080fd5b8063cff0ab96146103f4578063d53a822f1461049557600080fd5b8063a14238e7116100a5578063a14238e714610370578063b98debbf146103a0578063c30af388146103d457600080fd5b80638c3152e9146103235780639bf62d821461034357600080fd5b80635865b607116101175780636dbffb78116100fc5780636dbffb78146102ba578063724c184c146102da5780638456cb591461030e57600080fd5b80635865b6071461025c5780635c975abb1461029057600080fd5b80621c2ff6146101735780630757b244146101d15780633f4ba83a146101f157806354fd4d501461020657600080fd5b3661016e5761016c3334620186a0600060405180602001604052806000815250610588565b005b600080fd5b34801561017f57600080fd5b506101a77f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101dd57600080fd5b5061016c6101ec366004614646565b61076e565b3480156101fd57600080fd5b5061016c610e5c565b34801561021257600080fd5b5061024f6040518060400160405280600581526020017f322e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c8919061477f565b34801561026857600080fd5b506101a77f0000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c81565b34801561029c57600080fd5b506035546102aa9060ff1681565b60405190151581526020016101c8565b3480156102c657600080fd5b506102aa6102d5366004614792565b610f65565b3480156102e657600080fd5b506101a77f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c081565b34801561031a57600080fd5b5061016c61103c565b34801561032f57600080fd5b5061016c61033e3660046147ab565b611141565b34801561034f57600080fd5b506032546101a79073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037c57600080fd5b506102aa61038b366004614792565b60336020526000908152604090205460ff1681565b3480156103ac57600080fd5b506101a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b3480156103e057600080fd5b5061016c6103ef366004614805565b61190f565b34801561040057600080fd5b5060015461045c906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101c8565b3480156104a157600080fd5b5061016c6104b0366004614873565b611a6d565b3480156104c157600080fd5b506105136104d0366004614792565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101c8565b61016c61054f366004614890565b610588565b34801561056057600080fd5b506101a77f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b8260005a905083156106235773ffffffffffffffffffffffffffffffffffffffff8716156106235760405162461bcd60e51b815260206004820152603d60248201527f4b726f6d61506f7274616c3a206d7573742073656e6420746f2061646472657360448201527f73283029207768656e206372656174696e67206120636f6e747261637400000060648201526084015b60405180910390fd5b6152088567ffffffffffffffff1610156106a55760405162461bcd60e51b815260206004820152603560248201527f4b726f6d61506f7274616c3a20676173206c696d6974206d75737420636f766560448201527f7220696e737472696e7369632067617320636f73740000000000000000000000606482015260840161061a565b333281146106c6575033731111000000000000000000000000000000001111015b600034888888886040516020016106e195949392919061490d565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c3284604051610751919061477f565b60405180910390a450506107658282611c5c565b50505050505050565b60355460ff16156107c15760405162461bcd60e51b815260206004820152601360248201527f4b726f6d61506f7274616c3a2070617573656400000000000000000000000000604482015260640161061a565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff16036108665760405162461bcd60e51b815260206004820152603c60248201527f4b726f6d61506f7274616c3a20796f752063616e6e6f742073656e64206d657360448201527f736167657320746f2074686520706f7274616c20636f6e747261637400000000606482015260840161061a565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa1580156108f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109189190614992565b60200151905061093561093036869003860186614a0a565b611f6f565b81146109a95760405162461bcd60e51b815260206004820152602660248201527f4b726f6d61506f7274616c3a20696e76616c6964206f757470757420726f6f7460448201527f2070726f6f660000000000000000000000000000000000000000000000000000606482015260840161061a565b60006109b487612011565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610ae95750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190614992565b6020015114155b610b5b5760405162461bcd60e51b815260206004820152603460248201527f4b726f6d61506f7274616c3a207769746864726177616c20686173682068617360448201527f20616c7265616479206265656e2070726f76656e000000000000000000000000606482015260840161061a565b604080516020808201859052600082840152825180830384018152606090920190925280519101206080870135610c6b57610bf481604051602001610ba291815260200190565b60408051601f19818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610bea888a614a7a565b8a60400135612041565b610c665760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a20696e76616c6964207769746864726177616c2060448201527f696e636c7573696f6e2070726f6f660000000000000000000000000000000000606482015260840161061a565b610d9a565b604080517f12e64a7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c16916312e64a7291610ce79185918b918b91908e013590600401614b29565b602060405180830381865afa158015610d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d289190614c2a565b610d9a5760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a20696e76616c6964207769746864726177616c2060448201527f696e636c7573696f6e2070726f6f660000000000000000000000000000000000606482015260840161061a565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c01614610f075760405162461bcd60e51b815260206004820152602660248201527f4b726f6d61506f7274616c3a206f6e6c7920677561726469616e2063616e207560448201527f6e70617573650000000000000000000000000000000000000000000000000000606482015260840161061a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000906110369073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190614992565b604001516fffffffffffffffffffffffffffffffff16612065565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c016146110e65760405162461bcd60e51b8152602060048201526024808201527f4b726f6d61506f7274616c3a206f6e6c7920677561726469616e2063616e207060448201527f6175736500000000000000000000000000000000000000000000000000000000606482015260840161061a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610f5b565b60355460ff16156111945760405162461bcd60e51b815260206004820152601360248201527f4b726f6d61506f7274616c3a2070617573656400000000000000000000000000604482015260640161061a565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146112235760405162461bcd60e51b815260206004820152603c60248201527f4b726f6d61506f7274616c3a2063616e206f6e6c792074726967676572206f6e60448201527f65207769746864726177616c20706572207472616e73616374696f6e00000000606482015260840161061a565b600061122e82612011565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036112ff5760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a207769746864726177616c20686173206e6f742060448201527f6265656e2070726f76656e207965740000000000000000000000000000000000606482015260840161061a565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190614c47565b81602001516fffffffffffffffffffffffffffffffff16101561143f5760405162461bcd60e51b815260206004820152604860248201527f4b726f6d61506f7274616c3a207769746864726177616c2074696d657374616d60448201527f70206c657373207468616e204c32204f7261636c65207374617274696e67207460648201527f696d657374616d70000000000000000000000000000000000000000000000000608482015260a40161061a565b61145e81602001516fffffffffffffffffffffffffffffffff16612065565b6114f65760405162461bcd60e51b815260206004820152604260248201527f4b726f6d61506f7274616c3a2070726f76656e207769746864726177616c206660448201527f696e616c697a6174696f6e20706572696f6420686173206e6f7420656c61707360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a40161061a565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa15801561159b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bf9190614992565b82516020820151919250146116625760405162461bcd60e51b815260206004820152604660248201527f4b726f6d61506f7274616c3a206f757470757420726f6f742070726f76656e2060448201527f6973206e6f74207468652073616d652061732063757272656e74206f7574707560648201527f7420726f6f740000000000000000000000000000000000000000000000000000608482015260a40161061a565b61168181604001516fffffffffffffffffffffffffffffffff16612065565b6117195760405162461bcd60e51b815260206004820152604260248201527f4b726f6d61506f7274616c3a20636865636b706f696e74206f7574707574206660448201527f696e616c697a6174696f6e20706572696f6420686173206e6f7420656c61707360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a40161061a565b60008381526033602052604090205460ff161561179e5760405162461bcd60e51b815260206004820152603260248201527f4b726f6d61506f7274616c3a207769746864726177616c2068617320616c726560448201527f616479206265656e2066696e616c697a65640000000000000000000000000000606482015260840161061a565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a088015161184093929190612108565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b906118a590841515815260200190565b60405180910390a2801580156118bb5750326001145b156119085760405162461bcd60e51b815260206004820152601e60248201527f4b726f6d61506f7274616c3a207769746864726177616c206661696c65640000604482015260640161061a565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146119ba5760405162461bcd60e51b815260206004820152603f60248201527f4b726f6d61506f7274616c3a2066756e6374696f6e2063616e206f6e6c79206260448201527f652063616c6c65642066726f6d207468652056616c696461746f72506f6f6c00606482015260840161061a565b6040513373111100000000000000000000000000000000111101906000906119ee908290819087908290889060200161490d565b604051602081830303815290604052905060008573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c3284604051611a5e919061477f565b60405180910390a45050505050565b600054610100900460ff1615808015611a8d5750600054600160ff909116105b80611aa75750303b158015611aa7575060005460ff166001145b611b195760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161061a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611b7757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055603580548315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116179055611bd9612166565b8015611c3c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611c92907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643614c8f565b90506000611c9e61222f565b90506000816020015160ff16826000015163ffffffff16611cbf9190614cd5565b90508215611df657600154600090611cf6908390700100000000000000000000000000000000900467ffffffffffffffff16614d3d565b90506000836040015160ff1683611d0d9190614db1565b600154611d2d9084906fffffffffffffffffffffffffffffffff16614db1565b611d379190614cd5565b600154909150600090611d8890611d619084906fffffffffffffffffffffffffffffffff16614e6d565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166122f5565b90506001861115611db757611db4611d6182876040015160ff1660018a611daf9190614c8f565b612314565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611e29908490700100000000000000000000000000000000900467ffffffffffffffff16614ee1565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611ef25760405162461bcd60e51b815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161061a565b600154600090611f1e906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816614f0d565b90506000611f3048633b9aca00612369565b611f3a9083614f4a565b905060005a611f499088614c8f565b905080821115611f6557611f65611f608284614c8f565b61237f565b5050505050505050565b6080810151600090611fd157815160208084015160408086015160608701519151611fb495949192910193845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b81516020808401516040808601516060808801516080808a01518551978801989098529386019490945284015282015260a081019190915260c001611fb4565b80516020808301516040808501516060860151608087015160a08801519351600097611fb4979096959101614f5e565b60008061204d866123ad565b905061205b818686866123df565b9695505050505050565b60007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f69190614c47565b6121009083614fb5565b421192915050565b600080600061211886600061240f565b90508061214e576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166121e35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161061a565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051273ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa1580156122cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f09190614ff2565b905090565b600061230a612304858561242d565b8361243c565b90505b9392505050565b6000670de0b6b3a764000061235561232c8583614cd5565b61233e90670de0b6b3a7640000614d3d565b61235085670de0b6b3a7640000614db1565b61244b565b61235f9086614db1565b61230a9190614cd5565b6000818311612378578161230d565b5090919050565b6000805a90505b825a6123929083614c8f565b10156123a8576123a182615091565b9150612386565b505050565b606081805190602001206040516020016123c991815260200190565b6040516020818303038152906040529050919050565b6000612406846123f087868661247c565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b6000818313612378578161230d565b6000818312612378578161230d565b600061230d670de0b6b3a76400008361246386612d8e565b61246d9190614db1565b6124779190614cd5565b612fb8565b606060008451116124cf5760405162461bcd60e51b815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b65790000000000000000000000604482015260640161061a565b60006124da846131dd565b905060006124e7866132c9565b90506000846040516020016124fe91815260200190565b60405160208183030381529060405290506000805b8451811015612d1f576000858281518110612530576125306150c9565b6020026020010151905084518311156125b15760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e677468000000000000000000000000000000000000606482015260840161061a565b8260000361265057805180516020918201206040516125ff926125d992910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61264b5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f742068617368000000604482015260640161061a565b612773565b8051516020116126ec578051805160209182012060405161267a926125d992910190815260200190565b61264b5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c206861736800000000000000000000000000000000000000000000000000606482015260840161061a565b8051845160208087019190912082519190920120146127735760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f6520686173680000000000000000000000000000000000000000000000000000606482015260840161061a565b61277f60106001614fb5565b8160200151510361292757845183036128bf576127b981602001516010815181106127ac576127ac6150c9565b602002602001015161332c565b965060008751116128325760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e6368290000000000606482015260840161061a565b600186516128409190614c8f565b82146128b45760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e636829000000000000606482015260840161061a565b50505050505061230d565b60008584815181106128d3576128d36150c9565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106128fe576128fe6150c9565b6020026020010151905061291181613458565b955061291e600186614fb5565b94505050612d0c565b600281602001515103612c9e57600061293f8261347d565b9050600081600081518110612956576129566150c9565b016020015160f81c9050600061296d6002836150f8565b61297890600261511a565b90506000612989848360ff166134a1565b905060006129978a896134a1565b905060006129a583836134d7565b905080835114612a1d5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b6579000000000000606482015260840161061a565b60ff851660021480612a32575060ff85166003145b15612bd35780825114612aad5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e646572000000606482015260840161061a565b612ac787602001516001815181106127ac576127ac6150c9565b9c5060008d5111612b405760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c6561662900000000000000606482015260840161061a565b60018c51612b4e9190614c8f565b8814612bc25760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c656166290000000000000000606482015260840161061a565b50505050505050505050505061230d565b60ff85161580612be6575060ff85166001145b15612c2557612c128760200151600181518110612c0557612c056150c9565b6020026020010151613458565b9950612c1e818a614fb5565b9850612c93565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e207072656669780000000000000000000000000000606482015260840161061a565b505050505050612d0c565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f6465000000000000000000000000000000000000000000000000606482015260840161061a565b5080612d1781615091565b915050612513565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e7473000000000000000000000000000000000000000000000000000000606482015260840161061a565b6000808213612ddf5760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161061a565b60006060612dec8461358b565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213612fe957506000919050565b680755bf798b4a1bf1e582126130415760405162461bcd60e51b815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161061a565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156131fb576131fb6144a2565b60405190808252806020026020018201604052801561324057816020015b60408051808201909152606080825260208201528152602001906001900390816132195790505b50915060005b818110156132c257604051806040016040528085838151811061326b5761326b6150c9565b6020026020010151815260200161329a86848151811061328d5761328d6150c9565b6020026020010151613647565b8152508382815181106132af576132af6150c9565b6020908102919091010152600101613246565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613321578060011b82018184015160001a8060041c8253600f8116600183015350506001016132f3565b509295945050505050565b6060600080600061333c8561365a565b9194509250905060008160018111156133575761335761513d565b146133ca5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d00000000000000606482015260840161061a565b6133d48284614fb5565b8551146134495760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e646572000000000000000000000000606482015260840161061a565b61240685602001518484613f8f565b606060208260000151106134745761346f8261332c565b611036565b61103682614023565b606061103661349c83602001516000815181106127ac576127ac6150c9565b6132c9565b6060825182106134c05750604080516020810190915260008152611036565b61230d83838486516134d29190614c8f565b614039565b60008082518451106134ea5782516134ed565b83515b90505b8082108015613574575082828151811061350c5761350c6150c9565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684838151811061354b5761354b6150c9565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613584578160010191506134f0565b5092915050565b60008082116135dc5760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161061a565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060611036613655836141a5565b614274565b6000806000808460000151116136fe5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161061a565b6020840151805160001a607f8111613723576000600160009450945094505050613f88565b60b781116138fd576000613738608083614c8f565b9050808760000151116137d95760405162461bcd60e51b815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a40161061a565b6001838101517fff0000000000000000000000000000000000000000000000000000000000000016908214158061385257507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b6138ea5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a40161061a565b5060019550935060009250613f88915050565b60bf8111613be357600061391260b783614c8f565b9050808760000151116139b35760405162461bcd60e51b815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a40161061a565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613a775760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a40161061a565b600184015160088302610100031c60378111613b215760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a40161061a565b613b2b8184614fb5565b895111613bc65760405162461bcd60e51b815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a40161061a565b613bd1836001614fb5565b9750955060009450613f889350505050565b60f78111613caa576000613bf860c083614c8f565b905080876000015111613c995760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a40161061a565b600195509350849250613f88915050565b6000613cb760f783614c8f565b905080876000015111613d585760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a40161061a565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613e1c5760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a40161061a565b600184015160088302610100031c60378111613ec65760405162461bcd60e51b815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a40161061a565b613ed08184614fb5565b895111613f6b5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a40161061a565b613f76836001614fb5565b9750955060019450613f889350505050565b9193909250565b60608167ffffffffffffffff811115613faa57613faa6144a2565b6040519080825280601f01601f191660200182016040528015613fd4576020820181803683370190505b509050811561230d576000613fe98486614fb5565b90506020820160005b8481101561400a578281015182820152602001613ff2565b84811115614019576000858301525b5050509392505050565b6060611036826020015160008460000151613f8f565b60608182601f01101561408e5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161061a565b8282840110156140e05760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161061a565b818301845110156141335760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161061a565b606082158015614152576040519150600082526020820160405261419c565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561418b578051835260209283019201614173565b5050858452601f01601f1916604052505b50949350505050565b604080518082019091526000808252602082015260008251116142565760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161061a565b50604080518082019091528151815260209182019181019190915290565b606060008060006142848561365a565b91945092509050600181600181111561429f5761429f61513d565b146143125760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d0000000000000000606482015260840161061a565b845161431e8385614fb5565b146143915760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e6465720000000000000000000000000000606482015260840161061a565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816143a85790505093506000835b86518110156144965760008061441b6040518060400160405280858c600001516143ff9190614c8f565b8152602001858c602001516144149190614fb5565b905261365a565b5091509150604051806040016040528083836144379190614fb5565b8152602001848b6020015161444c9190614fb5565b815250888581518110614461576144616150c9565b6020908102919091010152614477600185614fb5565b93506144838183614fb5565b61448d9084614fb5565b925050506143d5565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156144fa576144fa6144a2565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461452457600080fd5b50565b600082601f83011261453857600080fd5b813567ffffffffffffffff811115614552576145526144a2565b6145656020601f19601f840116016144d1565b81815284602083860101111561457a57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156145a957600080fd5b60405160c0810167ffffffffffffffff82821081831117156145cd576145cd6144a2565b8160405282935084358352602085013591506145e882614502565b816020840152604085013591506145fe82614502565b816040840152606085013560608401526080850135608084015260a085013591508082111561462c57600080fd5b5061463985828601614527565b60a0830152505092915050565b600080600080600085870361010081121561466057600080fd5b863567ffffffffffffffff8082111561467857600080fd5b6146848a838b01614597565b97506020890135965060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0840112156146bd57600080fd5b60408901955060e08901359250808311156146d757600080fd5b828901925089601f8401126146eb57600080fd5b82359150808211156146fc57600080fd5b508860208260051b840101111561471257600080fd5b959894975092955050506020019190565b60005b8381101561473e578181015183820152602001614726565b8381111561474d576000848401525b50505050565b6000815180845261476b816020860160208601614723565b601f01601f19169290920160200192915050565b60208152600061230d6020830184614753565b6000602082840312156147a457600080fd5b5035919050565b6000602082840312156147bd57600080fd5b813567ffffffffffffffff8111156147d457600080fd5b6147e084828501614597565b949350505050565b803567ffffffffffffffff8116811461480057600080fd5b919050565b60008060006060848603121561481a57600080fd5b833561482581614502565b9250614833602085016147e8565b9150604084013567ffffffffffffffff81111561484f57600080fd5b61485b86828701614527565b9150509250925092565b801515811461452457600080fd5b60006020828403121561488557600080fd5b813561230d81614865565b600080600080600060a086880312156148a857600080fd5b85356148b381614502565b9450602086013593506148c8604087016147e8565b925060608601356148d881614865565b9150608086013567ffffffffffffffff8111156148f457600080fd5b61490088828901614527565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614961816049850160208701614723565b919091016049019695505050505050565b80516fffffffffffffffffffffffffffffffff8116811461480057600080fd5b6000608082840312156149a457600080fd5b6040516080810181811067ffffffffffffffff821117156149c7576149c76144a2565b60405282516149d581614502565b8152602083810151908201526149ed60408401614972565b60408201526149fe60608401614972565b60608201529392505050565b600060a08284031215614a1c57600080fd5b60405160a0810181811067ffffffffffffffff82111715614a3f57614a3f6144a2565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600067ffffffffffffffff80841115614a9557614a956144a2565b8360051b6020614aa68183016144d1565b868152918501918181019036841115614abe57600080fd5b865b84811015614af257803586811115614ad85760008081fd5b614ae436828b01614527565b845250918301918301614ac0565b50979650505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b8481526000602060808184015280608084015260018060a085015260c0840160c060408601528087825260e08601905060e08860051b87010191508860005b89811015614c12577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2088850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112614bc957600080fd5b8b01868101903567ffffffffffffffff811115614be557600080fd5b803603821315614bf457600080fd5b614bff868284614afe565b9550505091850191908501908401614b68565b50505080935050505082606083015295945050505050565b600060208284031215614c3c57600080fd5b815161230d81614865565b600060208284031215614c5957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015614ca157614ca1614c60565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614ce457614ce4614ca6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614d3857614d38614c60565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614d7757614d77614c60565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614dab57614dab614c60565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615614df257614df2614c60565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615614e2d57614e2d614c60565b60008712925087820587128484161615614e4957614e49614c60565b87850587128184161615614e5f57614e5f614c60565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614ea757614ea7614c60565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614edb57614edb614c60565b50500190565b600067ffffffffffffffff808316818516808303821115614f0457614f04614c60565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f4557614f45614c60565b500290565b600082614f5957614f59614ca6565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152614fa960c0830184614753565b98975050505050505050565b60008219821115614fc857614fc8614c60565b500190565b805163ffffffff8116811461480057600080fd5b805160ff8116811461480057600080fd5b600060c0828403121561500457600080fd5b60405160c0810181811067ffffffffffffffff82111715615027576150276144a2565b60405261503383614fcd565b815261504160208401614fe1565b602082015261505260408401614fe1565b604082015261506360608401614fcd565b606082015261507460808401614fcd565b608082015261508560a08401614972565b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150c2576150c2614c60565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff83168061510b5761510b614ca6565b8060ff84160691505092915050565b600060ff821660ff84168082101561513457615134614c60565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x0000000000000000000000000000000000000000000000000000000000000001": "2800000000000000000000000000000000000000003b9aca00", + "0x0000000000000000000000000000000000000000000000000000000000000032": "dead" + }, + "key": "0xf4856772454495d2d8bbdae250e43ed9b0d01009bbc274f43c0d55ff50885027" }, "0x8a791620dd6260079bf849dc5567adc3f2fdc318": { "balance": "0", "nonce": 1, - "root": "0xe0bf1f847c44e40f761c095b49d02fa5fb86f7e20eda964dd68953edaa567aaf", + "root": "0xdf069ea1bf16c69e2a5a7fbf8467873a2fd21e2b015e88fdaec91c02292319bf", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "c3e53f4d16ae77db1c982e75a937b9f60fe63690", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "84ea74d481ee0a5332c457a4d796187f6ba67feb", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x52f57297d97a84de7bdf53a239d5f1c446e6ff8e4e0d175868a241ddff7729d8" }, - "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1": { + "0x8f86403a4de0bb5791fa46b8e795c547942fe4cf": { "balance": "0", "nonce": 1, - "root": "0x12c6ef3010e4ab4f8563444299bbb8c7070ab2438d6dc2587410f63d7003a46d", - "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", - "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0x6392b39a2ab7ae88e9e6bf7712fc0514edd1c6b5e1053e2836765fb0f11c3729", + "code": "0x6080604052600436106101d15760003560e01c80638065657f116100f7578063bc197c8111610095578063d547741f11610064578063d547741f1461068a578063e38335e5146106aa578063f23a6e61146106bd578063f27a0c921461070257600080fd5b8063bc197c81146105d8578063c4c4c7b31461061d578063c4d252f51461063d578063d45c44351461065d57600080fd5b806391d14854116100d157806391d148541461051c578063a217fddf1461056f578063b08e51c014610584578063b1c5f427146105b857600080fd5b80638065657f146104a85780638f2a0bb0146104c85780638f61f4f5146104e857600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe146103f257806354fd4d5014610412578063584b153e1461046857806364d623531461048857600080fd5b8063248a9ca3146103525780632ab0f529146103825780632f2ff15d146103b257806331d50750146103d257600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610276578063134008d3146102aa57806313bc9f20146102bd578063150b7a02146102dd57600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612019565b610717565b005b34801561020b57600080fd5b5061021f61021a36600461208e565b6107ed565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b506102687fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60405190815260200161022b565b34801561028257600080fd5b506102687f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101fd6102b83660046120d0565b610849565b3480156102c957600080fd5b5061021f6102d836600461213c565b610941565b3480156102e957600080fd5b506103216102f8366004612261565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161022b565b34801561035e57600080fd5b5061026861036d36600461213c565b60009081526065602052604090206001015490565b34801561038e57600080fd5b5061021f61039d36600461213c565b60009081526097602052604090205460011490565b3480156103be57600080fd5b506101fd6103cd3660046122c9565b610967565b3480156103de57600080fd5b5061021f6103ed36600461213c565b610991565b3480156103fe57600080fd5b506101fd61040d3660046122c9565b6109aa565b34801561041e57600080fd5b5061045b6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161022b9190612321565b34801561047457600080fd5b5061021f61048336600461213c565b610a48565b34801561049457600080fd5b506101fd6104a336600461213c565b610a5f565b3480156104b457600080fd5b506102686104c33660046120d0565b610b15565b3480156104d457600080fd5b506101fd6104e33660046123b7565b610b54565b3480156104f457600080fd5b506102687fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561052857600080fd5b5061021f6105373660046122c9565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561057b57600080fd5b50610268600081565b34801561059057600080fd5b506102687ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156105c457600080fd5b506102686105d3366004612469565b610d93565b3480156105e457600080fd5b506103216105f33660046125a1565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561062957600080fd5b506101fd6106383660046126ad565b610dd8565b34801561064957600080fd5b506101fd61065836600461213c565b610f58565b34801561066957600080fd5b5061026861067836600461213c565b60009081526097602052604090205490565b34801561069657600080fd5b506101fd6106a53660046122c9565b611039565b6101fd6106b8366004612469565b61105e565b3480156106c957600080fd5b506103216106d836600461272b565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b34801561070e57600080fd5b50609854610268565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610741816112d7565b6000610751898989898989610b15565b905061075d81846112e4565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610799969594939291906127d9565b60405180910390a383156107e257807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516107d991815260200190565b60405180910390a25b505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806108435750610843826113f8565b92915050565b600080527f7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8b6020527fa01e231ca478cf51f663e103939e98de36fa76d3e4e0b1de673dc711acc3a01b547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166108c6576108c6813361148f565b60006108d6888888888888610b15565b90506108e2818561152f565b6108ee88888888611637565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516109269493929190612824565b60405180910390a36109378161171a565b5050505050505050565b6000818152609760205260408120546001811180156109605750428111155b9392505050565b600082815260656020526040902060010154610982816112d7565b61098c83836117a9565b505050565b60008181526097602052604081205481905b1192915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610a3a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610a44828261189d565b5050565b6000818152609760205260408120546001906109a3565b333014610ad45760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201527f62652074696d656c6f636b0000000000000000000000000000000000000000006064820152608401610a31565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b6000868686868686604051602001610b32969594939291906127d9565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610b7e816112d7565b888714610bf35760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b888514610c685760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b6000610c7a8b8b8b8b8b8b8b8b610d93565b9050610c8681846112e4565b60005b8a811015610d445780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610cc657610cc6612864565b9050602002016020810190610cdb9190612893565b8d8d86818110610ced57610ced612864565b905060200201358c8c87818110610d0657610d06612864565b9050602002810190610d1891906128ae565b8c8b604051610d2c969594939291906127d9565b60405180910390a3610d3d81612942565b9050610c89565b508315610d8657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610d7d91815260200190565b60405180910390a25b5050505050505050505050565b60008888888888888888604051602001610db4989796959493929190612a2a565b60405160208183030381529060405280519060200120905098975050505050505050565b600054610100900460ff1615808015610df85750600054600160ff909116105b80610e125750303b158015610e12575060005460ff166001145b610e845760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a31565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ee257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610eee85858585611958565b8015610f5157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610f82816112d7565b610f8b82610a48565b610ffd5760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160448201527f6e6e6f742062652063616e63656c6c65640000000000000000000000000000006064820152608401610a31565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154611054816112d7565b61098c838361189d565b600080527f7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8b6020527fa01e231ca478cf51f663e103939e98de36fa76d3e4e0b1de673dc711acc3a01b547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166110db576110db813361148f565b8786146111505760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b8784146111c55760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b60006111d78a8a8a8a8a8a8a8a610d93565b90506111e3818561152f565b60005b898110156112c15760008b8b8381811061120257611202612864565b90506020020160208101906112179190612893565b905060008a8a8481811061122d5761122d612864565b9050602002013590503660008a8a8681811061124b5761124b612864565b905060200281019061125d91906128ae565b9150915061126d84848484611637565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58868686866040516112a49493929190612824565b60405180910390a350505050806112ba90612942565b90506111e6565b506112cb8161171a565b50505050505050505050565b6112e1813361148f565b50565b6112ed82610991565b156113605760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201527f7265616479207363686564756c656400000000000000000000000000000000006064820152608401610a31565b6098548110156113d85760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460448201527f2064656c617900000000000000000000000000000000000000000000000000006064820152608401610a31565b6113e28142612afb565b6000928352609760205260409092209190915550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061084357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610843565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a44576114cf816119e7565b6114da836020611a06565b6040516020016114eb929190612b13565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610a3191600401612321565b61153882610941565b6115aa5760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f74207265616479000000000000000000000000000000000000000000006064820152608401610a31565b8015806115c557506000818152609760205260409020546001145b610a445760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560448201527f6e64656e637900000000000000000000000000000000000000000000000000006064820152608401610a31565b60008473ffffffffffffffffffffffffffffffffffffffff16848484604051611661929190612b94565b60006040518083038185875af1925050503d806000811461169e576040519150601f19603f3d011682016040523d82523d6000602084013e6116a3565b606091505b5050905080610f515760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460448201527f72616e73616374696f6e207265766572746564000000000000000000000000006064820152608401610a31565b61172381610941565b6117955760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f74207265616479000000000000000000000000000000000000000000006064820152608401610a31565b600090815260976020526040902060019055565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a4457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561183f3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610a4457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff166119d55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a31565b6119e184848484611c2f565b50505050565b606061084373ffffffffffffffffffffffffffffffffffffffff831660145b60606000611a15836002612ba4565b611a20906002612afb565b67ffffffffffffffff811115611a3857611a38612155565b6040519080825280601f01601f191660200182016040528015611a62576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611a9957611a99612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611afc57611afc612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611b38846002612ba4565b611b43906001612afb565b90505b6001811115611be0577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611b8457611b84612864565b1a60f81b828281518110611b9a57611b9a612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611bd981612be1565b9050611b46565b5083156109605760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a31565b600054610100900460ff16611cac5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a31565b611cd67f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca580611f52565b611d207fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc17f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611d6a7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e637f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611db47ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7837f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611dde7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca530611f9d565b73ffffffffffffffffffffffffffffffffffffffff811615611e2457611e247f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca582611f9d565b60005b8351811015611eb957611e737fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1858381518110611e6657611e66612864565b6020026020010151611f9d565b611ea97ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783858381518110611e6657611e66612864565b611eb281612942565b9050611e27565b5060005b8251811015611f0c57611efc7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63848381518110611e6657611e66612864565b611f0581612942565b9050611ebd565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150505050565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610a4482826117a9565b803573ffffffffffffffffffffffffffffffffffffffff81168114611fcb57600080fd5b919050565b60008083601f840112611fe257600080fd5b50813567ffffffffffffffff811115611ffa57600080fd5b60208301915083602082850101111561201257600080fd5b9250929050565b600080600080600080600060c0888a03121561203457600080fd5b61203d88611fa7565b965060208801359550604088013567ffffffffffffffff81111561206057600080fd5b61206c8a828b01611fd0565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156120a057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096057600080fd5b60008060008060008060a087890312156120e957600080fd5b6120f287611fa7565b955060208701359450604087013567ffffffffffffffff81111561211557600080fd5b61212189828a01611fd0565b979a9699509760608101359660809091013595509350505050565b60006020828403121561214e57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156121cb576121cb612155565b604052919050565b600082601f8301126121e457600080fd5b813567ffffffffffffffff8111156121fe576121fe612155565b61222f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612184565b81815284602083860101111561224457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561227757600080fd5b61228085611fa7565b935061228e60208601611fa7565b925060408501359150606085013567ffffffffffffffff8111156122b157600080fd5b6122bd878288016121d3565b91505092959194509250565b600080604083850312156122dc57600080fd5b823591506122ec60208401611fa7565b90509250929050565b60005b838110156123105781810151838201526020016122f8565b838111156119e15750506000910152565b60208152600082518060208401526123408160408501602087016122f5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008083601f84011261238457600080fd5b50813567ffffffffffffffff81111561239c57600080fd5b6020830191508360208260051b850101111561201257600080fd5b600080600080600080600080600060c08a8c0312156123d557600080fd5b893567ffffffffffffffff808211156123ed57600080fd5b6123f98d838e01612372565b909b50995060208c013591508082111561241257600080fd5b61241e8d838e01612372565b909950975060408c013591508082111561243757600080fd5b506124448c828d01612372565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561248557600080fd5b883567ffffffffffffffff8082111561249d57600080fd5b6124a98c838d01612372565b909a50985060208b01359150808211156124c257600080fd5b6124ce8c838d01612372565b909850965060408b01359150808211156124e757600080fd5b506124f48b828c01612372565b999c989b509699959896976060870135966080013595509350505050565b600067ffffffffffffffff82111561252c5761252c612155565b5060051b60200190565b600082601f83011261254757600080fd5b8135602061255c61255783612512565b612184565b82815260059290921b8401810191818101908684111561257b57600080fd5b8286015b84811015612596578035835291830191830161257f565b509695505050505050565b600080600080600060a086880312156125b957600080fd5b6125c286611fa7565b94506125d060208701611fa7565b9350604086013567ffffffffffffffff808211156125ed57600080fd5b6125f989838a01612536565b9450606088013591508082111561260f57600080fd5b61261b89838a01612536565b9350608088013591508082111561263157600080fd5b5061263e888289016121d3565b9150509295509295909350565b600082601f83011261265c57600080fd5b8135602061266c61255783612512565b82815260059290921b8401810191818101908684111561268b57600080fd5b8286015b84811015612596576126a081611fa7565b835291830191830161268f565b600080600080608085870312156126c357600080fd5b84359350602085013567ffffffffffffffff808211156126e257600080fd5b6126ee8883890161264b565b9450604087013591508082111561270457600080fd5b506127118782880161264b565b92505061272060608601611fa7565b905092959194509250565b600080600080600060a0868803121561274357600080fd5b61274c86611fa7565b945061275a60208701611fa7565b93506040860135925060608601359150608086013567ffffffffffffffff81111561278457600080fd5b61263e888289016121d3565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015260a06040820152600061280f60a083018688612790565b60608301949094525060800152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061285a606083018486612790565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156128a557600080fd5b61096082611fa7565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128e357600080fd5b83018035915067ffffffffffffffff8211156128fe57600080fd5b60200191503681900382131561201257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361297357612973612913565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015612a1d57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030181126129d357600080fd5b8701858101903567ffffffffffffffff8111156129ef57600080fd5b8036038213156129fe57600080fd5b612a09868284612790565b9a87019a9550505090840190600101612994565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015612a785773ffffffffffffffffffffffffffffffffffffffff612a6384611fa7565b16825260209283019290910190600101612a3d565b5083810360208501528881527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff891115612ab157600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152612ae281888a61297a565b6060850196909652505050608001529695505050505050565b60008219821115612b0e57612b0e612913565b500190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b4b8160178501602088016122f5565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b888160288401602088016122f5565b01602801949350505050565b8183823760009101908152919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bdc57612bdc612913565b500290565b600081612bf057612bf0612913565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea164736f6c634300080f000a", + "key": "0x34aa4e0650a1aba101d77c9fada710ca3c47daa0685afb73e974afd9dadfa187" + }, + "0x95151fef7052b7590f75d29a3cadbd8842730402": { + "balance": "115792089237316195423570985008687907853269984665640564039455800122443596828552", + "nonce": 2, + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "key": "0xd0544a327cb04dde98137ccd7fbb0a786e55cdf96f52d7fa962b28088ccdf85d" + }, + "0x95401dc811bb5740090279ba06cfa8fcf6113778": { + "balance": "0", + "nonce": 1, + "root": "0x769d3f982bb915eae1a926f61fb9d42d830f82b075e8c7452ee444dee2032892", + "codeHash": "0xf088100162a48771cf9ad3b57490a878312e56f8afcf21e4fee9675799e494f2", + "code": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c8063c71973f6116100d8578063ed579ad31161008c578063f68016b711610066578063f68016b71461046d578063fc7ffea714610481578063ffa1ad741461049457600080fd5b8063ed579ad314610448578063f2fde38b14610451578063f45e65d81461046457600080fd5b8063cc731b02116100bd578063cc731b02146102f8578063e81b2c6d1461042c578063ecdd939d1461043557600080fd5b8063c71973f6146102d2578063c9b26f61146102e557600080fd5b806354fd4d501161012f5780638da5cb5b116101145780638da5cb5b1461028e578063935f029e146102ac578063b40a817c146102bf57600080fd5b806354fd4d501461023d578063715018a61461028657600080fd5b80631fd19ee1116101605780631fd19ee1146101ad5780634add321d146101f55780634f16540b1461021657600080fd5b80630c18c1621461017c57806318d1391814610198575b600080fd5b61018560655481565b6040519081526020015b60405180910390f35b6101ab6101a6366004611139565b61049c565b005b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018f565b6101fd610560565b60405167ffffffffffffffff909116815260200161018f565b6101857f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b6102796040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161018f91906111c6565b6101ab61058b565b60335473ffffffffffffffffffffffffffffffffffffffff166101d0565b6101ab6102ba3660046111d9565b61059f565b6101ab6102cd366004611213565b610638565b6101ab6102e036600461133c565b610709565b6101ab6102f3366004611358565b61071d565b6103bc6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b60405161018f9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b61018560675481565b6101ab610443366004611358565b61074d565b610185606a5481565b6101ab61045f366004611139565b61081b565b61018560665481565b6068546101fd9067ffffffffffffffff1681565b6101ab61048f366004611371565b6108b5565b610185600081565b6104a4610b3a565b6104cc817f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b6040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060035b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161055491906111c6565b60405180910390a35050565b6069546000906105869063ffffffff6a010000000000000000000082048116911661141d565b905090565b610593610b3a565b61059d6000610ba1565b565b6105a7610b3a565b606582905560668190556040805160208101849052908101829052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600160007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161062b91906111c6565b60405180910390a3505050565b610640610b3a565b610648610560565b67ffffffffffffffff168167ffffffffffffffff1610156106b05760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064015b60405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040805160208082019390935281518082039093018352810190526002610523565b610711610b3a565b61071a81610c18565b50565b610725610b3a565b6067819055604080516020808201849052825180830390910181529082019091526000610523565b610755610b3a565b6127108111156107f35760405162461bcd60e51b815260206004820152604860248201527f53797374656d436f6e6669673a20746865206d61782076616c7565206f66207660448201527f616c696461746f7220726577617264207363616c617220686173206265656e2060648201527f6578636565646564000000000000000000000000000000000000000000000000608482015260a4016106a7565b606a819055604080516020808201849052825180830390910181529082019091526004610523565b610823610b3a565b73ffffffffffffffffffffffffffffffffffffffff81166108ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a7565b61071a81610ba1565b600054610100900460ff16158080156108d55750600054600160ff909116105b806108ef5750303b1580156108ef575060005460ff166001145b6109615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109bf57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6109c761100a565b6109d08961081b565b606588905560668790556067869055606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff87161790557f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08849055610a4083610c18565b610a48610560565b67ffffffffffffffff168567ffffffffffffffff161015610aab5760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016106a7565b606a8290558015610b1357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff16331461059d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff161115610cae5760405162461bcd60e51b815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d61782062617365000000000000000000000060648201526084016106a7565b6001816040015160ff1611610d2b5760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f72206d757374206260448201527f65206c6172676572207468616e2031000000000000000000000000000000000060648201526084016106a7565b6068546080820151825167ffffffffffffffff90921691610d4c9190611449565b63ffffffff161115610da05760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016106a7565b6000816020015160ff1611610e1d5760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201527f6965722063616e6e6f742062652030000000000000000000000000000000000060648201526084016106a7565b8051602082015163ffffffff82169160ff90911690610e3d908290611468565b610e4791906114b2565b63ffffffff1614610ec05760405162461bcd60e51b815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d697400000000000000000060648201526084016106a7565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b600054610100900460ff166110875760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a7565b61059d600054610100900460ff166111075760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a7565b61059d33610ba1565b803573ffffffffffffffffffffffffffffffffffffffff8116811461113457600080fd5b919050565b60006020828403121561114b57600080fd5b61115482611110565b9392505050565b6000815180845260005b8181101561118157602081850181015186830182015201611165565b81811115611193576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611154602083018461115b565b600080604083850312156111ec57600080fd5b50508035926020909101359150565b803567ffffffffffffffff8116811461113457600080fd5b60006020828403121561122557600080fd5b611154826111fb565b803563ffffffff8116811461113457600080fd5b803560ff8116811461113457600080fd5b80356fffffffffffffffffffffffffffffffff8116811461113457600080fd5b600060c0828403121561128557600080fd5b60405160c0810181811067ffffffffffffffff821117156112cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040529050806112de8361122e565b81526112ec60208401611242565b60208201526112fd60408401611242565b604082015261130e6060840161122e565b606082015261131f6080840161122e565b608082015261133060a08401611253565b60a08201525092915050565b600060c0828403121561134e57600080fd5b6111548383611273565b60006020828403121561136a57600080fd5b5035919050565b6000806000806000806000806101a0898b03121561138e57600080fd5b61139789611110565b97506020890135965060408901359550606089013594506113ba60808a016111fb565b93506113c860a08a01611110565b92506113d78a60c08b01611273565b915061018089013590509295985092959890939650565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516808303821115611440576114406113ee565b01949350505050565b600063ffffffff808316818516808303821115611440576114406113ee565b600063ffffffff808416806114a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600063ffffffff808316818516818304811182151516156114d5576114d56113ee565b0294935050505056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "7969c5ed335650692bc04293b07f5bf2e7a673c0", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x0000000000000000000000000000000000000000000000000000000000000033": "9a676e781a523b5d0c0e43731313a708cb607508", + "0x0000000000000000000000000000000000000000000000000000000000000065": "0834", + "0x0000000000000000000000000000000000000000000000000000000000000066": "0f4240", + "0x0000000000000000000000000000000000000000000000000000000000000067": "3c44cdddb6a900fa2b585dd299e03d12fa4293bc", + "0x0000000000000000000000000000000000000000000000000000000000000068": "01c9c380", + "0x0000000000000000000000000000000000000000000000000000000000000069": "ffffffffffffffffffffffffffffffff000f42403b9aca00080a01312d00", + "0x000000000000000000000000000000000000000000000000000000000000006a": "1388", + "0x65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08": "9965507d1a55bcc2695c58ba16fb37d819b0a4dc" }, - "key": "0x7cb5c2b5a0b80e4fad4cf89bdd73a61db77d1c6dc957bae688b8b7bba3f76422" + "key": "0x0f1928bb1bf8b255a1c91f2ecf2c0d3f779efe8132a79cb298c332da9d5daadf" }, - "0x998abeb3e57409262ae5b751f60747921b33613e": { + "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1": { "balance": "0", "nonce": 1, - "root": "0x01f9e62d19297f681ea2208de1fec6c67ed86a26e55dbf4b27a1b0881060507b", - "codeHash": "0xf0fad452b83cbe1ab636d54d05583153583b5d43a1e2e417746f46d42fdf89d3", - "code": "0x608060405234801561001057600080fd5b50600436106102925760003560e01c806370a08231116101605780639ab24eb0116100d8578063c4d66de81161008c578063d204c45e11610071578063d204c45e1461056c578063e985e9c51461057f578063f2fde38b146105bb57600080fd5b8063c4d66de814610546578063c87b56dd1461055957600080fd5b8063b45a3c0e116100bd578063b45a3c0e1461050d578063b88d4fde14610520578063c3cda5201461053357600080fd5b80639ab24eb0146104e7578063a22cb465146104fa57600080fd5b806384b0196e1161012f5780638e539e8c116101145780638e539e8c146104ad57806391ddadf4146104c057806395d89b41146104df57600080fd5b806384b0196e146104805780638da5cb5b1461049b57600080fd5b806370a082311461044a578063715018a61461045d5780637ecebe00146104655780638456cb591461047857600080fd5b80633f4ba83a1161020e57806354fd4d50116101c25780635c19a95c116101a75780635c19a95c146104195780635c975abb1461042c5780636352211e1461043757600080fd5b806354fd4d50146103b0578063587cde1e146103ec57600080fd5b806342966c68116101f357806342966c68146103825780634bf5d7e9146103955780634f6ccce71461039d57600080fd5b80633f4ba83a1461036757806342842e0e1461036f57600080fd5b806318160ddd116102655780632f745c591161024a5780632f745c59146103395780633644e5151461034c5780633a46b1a81461035457600080fd5b806318160ddd1461031457806323b872dd1461032657600080fd5b806301ffc9a71461029757806306fdde03146102bf578063081812fc146102d4578063095ea7b3146102ff575b600080fd5b6102aa6102a5366004613dae565b6105ce565b60405190151581526020015b60405180910390f35b6102c761062a565b6040516102b69190613e41565b6102e76102e2366004613e54565b6106bc565b6040516001600160a01b0390911681526020016102b6565b61031261030d366004613e89565b6106e3565b005b6099545b6040519081526020016102b6565b610312610334366004613eb3565b61072f565b610318610347366004613e89565b61077d565b61031861082a565b610318610362366004613e89565b610839565b6103126108e9565b61031261037d366004613eb3565b6108fb565b610312610390366004613e54565b610944565b6102c7610958565b6103186103ab366004613e54565b6109f0565b6102c76040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6102e76103fa366004613eef565b6001600160a01b03908116600090815261019360205260409020541690565b610312610427366004613eef565b610a94565b60fb5460ff166102aa565b6102e7610445366004613e54565b610a9f565b610318610458366004613eef565b610b04565b610312610b9e565b610318610473366004613eef565b610bb0565b610312610bcf565b610488610bdf565b6040516102b69796959493929190613f0a565b61012d546001600160a01b03166102e7565b6103186104bb366004613e54565b610ca3565b6104c8610d3c565b60405165ffffffffffff90911681526020016102b6565b6102c7610d47565b6103186104f5366004613eef565b610d56565b610312610508366004613fbc565b610d78565b6102aa61051b366004613e54565b610dc0565b61031261052e3660046140bb565b610e1a565b610312610541366004614137565b610e6a565b610312610554366004613eef565b610fa0565b6102c7610567366004613e54565b611168565b61031261057a366004614197565b611173565b6102aa61058d3660046141f9565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6103126105c9366004613eef565b6111b6565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb45a3c0e000000000000000000000000000000000000000000000000000000001480610624575061062482611243565b92915050565b6060606580546106399061422c565b80601f01602080910402602001604051908101604052809291908181526020018280546106659061422c565b80156106b25780601f10610687576101008083540402835291602001916106b2565b820191906000526020600020905b81548152906001019060200180831161069557829003601f168201915b5050505050905090565b60006106c782611299565b506000908152606960205260409020546001600160a01b031690565b6101f85460ff1615610721576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072b82826112fd565b5050565b6101f85460ff161561076d576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610778838383611429565b505050565b600061078883610b04565b82106108015760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b60006108346114b0565b905090565b6000610843610d3c565b65ffffffffffff1682106108995760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b757000000000000000000000000060448201526064016107f8565b6108c46108a5836114ba565b6001600160a01b0385166000908152610194602052604090209061153a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b6108f1611604565b6108f961165f565b565b6101f85460ff1615610939576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107788383836116b1565b61094c611604565b610955816116cc565b50565b606043610963610d3c565b65ffffffffffff16146109b85760405162461bcd60e51b815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f6465000000000000000060448201526064016107f8565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b60006109fb60995490565b8210610a6f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016107f8565b60998281548110610a8257610a82614279565b90600052602060002001549050919050565b3361072b81836116d5565b6000818152606760205260408120546001600160a01b0316806106245760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f8565b60006001600160a01b038216610b825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016107f8565b506001600160a01b031660009081526068602052604090205490565b610ba6611604565b6108f96000611760565b6001600160a01b03811660009081526101966020526040812054610624565b610bd7611604565b6108f96117cb565b60006060806000806000606061015f546000801b148015610c01575061016054155b610c4d5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064016107f8565b610c55611808565b610c5d611818565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610cad610d3c565b65ffffffffffff168210610d035760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b757000000000000000000000000060448201526064016107f8565b610d18610d0f836114ba565b6101959061153a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b600061083443611828565b6060606680546106399061422c565b6001600160a01b038116600090815261019460205260408120610d18906118a6565b6101f85460ff1615610db6576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072b82826118f6565b6000818152606760205260408120546001600160a01b0316610e0e576040517fae9a63f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50506101f85460ff1690565b6101f85460ff1615610e58576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e6484848484611901565b50505050565b83421115610eba5760405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e61747572652065787069726564000000000000000060448201526064016107f8565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610f3490610f2c9060a00160405160208183030381529060405280519060200120611989565b8585856119d1565b9050610f3f816119fb565b8614610f8d5760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e636500000000000000000000000060448201526064016107f8565b610f9781886116d5565b50505050505050565b600054610100900460ff1615808015610fc05750600054600160ff909116105b80610fda5750303b158015610fda575060005460ff166001145b61104c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107f8565b6000805460ff19166001179055801561108c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6111016040518060400160405280601481526020017f4b726f6d615365637572697479436f756e63696c0000000000000000000000008152506040518060400160405280600381526020017f4b5343000000000000000000000000000000000000000000000000000000000081525084611a24565b801561072b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b606061062482611b1d565b61117b611604565b60006111876101f75490565b90506111986101f780546001019055565b6111a28382611c4a565b6111ac8183611c64565b61077883846116d5565b6111be611604565b6001600160a01b03811661123a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107f8565b61095581611760565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f49064906000000000000000000000000000000000000000000000000000000001480610624575061062482611d37565b6000818152606760205260409020546001600160a01b03166109555760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f8565b600061130882610a9f565b9050806001600160a01b0316836001600160a01b0316036113915760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b336001600160a01b03821614806113ad57506113ad813361058d565b61141f5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016107f8565b6107788383611d8d565b6114333382611e13565b6114a55760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107f8565b610778838383611e91565b6000610834612105565b600063ffffffff8211156115365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f322062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b5090565b81546000908181600581111561159757600061155584612179565b61155f90856142d7565b60008881526020902090915081015463ffffffff908116908716101561158757809150611595565b6115928160016142ee565b92505b505b60006115a587878585612261565b905080156115f6576115ca876115bc6001846142d7565b600091825260209091200190565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166115f9565b60005b979650505050505050565b61012d546001600160a01b031633146108f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f8565b6116676122bf565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61077883838360405180602001604052806000815250610e1a565b61095581612311565b6001600160a01b038281166000818152610193602052604080822080548686167fffffffffffffffffffffffff0000000000000000000000000000000000000000821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610778818361175b86612351565b61235c565b61012d80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6117d361251e565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116943390565b606061016180546106399061422c565b606061016280546106399061422c565b600065ffffffffffff8211156115365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f382062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b805460009080156118ec576118c0836115bc6001846142d7565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166118ef565b60005b9392505050565b61072b338383612571565b61190b3383611e13565b61197d5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107f8565b610e648484848461263f565b60006106246119966114b0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006119e2878787876126c8565b915091506119ef816127aa565b5090505b949350505050565b6001600160a01b0381166000908152610196602052604090208054600181018255905b50919050565b600054610100900460ff16611aa15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b611aab600161290f565b611ab583836129a0565b611abd612a27565b611ac5612a27565b611acd612aa4565b611b0c836040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612b29565b611b14612a27565b61077881611760565b6060611b2882611299565b600082815260c9602052604081208054611b419061422c565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6d9061422c565b8015611bba5780601f10611b8f57610100808354040283529160200191611bba565b820191906000526020600020905b815481529060010190602001808311611b9d57829003601f168201915b505050505090506000611bfd60408051808201909152601d81527f68747470733a2f2f6e66742e6b726f6d612e6e6574776f726b2f73632f000000602082015290565b90508051600003611c0f575092915050565b815115611c41578082604051602001611c29929190614306565b60405160208183030381529060405292505050919050565b6119f384612bb0565b61072b828260405180602001604052806000815250612c48565b6000828152606760205260409020546001600160a01b0316611cee5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e00000000000000000000000000000000000060648201526084016107f8565b600082815260c960205260409020611d068282614383565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200161115c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610624575061062482612cd1565b600081815260696020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190611dda82610a9f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611e1f83610a9f565b9050806001600160a01b0316846001600160a01b03161480611e6657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806119f35750836001600160a01b0316611e7f846106bc565b6001600160a01b031614949350505050565b826001600160a01b0316611ea482610a9f565b6001600160a01b031614611f205760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038216611f9b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f8565b611fa88383836001612db4565b826001600160a01b0316611fbb82610a9f565b6001600160a01b0316146120375760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107f8565b600081815260696020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b038781168086526068855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a46107788383836001612dc8565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612130612dd4565b612138612e2e565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008160000361218b57506000919050565b6000600161219884612e60565b901c6001901b905060018184816121b1576121b161449d565b048201901c905060018184816121c9576121c961449d565b048201901c905060018184816121e1576121e161449d565b048201901c905060018184816121f9576121f961449d565b048201901c905060018184816122115761221161449d565b048201901c905060018184816122295761222961449d565b048201901c905060018184816122415761224161449d565b048201901c90506118ef8182858161225b5761225b61449d565b04612ef4565b60005b818310156122b75760006122788484612f0a565b60008781526020902090915063ffffffff86169082015463ffffffff1611156122a3578092506122b1565b6122ae8160016142ee565b93505b50612264565b509392505050565b60fb5460ff166108f95760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107f8565b61231a81612f25565b600081815260c96020526040902080546123339061422c565b15905061095557600081815260c96020526040812061095591613d36565b600061062482610b04565b816001600160a01b0316836001600160a01b03161415801561237e5750600081115b15610778576001600160a01b03831615612451576001600160a01b03831660009081526101946020526040812081906123c2906130086123bd86613014565b6130a8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612446929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610778576001600160a01b038216600090815261019460205260408120819061248b906130f16123bd86613014565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161250f929190918252602082015260400190565b60405180910390a25050505050565b60fb5460ff16156108f95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016107f8565b816001600160a01b0316836001600160a01b0316036125d25760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107f8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61264a848484611e91565b612656848484846130fd565b610e645760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126ff57506000905060036127a1565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612753573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b03811661279a576000600192509250506127a1565b9150600090505b94509492505050565b60008160048111156127be576127be6144cc565b036127c65750565b60018160048111156127da576127da6144cc565b036128275760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107f8565b600281600481111561283b5761283b6144cc565b036128885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107f8565b600381600481111561289c5761289c6144cc565b036109555760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b600054610100900460ff1661298c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6101f8805460ff1916911515919091179055565b600054610100900460ff16612a1d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b61072b82826132b9565b600054610100900460ff166108f95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b600054610100900460ff16612b215760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6108f961334f565b600054610100900460ff16612ba65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b61072b82826133d8565b6060612bbb82611299565b6000612bf760408051808201909152601d81527f68747470733a2f2f6e66742e6b726f6d612e6e6574776f726b2f73632f000000602082015290565b90506000815111612c1757604051806020016040528060008152506118ef565b80612c2184613481565b604051602001612c32929190614306565b6040516020818303038152906040529392505050565b612c52838361353f565b612c5f60008484846130fd565b6107785760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480612d6457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061062457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610624565b612dbc61251e565b610e64848484846136fa565b610e6484848484613836565b600080612ddf611808565b805190915015612df6578051602090910120919050565b61015f548015612e065792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080612e39611818565b805190915015612e50578051602090910120919050565b610160548015612e065792915050565b600080608083901c15612e7557608092831c92015b604083901c15612e8757604092831c92015b602083901c15612e9957602092831c92015b601083901c15612eab57601092831c92015b600883901c15612ebd57600892831c92015b600483901c15612ecf57600492831c92015b600283901c15612ee157600292831c92015b600183901c156106245760010192915050565b6000818310612f0357816118ef565b5090919050565b6000612f1960028484186144fb565b6118ef908484166142ee565b6000612f3082610a9f565b9050612f40816000846001612db4565b612f4982610a9f565b600083815260696020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b0385168085526068845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461072b816000846001612dc8565b60006118ef8284614536565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156115365760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016107f8565b6000806130e46130c66130b9610d3c565b65ffffffffffff166114ba565b6130dc6130d2886118a6565b868863ffffffff16565b879190613846565b915091505b935093915050565b60006118ef8284614573565b60006001600160a01b0384163b156132b1576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a029061315a9033908990889088906004016145aa565b6020604051808303816000875af19250505080156131b3575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526131b0918101906145e6565b60015b613266573d8080156131e1576040519150601f19603f3d011682016040523d82523d6000602084013e6131e6565b606091505b50805160000361325e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506119f3565b5060016119f3565b600054610100900460ff166133365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b60656133428382614383565b5060666107788282614383565b600054610100900460ff166133cc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b60fb805460ff19169055565b600054610100900460ff166134555760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6101616134628382614383565b506101626134708282614383565b5050600061015f8190556101605550565b6060600061348e83613854565b600101905060008167ffffffffffffffff8111156134ae576134ae613ff8565b6040519080825280601f01601f1916602001820160405280156134d8576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846134e257509392505050565b6001600160a01b0382166135955760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f8565b6000818152606760205260409020546001600160a01b0316156135fa5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b613608600083836001612db4565b6000818152606760205260409020546001600160a01b03161561366d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461072b600083836001612dc8565b60018111156137715760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f72746564000000000000000000000060648201526084016107f8565b816001600160a01b0385166137cd576137c881609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6137f0565b836001600160a01b0316856001600160a01b0316146137f0576137f08582613936565b6001600160a01b03841661380c57613807816139d3565b61382f565b846001600160a01b0316846001600160a01b03161461382f5761382f8482613a82565b5050505050565b613841848483613ac6565b610e64565b6000806130e4858585613b3f565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061389d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106138c9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106138e757662386f26fc10000830492506010015b6305f5e10083106138ff576305f5e100830492506008015b612710831061391357612710830492506004015b60648310613925576064830492506002015b600a83106106245760010192915050565b6000600161394384610b04565b61394d91906142d7565b6000838152609860205260409020549091508082146139a0576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906139e5906001906142d7565b6000838152609a602052604081205460998054939450909284908110613a0d57613a0d614279565b906000526020600020015490508060998381548110613a2e57613a2e614279565b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480613a6657613a66614603565b6001900381819060005260206000200160009055905550505050565b6000613a8d83610b04565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6001600160a01b038316613ae957613ae66101956130f16123bd84613014565b50505b6001600160a01b038216613b0c57613b096101956130086123bd84613014565b50505b6001600160a01b03838116600090815261019360205260408082205485841683529120546107789291821691168361235c565b825460009081908015613cc7576000613b5d876115bc6001856142d7565b60408051808201909152905463ffffffff8082168084526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660208401529192509087161015613bf45760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016107f8565b805163ffffffff808816911603613c525784613c15886115bc6001866142d7565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff909216919091179055613cb7565b6040805180820190915263ffffffff80881682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b6020015192508391506130e99050565b50506040805180820190915263ffffffff80851682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a8152918220955192519093166401000000000291909316179201919091559050816130e9565b508054613d429061422c565b6000825580601f10613d52575050565b601f01602090049060005260206000209081019061095591905b808211156115365760008155600101613d6c565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461095557600080fd5b600060208284031215613dc057600080fd5b81356118ef81613d80565b60005b83811015613de6578181015183820152602001613dce565b83811115610e645750506000910152565b60008151808452613e0f816020860160208601613dcb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006118ef6020830184613df7565b600060208284031215613e6657600080fd5b5035919050565b80356001600160a01b0381168114613e8457600080fd5b919050565b60008060408385031215613e9c57600080fd5b613ea583613e6d565b946020939093013593505050565b600080600060608486031215613ec857600080fd5b613ed184613e6d565b9250613edf60208501613e6d565b9150604084013590509250925092565b600060208284031215613f0157600080fd5b6118ef82613e6d565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152613f4660e084018a613df7565b8381036040850152613f58818a613df7565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015613faa57835183529284019291840191600101613f8e565b50909c9b505050505050505050505050565b60008060408385031215613fcf57600080fd5b613fd883613e6d565b915060208301358015158114613fed57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff8084111561404257614042613ff8565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561408857614088613ff8565b816040528093508581528686860111156140a157600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156140d157600080fd5b6140da85613e6d565b93506140e860208601613e6d565b925060408501359150606085013567ffffffffffffffff81111561410b57600080fd5b8501601f8101871361411c57600080fd5b61412b87823560208401614027565b91505092959194509250565b60008060008060008060c0878903121561415057600080fd5b61415987613e6d565b95506020870135945060408701359350606087013560ff8116811461417d57600080fd5b9598949750929560808101359460a0909101359350915050565b600080604083850312156141aa57600080fd5b6141b383613e6d565b9150602083013567ffffffffffffffff8111156141cf57600080fd5b8301601f810185136141e057600080fd5b6141ef85823560208401614027565b9150509250929050565b6000806040838503121561420c57600080fd5b61421583613e6d565b915061422360208401613e6d565b90509250929050565b600181811c9082168061424057607f821691505b602082108103611a1e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156142e9576142e96142a8565b500390565b60008219821115614301576143016142a8565b500190565b60008351614318818460208801613dcb565b83519083019061432c818360208801613dcb565b01949350505050565b601f82111561077857600081815260208120601f850160051c8101602086101561435c5750805b601f850160051c820191505b8181101561437b57828155600101614368565b505050505050565b815167ffffffffffffffff81111561439d5761439d613ff8565b6143b1816143ab845461422c565b84614335565b602080601f83116001811461440457600084156143ce5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561437b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561445157888601518255948401946001909101908401614432565b508582101561448d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082614531577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381169083168181101561456b5761456b6142a8565b039392505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851680830382111561432c5761432c6142a8565b60006001600160a01b038087168352808616602084015250836040830152608060608301526145dc6080830184613df7565b9695505050505050565b6000602082840312156145f857600080fd5b81516118ef81613d80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c634300080f000a", + "root": "0x24c7b86662c0241c882a6978a46db78d5ed0daa1146ec27df7e9fbdc82194fef", + "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", + "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "ff" + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, - "key": "0xf4287fed167fec7954bb399166ce3d71ff3403537a3670b1b2d199d0048c9a44" + "key": "0x7cb5c2b5a0b80e4fad4cf89bdd73a61db77d1c6dc957bae688b8b7bba3f76422" }, "0x9a676e781a523b5d0c0e43731313a708cb607508": { "balance": "0", "nonce": 1, - "root": "0xf920763341255140764b26402c985eeda3b348ffd79c046067882f6e371d4015", + "root": "0xbe821090d5e691b2bdda5360d78ebf086525d132d1d252caf26b4be381cba077", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000067": "55706772616465476f7665726e6f72000000000000000000000000000000001e", - "0x0000000000000000000000000000000000000000000000000000000000000068": "312e302e3000000000000000000000000000000000000000000000000000000a", - "0x00000000000000000000000000000000000000000000000000000000000000fd": "55706772616465476f7665726e6f72000000000000000000000000000000001e", - "0x0000000000000000000000000000000000000000000000000000000000000130": "64", - "0x0000000000000000000000000000000000000000000000000000000000000131": "01", - "0x0000000000000000000000000000000000000000000000000000000000000193": "a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "0x00000000000000000000000000000000000000000000000000000000000001c7": "01", - "0x00000000000000000000000000000000000000000000000000000000000001f8": "0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "9d4454b023096f34b160d6b654540c56a1f81688", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3", - "0xff6df30967a6a678f565c59a19e91e5c0dbb20cfe9f9bf26d7da6dea0fffa24c": "3300000032" + "0x0000000000000000000000000000000000000000000000000000000000000098": "01", + "0x15d26c5d60ceb1d1bf9f45a3701d867d4ba66aa590a0268bb221c6c3f56439e0": "01", + "0x323ff419e6b1c6fb11e92cad6508c70d802b27074818ee02799994aa6403429a": "01", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "8f86403a4de0bb5791fa46b8e795c547942fe4cf", + "0x540beaa70c38460c9652e5cffaec3685ff3a7a60ac201de589a1b7ff54178ca8": "01", + "0x7a9063cff4dcff21a2b2f1e67ae95f0c195c18b3b736c251a0911c20a1caaa57": "01", + "0x7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8c": "5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0xa57b75c0a22a0b32812d6b2ffb2227d354eec99aa85fcb20e6458f1d1277632b": "01", + "0xa7f0fe6b160f14839da5807e54d8be701aeb7039e18d9515384c8011270d6e78": "5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0xafe71ff1fe81c59ca16af21c02420893e650adae4948ece1623218f842885478": "5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0xb33a3829f2d1f31fd111fcd13892b72b93a782f7b93bf968903b15b040efa321": "5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x77cfca9fde84ccd54b40d754f2f3d4f4ebb6c53bf6f9bc52d4168b4bc026e898" }, "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae": { "balance": "0", "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0x354b26999e434f8256d168395315e1f51fc15bf49bf2e6bb58fc549bd597e7da", - "code": "0x7c010000000000000000000000000000000000000000000000000000000060003504806329a5f2f6149063299e566014176200003757fe5b7f109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b6020527f16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e06040527f2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d6060527f2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd7716080527f2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe2360a0527f101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa60c0527f143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a760e0527f176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911610100527f19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0610120527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016024356004356000837f0ee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e82089050837f00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e86483089150837f08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f58408925083818180828009800909905083828180828009800909915083838180828009800909925062000249600052620025ba565b837f2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d082089050837f2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf283089150837f0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa84089250838181808280098009099050838281808280098009099150838381808280098009099250620002ec600052620025ba565b837f28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d82089050837f2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb7883089150837f234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632840892508381818082800980090990508382818082800980090991508383818082800980090992506200038f600052620025ba565b837f15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d42882089050837f0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f683089150837f1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c8408925083818180828009800909905083828180828009800909915083838180828009800909925062000432600052620025ba565b837f10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de55982089050837f1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f683089150837f1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c870584089250838181808280098009099050620004bd600052620025ba565b837f04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d82089050837f0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be82883089150837f099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b98408925083818180828009800909905062000548600052620025ba565b837f052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa682089050837f0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc83089150837f119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd184089250838181808280098009099050620005d3600052620025ba565b837f03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d0982089050837f2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea56583089150837f005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9840892508381818082800980090990506200065e600052620025ba565b837f233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b582089050837f05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d6028083089150837f0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b84089250838181808280098009099050620006e9600052620025ba565b837f2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec082089050837f1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c46083089150837f12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc08408925083818180828009800909905062000774600052620025ba565b837f0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e82089050837f037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f844883089150837f05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f84089250838181808280098009099050620007ff600052620025ba565b837f29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e82089050837f20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f83089150837f2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887840892508381818082800980090990506200088a600052620025ba565b837f143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c882089050837f0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf183089150837f028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da538408925083818180828009800909905062000915600052620025ba565b837f2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c82089050837f0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e83089150837f2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb3884089250838181808280098009099050620009a0600052620025ba565b837f30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a73520682089050837f1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad83089150837f10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c8408925083818180828009800909905062000a2b600052620025ba565b837f2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef82089050837f1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c9183089150837f07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a08408925083818180828009800909905062000ab6600052620025ba565b837f21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c075082089050837f2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e83089150837f2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e8408925083818180828009800909905062000b41600052620025ba565b837f162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab82089050837f2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a7009239331183089150837f2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a8408925083818180828009800909905062000bcc600052620025ba565b837f1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da982089050837f204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c456552983089150837f0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c5028408925083818180828009800909905062000c57600052620025ba565b837f174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b5482089050837f1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef83089150837f066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a8408925083818180828009800909905062000ce2600052620025ba565b837f2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd80482089050837f13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd64983089150837f1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a8408925083818180828009800909905062000d6d600052620025ba565b837f00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff182089050837f0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d383089150837f29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba898408925083818180828009800909905062000df8600052620025ba565b837f2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be82089050837f1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af183089150837f151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c58408925083818180828009800909905062000e83600052620025ba565b837f04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f10082089050837f13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c296783089150837f01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e48408925083818180828009800909905062000f0e600052620025ba565b837f2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b0282089050837f1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b64683089150837f041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d8408925083818180828009800909905062000f99600052620025ba565b837f154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc682089050837f0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da483089150837f0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e8408925083818180828009800909905062001024600052620025ba565b837f06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea065462682089050837f0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb83089150837f04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e1384089250838181808280098009099050620010af600052620025ba565b837f2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b375882089050837f123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef83089150837f2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9840892508381818082800980090990506200113a600052620025ba565b837f0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d82089050837f12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f283089150837f21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a9003584089250838181808280098009099050620011c5600052620025ba565b837f16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b14782089050837f1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac283089150837f07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a8408925083818180828009800909905062001250600052620025ba565b837f05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc82089050837f20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f83089150837f04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db6984089250838181808280098009099050620012db600052620025ba565b837f27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a82089050837f2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d183089150837f1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b88408925083818180828009800909905062001366600052620025ba565b837f15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a82089050837f1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c78583089150837f25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c7784089250838181808280098009099050620013f1600052620025ba565b837f15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a6782089050837f2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c7172783089150837f002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b840892508381818082800980090990506200147c600052620025ba565b837f2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d282089050837f00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe83089150837f0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c35128408925083818180828009800909905062001507600052620025ba565b837f00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d82089050837f171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda983089150837f170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a8088408925083818180828009800909905062001592600052620025ba565b837f29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae182089050837f1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e6497383089150837f1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09840892508381818082800980090990506200161d600052620025ba565b837f22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af3882089050837f0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd83089150837f11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e828484089250838181808280098009099050620016a8600052620025ba565b837f1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af82089050837f2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee46683089150837f3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad8408925083818180828009800909905062001733600052620025ba565b837f2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c822514508682089050837f119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c383089150837f1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd80084089250838181808280098009099050620017be600052620025ba565b837f28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb682089050837f083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e783089150837f0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b8408925083818180828009800909905062001849600052620025ba565b837f0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b82089050837f2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c9859183089150837f0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f17884089250838181808280098009099050620018d4600052620025ba565b837f0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d4082089050837f1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d483089150837f0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233840892508381818082800980090990506200195f600052620025ba565b837f0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b16887382089050837f1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d83089150837f2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc084089250838181808280098009099050620019ea600052620025ba565b837f1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb82089050837f01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f932647887583089150837f1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e8408925083818180828009800909905062001a75600052620025ba565b837f2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f01982089050837f23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b83089150837f2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d598408925083818180828009800909905062001b00600052620025ba565b837f0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f82089050837f2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a883089150837f15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f889488408925083818180828009800909905062001b8b600052620025ba565b837f193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f82089050837f2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f83089150837f1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d1428408925083818180828009800909905062001c16600052620025ba565b837f04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b82089050837f0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f2383089150837f058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c08408925083818180828009800909905062001ca1600052620025ba565b837f1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a82089050837f03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b583089150837f23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a588408925083818180828009800909905062001d2c600052620025ba565b837f0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f282089050837f06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b83089150837f118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d018408925083818180828009800909905062001db7600052620025ba565b837f13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b182089050837f169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b83089150837f04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d8408925083818180828009800909905062001e42600052620025ba565b837f256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec82089050837f30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb283089150837f10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc7928408925083818180828009800909905062001ecd600052620025ba565b837f193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e3686082089050837f18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d83089150837f29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea61118408925083818180828009800909905062001f58600052620025ba565b837f10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c71182089050837f0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb83089150837f16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa3368408925083818180828009800909905062001fe3600052620025ba565b837f0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a82089050837f1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf186083089150837f0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6840892508381818082800980090990506200206e600052620025ba565b837f161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b82089050837f0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b83089150837f1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f45184089250838181808280098009099050620020f9600052620025ba565b837f2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c55682089050837f1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f7083089150837f2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf778408925083818180828009800909905062002184600052620025ba565b837f23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea82089050837f09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d83089150837f188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630840892508381818082800980090990506200220f600052620025ba565b837f3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f82089050837f15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd7883089150837f1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc840892508381818082800980090990506200229a600052620025ba565b837f2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb82089050837f202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d6083089150837f096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f8408925083818180828009800909905062002325600052620025ba565b837f054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a482089050837f1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f183089150837f21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc84089250838181808280098009099050838281808280098009099150838381808280098009099250620023c8600052620025ba565b837f1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf0882089050837f0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb2410083089150837f1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320840892508381818082800980090990508382818082800980090991508383818082800980090992506200246b600052620025ba565b837f0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad87082089050837f193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba83089150837f102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8840892508381818082800980090990508382818082800980090991508383818082800980090992506200250e600052620025ba565b837f0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab182089050837f216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d2283089150837f1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e422832516184089250838181808280098009099050838281808280098009099150838381808280098009099250620025b1600052620025ba565b60005260206000f35b8360205182098460405184098591088460605185098591088460805183098560a05185098691088560c05186098691088560e0518409866101005186098791088661012051870987910894509250905060005156", - "key": "0x17c85ecbaedd35be311ad177fb8cd266d4d6ca50961076aa5df5287d787e84b3" - }, - "0x9d4454b023096f34b160d6b654540c56a1f81688": { - "balance": "0", - "nonce": 1, - "root": "0x01f9e62d19297f681ea2208de1fec6c67ed86a26e55dbf4b27a1b0881060507b", - "codeHash": "0x032951ba4bf0d8d857d02de99c2aa30177d9ab6b78004524a5b3c52de71caf02", - "code": "0x60806040526004361061030c5760003560e01c80637b3c71d31161019a578063c01f9e37116100e1578063ea0217cf1161008a578063f23a6e6111610064578063f23a6e6114610a9e578063f8ce560a14610ae3578063fc0c546a14610b0357600080fd5b8063ea0217cf14610a3e578063eb9019d414610a5e578063ece40cc114610a7e57600080fd5b8063d33219b4116100bb578063d33219b4146109a5578063dd4e2ba5146109c4578063deaaa7cc14610a0a57600080fd5b8063c01f9e3714610938578063c28bc2fa14610972578063c59057e41461098557600080fd5b80639a802a6d11610143578063ab58fb8e1161011d578063ab58fb8e146108be578063b58131b0146108de578063bc197c81146108f357600080fd5b80639a802a6d14610869578063a7713a7014610889578063a890c9101461089e57600080fd5b806386489ba91161017457806386489ba91461080957806391ddadf41461082957806397c3d3341461085557600080fd5b80637b3c71d3146107a15780637d5e81e2146107c157806384b0196e146107e157600080fd5b80633932abb11161025e578063544ffc9c116102075780635f398a14116101e15780635f398a141461074157806360c4247f1461076157806370b0f6601461078157600080fd5b8063544ffc9c1461068557806354fd4d50146106db578063567813881461072157600080fd5b806343859632116102385780634385963214610605578063452115d6146106505780634bf5d7e91461067057600080fd5b80633932abb1146105a35780633bccf4fd146105b85780633e4f49e6146105d857600080fd5b8063143489d0116102c05780632656227d1161029a5780632656227d146105255780632d63f693146105385780632fe3e2611461056f57600080fd5b8063143489d014610436578063150b7a0214610490578063160cbed71461050557600080fd5b806303420181116102f157806303420181146103d457806306f3f9e6146103f457806306fdde031461041457600080fd5b806301ffc9a71461037c57806302a251a3146103b157600080fd5b36610377573061031a610b24565b6001600160a01b0316146103755760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561038857600080fd5b5061039c610397366004614a0c565b610b3e565b60405190151581526020015b60405180910390f35b3480156103bd57600080fd5b506103c6610b4f565b6040519081526020016103a8565b3480156103e057600080fd5b506103c66103ef366004614b8e565b610b5b565b34801561040057600080fd5b5061037561040f366004614c35565b610c53565b34801561042057600080fd5b50610429610d0d565b6040516103a89190614caa565b34801561044257600080fd5b50610478610451366004614c35565b600090815260fe60205260409020546801000000000000000090046001600160a01b031690565b6040516001600160a01b0390911681526020016103a8565b34801561049c57600080fd5b506104d46104ab366004614cd2565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a8565b34801561051157600080fd5b506103c6610520366004614eac565b610d9f565b6103c6610533366004614eac565b611045565b34801561054457600080fd5b506103c6610553366004614c35565b600090815260fe602052604090205467ffffffffffffffff1690565b34801561057b57600080fd5b506103c67fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156105af57600080fd5b506103c66111ab565b3480156105c457600080fd5b506103c66105d3366004614f3c565b6111b7565b3480156105e457600080fd5b506105f86105f3366004614c35565b61122d565b6040516103a89190614fb9565b34801561061157600080fd5b5061039c610620366004614ffa565b6000828152610161602090815260408083206001600160a01b038516845260030190915290205460ff1692915050565b34801561065c57600080fd5b506103c661066b366004614eac565b611238565b34801561067c57600080fd5b50610429611369565b34801561069157600080fd5b506106c06106a0366004614c35565b600090815261016160205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016103a8565b3480156106e757600080fd5b5060408051808201909152600581527f312e302e300000000000000000000000000000000000000000000000000000006020820152610429565b34801561072d57600080fd5b506103c661073c36600461502a565b61142f565b34801561074d57600080fd5b506103c661075c366004615056565b611458565b34801561076d57600080fd5b506103c661077c366004614c35565b6114a2565b34801561078d57600080fd5b5061037561079c366004614c35565b611597565b3480156107ad57600080fd5b506103c66107bc3660046150da565b61164e565b3480156107cd57600080fd5b506103c66107dc366004615134565b611696565b3480156107ed57600080fd5b506107f66116ad565b6040516103a89796959493929190615224565b34801561081557600080fd5b506103756108243660046152a0565b61176f565b34801561083557600080fd5b5061083e611951565b60405165ffffffffffff90911681526020016103a8565b34801561086157600080fd5b5060646103c6565b34801561087557600080fd5b506103c66108843660046152f9565b6119de565b34801561089557600080fd5b506103c66119f5565b3480156108aa57600080fd5b506103756108b9366004615352565b611a37565b3480156108ca57600080fd5b506103c66108d9366004614c35565b611aee565b3480156108ea57600080fd5b506103c6611ba3565b3480156108ff57600080fd5b506104d461090e36600461536f565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561094457600080fd5b506103c6610953366004614c35565b600090815260fe602052604090206001015467ffffffffffffffff1690565b610375610980366004615403565b611baf565b34801561099157600080fd5b506103c66109a0366004614eac565b611ce5565b3480156109b157600080fd5b506101f8546001600160a01b0316610478565b3480156109d057600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e90820152610429565b348015610a1657600080fd5b506103c67f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610a4a57600080fd5b50610375610a59366004614c35565b611d1f565b348015610a6a57600080fd5b506103c6610a79366004615447565b611dd6565b348015610a8a57600080fd5b50610375610a99366004614c35565b611df7565b348015610aaa57600080fd5b506104d4610ab9366004615473565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b348015610aef57600080fd5b506103c6610afe366004614c35565b611eae565b348015610b0f57600080fd5b5061019354610478906001600160a01b031681565b6000610b396101f8546001600160a01b031690565b905090565b6000610b4982611eb9565b92915050565b6000610b396101305490565b600080610bff610bf77fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610b979291906154dc565b60405180910390208b80519060200120604051602001610bdc959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120611f0f565b868686611f57565b9050610c458a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250611f75915050565b9a9950505050505050505050565b610c5b610b24565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30610cc4610b24565b6001600160a01b031614610d015760008036604051610ce49291906154dc565b604051809103902090505b80610cfa60ff6120e5565b03610cef57505b610d0a816121a2565b50565b606060fd8054610d1c906154ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610d48906154ec565b8015610d955780601f10610d6a57610100808354040283529160200191610d95565b820191906000526020600020905b815481529060010190602001808311610d7857829003601f168201915b5050505050905090565b600080610dae86868686611ce5565b90506004610dbb8261122d565b6007811115610dcc57610dcc614f8a565b14610e3f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c00000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6101f854604080517ff27a0c9200000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec7919061553f565b6101f8546040517fb1c5f4270000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063b1c5f42790610f1b908a908a908a906000908b906004016155e6565b602060405180830381865afa158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c919061553f565b60008381526101f96020526040808220929092556101f85491517f8f2a0bb00000000000000000000000000000000000000000000000000000000081526001600160a01b0390921691638f2a0bb091610fc2918b918b918b91908b908990600401615634565b600060405180830381600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261102291906156bb565b604080519283526020830191909152015b60405180910390a15095945050505050565b60008061105486868686611ce5565b905060006110618261122d565b9050600481600781111561107757611077614f8a565b14806110945750600581600781111561109257611092614f8a565b145b6111065760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c00000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b600082815260fe60205260409081902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906111729084815260200190565b60405180910390a16111878288888888612343565b61119482888888886123e5565b6111a182888888886123f2565b5095945050505050565b6000610b3961012f5490565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061120590610bf790608001610bdc565b905061122287828860405180602001604052806000815250612438565b979650505050505050565b6000610b498261245b565b60008061124786868686611ce5565b905060006112548261122d565b600781111561126557611265614f8a565b146112b25760405162461bcd60e51b815260206004820152601c60248201527f476f7665726e6f723a20746f6f206c61746520746f2063616e63656c00000000604482015260640161036c565b600081815260fe60205260409020546801000000000000000090046001600160a01b0316336001600160a01b0316146113535760405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a206f6e6c792070726f706f7365722063616e2063616e6360448201527f656c000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b61135f868686866125da565b9695505050505050565b61019354604080517f4bf5d7e900000000000000000000000000000000000000000000000000000000815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156113ee57506040513d6000823e601f3d908101601f191682016040526113eb91908101906156d3565b60015b61142a575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061145084828560405180602001604052806000815250612438565b949350505050565b60008033905061122287828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611f75915050565b6101c7546000908082036114bb5750506101c654919050565b60006101c76114cb600184615741565b815481106114db576114db615758565b60009182526020918290206040805180820190915291015463ffffffff81168083526401000000009091047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928201929092529150841061155c57602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b611571611568856125e8565b6101c790612668565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b61159f610b24565b6001600160a01b0316336001600160a01b0316146115ff5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611608610b24565b6001600160a01b03161461164557600080366040516116289291906154dc565b604051809103902090505b8061163e60ff6120e5565b0361163357505b610d0a81612731565b60008033905061135f86828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061243892505050565b60006116a485858585612774565b95945050505050565b6000606080600080600060606065546000801b1480156116cd5750606654155b6117195760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a65640000000000000000000000604482015260640161036c565b611721612ca9565b611729612cb8565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b600054610100900460ff161580801561178f5750600054600160ff909116105b806117a95750303b1580156117a9575060005460ff166001145b61181b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161036c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561187957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6118b76040518060400160405280600f81526020017f55706772616465476f7665726e6f720000000000000000000000000000000000815250612cc7565b6118c2858585612d90565b6118ca612e1d565b6118d387612e9c565b6118dc82612f22565b6118e586612fa8565b801561194857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b61019354604080517f91ddadf400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156119d1575060408051601f3d908101601f191682019092526119ce91810190615787565b60015b61142a57610b394361302e565b60006119eb8484846130ac565b90505b9392505050565b6101c75460009015611a2f57611a0c6101c761313c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b506101c65490565b611a3f610b24565b6001600160a01b0316336001600160a01b031614611a9f5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611aa8610b24565b6001600160a01b031614611ae55760008036604051611ac89291906154dc565b604051809103902090505b80611ade60ff6120e5565b03611ad357505b610d0a81613182565b6101f85460008281526101f960205260408082205490517fd45c44350000000000000000000000000000000000000000000000000000000081526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015611b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8a919061553f565b905080600114611b9a57806119ee565b60009392505050565b6000610b396101315490565b611bb7610b24565b6001600160a01b0316336001600160a01b031614611c175760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611c20610b24565b6001600160a01b031614611c5d5760008036604051611c409291906154dc565b604051809103902090505b80611c5660ff6120e5565b03611c4b57505b600080856001600160a01b0316858585604051611c7b9291906154dc565b60006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b50915091506119488282604051806060016040528060288152602001615b8460289139613205565b600084848484604051602001611cfe94939291906157af565b60408051601f19818403018152919052805160209091012095945050505050565b611d27610b24565b6001600160a01b0316336001600160a01b031614611d875760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611d90610b24565b6001600160a01b031614611dcd5760008036604051611db09291906154dc565b604051809103902090505b80611dc660ff6120e5565b03611dbb57505b610d0a8161321e565b60006119ee8383611df260408051602081019091526000815290565b6130ac565b611dff610b24565b6001600160a01b0316336001600160a01b031614611e5f5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611e68610b24565b6001600160a01b031614611ea55760008036604051611e889291906154dc565b604051809103902090505b80611e9e60ff6120e5565b03611e9357505b610d0a816132d7565b6000610b498261331a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6e665ced000000000000000000000000000000000000000000000000000000001480610b495750610b49826133c2565b6000610b49611f1c61356c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000611f6887878787613576565b915091506111a18161363a565b600085815260fe602052604081206001611f8e8861122d565b6007811115611f9f57611f9f614f8a565b146120125760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201527f6976650000000000000000000000000000000000000000000000000000000000606482015260840161036c565b805460009061202d90889067ffffffffffffffff16866130ac565b905061203c888888848861379f565b835160000361209157866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48988848960405161208494939291906157fa565b60405180910390a2611222565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871289888489896040516120d2959493929190615822565b60405180910390a2979650505050505050565b600061210d8254600f81810b700100000000000000000000000000000000909204900b131590565b15612144576040517f3db2a12a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583547fffffffffffffffffffffffffffffffff000000000000000000000000000000001692016fffffffffffffffffffffffffffffffff169190911790915590565b606481111561223f5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e6160648201527f746f720000000000000000000000000000000000000000000000000000000000608482015260a40161036c565b60006122496119f5565b9050801580159061225b57506101c754155b156122d65760408051808201909152600081526101c7906020810161227f84613992565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b6123046122f16122e4611951565b65ffffffffffff166125e8565b6122fa84613992565b6101c79190613a26565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b3061234c610b24565b6001600160a01b0316146123de5760005b84518110156123dc57306001600160a01b031685828151811061238257612382615758565b60200260200101516001600160a01b0316036123cc576123cc8382815181106123ad576123ad615758565b60200260200101518051906020012060ff613a4190919063ffffffff16565b6123d581615868565b905061235d565b505b5050505050565b6123de8585858585613a93565b306123fb610b24565b6001600160a01b0316146123de5760ff54600f81810b700100000000000000000000000000000000909204900b13156123de57600060ff556123de565b60006116a48585858561245660408051602081019091526000815290565b611f75565b60008061246783613b21565b9050600481600781111561247d5761247d614f8a565b146124885792915050565b60008381526101f96020526040902054806124a4575092915050565b6101f8546040517f2ab0f529000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252b91906158a0565b1561253a575060079392505050565b6101f8546040517f584b153e000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa15801561259d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c191906158a0565b156125d0575060059392505050565b5060029392505050565b60006116a485858585613c64565b600063ffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b5090565b8154600090818160058111156126c557600061268384613d33565b61268d9085615741565b60008881526020902090915081015463ffffffff90811690871610156126b5578091506126c3565b6126c08160016156bb565b92505b505b60006126d387878585613e1b565b90508015612724576126f8876126ea600184615741565b600091825260209091200190565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611222565b6000979650505050505050565b61012f5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161012f55565b6000336127818184613e79565b6127cd5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161036c565b60006127d7611951565b65ffffffffffff1690506127e9611ba3565b6127f883610a79600185615741565b101561286c5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f77207060448201527f726f706f73616c207468726573686f6c64000000000000000000000000000000606482015260840161036c565b60006128818888888880519060200120611ce5565b905086518851146128fa5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b85518851146129715760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b60008851116129c25760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161036c565b600081815260fe602052604090205467ffffffffffffffff1615612a4e5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c726561647920657869737460448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6000612a586111ab565b612a6290846156bb565b90506000612a6e610b4f565b612a7890836156bb565b90506040518060e00160405280612a8e84613fc9565b67ffffffffffffffff1681526001600160a01b038716602082015260006040820152606001612abc83613fc9565b67ffffffffffffffff9081168252600060208084018290526040808501839052606094850183905288835260fe8252918290208551815492870151878501519186167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317680100000000000000006001600160a01b039094168402177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000060e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c0909401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009094169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115612c4657612c46614aa8565b604051908082528060200260200182016040528015612c7957816020015b6060815260200190600190039081612c645790505b508d88888f604051612c93999897969594939291906158c2565b60405180910390a1509098975050505050505050565b606060678054610d1c906154ec565b606060688054610d1c906154ec565b600054610100900460ff16612d445760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b612d8781612d8260408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b614049565b610d0a816140ee565b600054610100900460ff16612e0d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b612e1883838361417b565b505050565b600054610100900460ff16612e9a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b565b600054610100900460ff16612f195760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a81614213565b600054610100900460ff16612f9f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a816142cb565b600054610100900460ff166130255760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a81614348565b600065ffffffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f3820626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b610193546040517f3a46b1a80000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613118573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb919061553f565b80546000908015611b9a57613156836126ea600184615741565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166119ee565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606083156132145750816119ee565b6119ee83836143c5565b600081116132945760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f642060448201527f746f6f206c6f7700000000000000000000000000000000000000000000000000606482015260840161036c565b6101305460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161013055565b6101315460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161013155565b60006064613327836114a2565b610193546040517f8e539e8c000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa15801561338a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ae919061553f565b6133b8919061599a565b610b499190615a06565b60007f51159c06000000000000000000000000000000000000000000000000000000007fc6fba1f8000000000000000000000000000000000000000000000000000000007fbf26d897000000000000000000000000000000000000000000000000000000007f79dd796f000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000861682148061349c57507fffffffff00000000000000000000000000000000000000000000000000000000868116908216145b806134cb57507fffffffff00000000000000000000000000000000000000000000000000000000868116908516145b8061351757507fffffffff0000000000000000000000000000000000000000000000000000000086167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061135f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008716149695505050505050565b6000610b396143ef565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156135ad5750600090506003613631565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613601573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661362a57600060019250925050613631565b9150600090505b94509492505050565b600081600481111561364e5761364e614f8a565b036136565750565b600181600481111561366a5761366a614f8a565b036136b75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161036c565b60028160048111156136cb576136cb614f8a565b036137185760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161036c565b600381600481111561372c5761372c614f8a565b03610d0a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6000858152610161602090815260408083206001600160a01b0388168452600381019092529091205460ff161561383e5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72566f74696e6753696d706c653a20766f746520616c72656160448201527f6479206361737400000000000000000000000000000000000000000000000000606482015260840161036c565b6001600160a01b0385166000908152600382016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560ff84166138a8578281600001600082825461389d91906156bb565b909155506123dc9050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8516016138e6578281600101600082825461389d91906156bb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff851601613924578281600201600082825461389d91906156bb565b60405162461bcd60e51b815260206004820152603560248201527f476f7665726e6f72566f74696e6753696d706c653a20696e76616c696420766160448201527f6c756520666f7220656e756d20566f7465547970650000000000000000000000606482015260840161036c565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156126645760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f3234206269747300000000000000000000000000000000000000000000000000606482015260840161036c565b600080613a34858585614463565b915091505b935093915050565b815470010000000000000000000000000000000090819004600f0b6000818152600180860160205260409091209390935583546fffffffffffffffffffffffffffffffff908116939091011602179055565b6101f8546040517fe38335e50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063e38335e5903490613ae89088908890889060009089906004016155e6565b6000604051808303818588803b158015613b0157600080fd5b505af1158015613b15573d6000803e3d6000fd5b50505050505050505050565b600081815260fe60205260408120600281015460ff1615613b455750600792915050565b6002810154610100900460ff1615613b605750600292915050565b600083815260fe602052604081205467ffffffffffffffff1690819003613bc95760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161036c565b6000613bd3611951565b65ffffffffffff169050808210613bef57506000949350505050565b600085815260fe602052604090206001015467ffffffffffffffff16818110613c1e5750600195945050505050565b613c278661465a565b8015613c4757506000868152610161602052604090208054600190910154115b15613c585750600495945050505050565b50600395945050505050565b600080613c73868686866146a8565b60008181526101f96020526040902054909150156116a4576101f85460008281526101f96020526040908190205490517fc4d252f50000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163c4d252f591613ce89160040190815260200190565b600060405180830381600087803b158015613d0257600080fd5b505af1158015613d16573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600081600003613d4557506000919050565b60006001613d52846147d1565b901c6001901b90506001818481613d6b57613d6b6159d7565b048201901c90506001818481613d8357613d836159d7565b048201901c90506001818481613d9b57613d9b6159d7565b048201901c90506001818481613db357613db36159d7565b048201901c90506001818481613dcb57613dcb6159d7565b048201901c90506001818481613de357613de36159d7565b048201901c90506001818481613dfb57613dfb6159d7565b048201901c90506119ee81828581613e1557613e156159d7565b04614865565b60005b81831015613e71576000613e32848461487b565b60008781526020902090915063ffffffff86169082015463ffffffff161115613e5d57809250613e6b565b613e688160016156bb565b93505b50613e1e565b509392505050565b80516000906034811015613e91576001915050610b49565b8281017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec01517fffffffffffffffffffffffff000000000000000000000000000000000000000081167f2370726f706f7365723d3078000000000000000000000000000000000000000014613f0b57600192505050610b49565b600080613f19602885615741565b90505b83811015613fa857600080613f68888481518110613f3c57613f3c615758565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016614896565b9150915081613f805760019650505050505050610b49565b8060ff166004856001600160a01b0316901b179350505080613fa190615868565b9050613f1c565b50856001600160a01b0316816001600160a01b031614935050505092915050565b600067ffffffffffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f3420626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b600054610100900460ff166140c65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b60676140d28382615a87565b5060686140df8282615a87565b50506000606581905560665550565b600054610100900460ff1661416b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b60fd6141778282615a87565b5050565b600054610100900460ff166141f85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b61420183612731565b61420a8261321e565b612e18816132d7565b600054610100900460ff166142905760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b61019380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600054610100900460ff16610d015760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b600054610100900460ff16611ae55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b8151156143d55781518083602001fd5b8060405162461bcd60e51b815260040161036c9190614caa565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61441a614982565b6144226149db565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8254600090819080156145eb576000614481876126ea600185615741565b60408051808201909152905463ffffffff8082168084526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16602084015291925090871610156145185760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161036c565b805163ffffffff8088169116036145765784614539886126ea600186615741565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9092169190911790556145db565b6040805180820190915263ffffffff80881682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b602001519250839150613a399050565b50506040805180820190915263ffffffff80851682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a815291822095519251909316640100000000029190931617920191909155905081613a39565b6000818152610161602052604081206002810154600182015461467d91906156bb565b600084815260fe602052604090205461469f9067ffffffffffffffff16611eae565b11159392505050565b6000806146b786868686611ce5565b905060006146c48261122d565b905060028160078111156146da576146da614f8a565b141580156146fa575060068160078111156146f7576146f7614f8a565b14155b80156147185750600781600781111561471557614715614f8a565b14155b6147645760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161036c565b600082815260fe60205260409081902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906110339084815260200190565b600080608083901c156147e657608092831c92015b604083901c156147f857604092831c92015b602083901c1561480a57602092831c92015b601083901c1561481c57601092831c92015b600883901c1561482e57600892831c92015b600483901c1561484057600492831c92015b600283901c1561485257600292831c92015b600183901c15610b495760010192915050565b600081831061487457816119ee565b5090919050565b600061488a6002848418615a06565b6119ee908484166156bb565b60008060f883901c602f811180156148b15750603a8160ff16105b156148e4576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09091019350915050565b8060ff1660401080156148fa575060478160ff16105b1561492d576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc99091019350915050565b8060ff166060108015614943575060678160ff16105b15614976576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa99091019350915050565b50600093849350915050565b60008061498d612ca9565b8051909150156149a4578051602090910120919050565b60655480156149b35792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806149e6612cb8565b8051909150156149fd578051602090910120919050565b60665480156149b35792915050565b600060208284031215614a1e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119ee57600080fd5b803560ff8116811461142a57600080fd5b60008083601f840112614a7157600080fd5b50813567ffffffffffffffff811115614a8957600080fd5b602083019150836020828501011115614aa157600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0057614b00614aa8565b604052919050565b600067ffffffffffffffff821115614b2257614b22614aa8565b50601f01601f191660200190565b6000614b43614b3e84614b08565b614ad7565b9050828152838383011115614b5757600080fd5b828260208301376000602084830101529392505050565b600082601f830112614b7f57600080fd5b6119ee83833560208501614b30565b60008060008060008060008060e0898b031215614baa57600080fd5b88359750614bba60208a01614a4e565b9650604089013567ffffffffffffffff80821115614bd757600080fd5b614be38c838d01614a5f565b909850965060608b0135915080821115614bfc57600080fd5b50614c098b828c01614b6e565b945050614c1860808a01614a4e565b925060a0890135915060c089013590509295985092959890939650565b600060208284031215614c4757600080fd5b5035919050565b60005b83811015614c69578181015183820152602001614c51565b83811115614c78576000848401525b50505050565b60008151808452614c96816020860160208601614c4e565b601f01601f19169290920160200192915050565b6020815260006119ee6020830184614c7e565b6001600160a01b0381168114610d0a57600080fd5b60008060008060808587031215614ce857600080fd5b8435614cf381614cbd565b93506020850135614d0381614cbd565b925060408501359150606085013567ffffffffffffffff811115614d2657600080fd5b614d3287828801614b6e565b91505092959194509250565b600067ffffffffffffffff821115614d5857614d58614aa8565b5060051b60200190565b600082601f830112614d7357600080fd5b81356020614d83614b3e83614d3e565b82815260059290921b84018101918181019086841115614da257600080fd5b8286015b84811015614dc6578035614db981614cbd565b8352918301918301614da6565b509695505050505050565b600082601f830112614de257600080fd5b81356020614df2614b3e83614d3e565b82815260059290921b84018101918181019086841115614e1157600080fd5b8286015b84811015614dc65780358352918301918301614e15565b600082601f830112614e3d57600080fd5b81356020614e4d614b3e83614d3e565b82815260059290921b84018101918181019086841115614e6c57600080fd5b8286015b84811015614dc657803567ffffffffffffffff811115614e905760008081fd5b614e9e8986838b0101614b6e565b845250918301918301614e70565b60008060008060808587031215614ec257600080fd5b843567ffffffffffffffff80821115614eda57600080fd5b614ee688838901614d62565b95506020870135915080821115614efc57600080fd5b614f0888838901614dd1565b94506040870135915080821115614f1e57600080fd5b50614f2b87828801614e2c565b949793965093946060013593505050565b600080600080600060a08688031215614f5457600080fd5b85359450614f6460208701614a4e565b9350614f7260408701614a4e565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160088310614ff4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561500d57600080fd5b82359150602083013561501f81614cbd565b809150509250929050565b6000806040838503121561503d57600080fd5b8235915061504d60208401614a4e565b90509250929050565b60008060008060006080868803121561506e57600080fd5b8535945061507e60208701614a4e565b9350604086013567ffffffffffffffff8082111561509b57600080fd5b6150a789838a01614a5f565b909550935060608801359150808211156150c057600080fd5b506150cd88828901614b6e565b9150509295509295909350565b600080600080606085870312156150f057600080fd5b8435935061510060208601614a4e565b9250604085013567ffffffffffffffff81111561511c57600080fd5b61512887828801614a5f565b95989497509550505050565b6000806000806080858703121561514a57600080fd5b843567ffffffffffffffff8082111561516257600080fd5b61516e88838901614d62565b9550602087013591508082111561518457600080fd5b61519088838901614dd1565b945060408701359150808211156151a657600080fd5b6151b288838901614e2c565b935060608701359150808211156151c857600080fd5b508501601f810187136151da57600080fd5b614d3287823560208401614b30565b600081518084526020808501945080840160005b83811015615219578151875295820195908201906001016151fd565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e06020820152600061525f60e0830189614c7e565b82810360408401526152718189614c7e565b90508660608401526001600160a01b03861660808401528460a084015282810360c0840152610c4581856151e9565b60008060008060008060c087890312156152b957600080fd5b86356152c481614cbd565b955060208701356152d481614cbd565b95989597505050506040840135936060810135936080820135935060a0909101359150565b60008060006060848603121561530e57600080fd5b833561531981614cbd565b925060208401359150604084013567ffffffffffffffff81111561533c57600080fd5b61534886828701614b6e565b9150509250925092565b60006020828403121561536457600080fd5b81356119ee81614cbd565b600080600080600060a0868803121561538757600080fd5b853561539281614cbd565b945060208601356153a281614cbd565b9350604086013567ffffffffffffffff808211156153bf57600080fd5b6153cb89838a01614dd1565b945060608801359150808211156153e157600080fd5b6153ed89838a01614dd1565b935060808801359150808211156150c057600080fd5b6000806000806060858703121561541957600080fd5b843561542481614cbd565b935060208501359250604085013567ffffffffffffffff81111561511c57600080fd5b6000806040838503121561545a57600080fd5b823561546581614cbd565b946020939093013593505050565b600080600080600060a0868803121561548b57600080fd5b853561549681614cbd565b945060208601356154a681614cbd565b93506040860135925060608601359150608086013567ffffffffffffffff8111156154d057600080fd5b6150cd88828901614b6e565b8183823760009101908152919050565b600181811c9082168061550057607f821691505b602082108103615539577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561555157600080fd5b5051919050565b600081518084526020808501945080840160005b838110156152195781516001600160a01b03168752958201959082019060010161556c565b600081518084526020808501808196508360051b8101915082860160005b858110156155d95782840389526155c7848351614c7e565b988501989350908401906001016155af565b5091979650505050505050565b60a0815260006155f960a0830188615558565b828103602084015261560b81886151e9565b9050828103604084015261561f8187615591565b60608401959095525050608001529392505050565b60c08152600061564760c0830189615558565b828103602084015261565981896151e9565b9050828103604084015261566d8188615591565b60608401969096525050608081019290925260a0909101529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156156ce576156ce61568c565b500190565b6000602082840312156156e557600080fd5b815167ffffffffffffffff8111156156fc57600080fd5b8201601f8101841361570d57600080fd5b805161571b614b3e82614b08565b81815285602083850101111561573057600080fd5b6116a4826020830160208601614c4e565b6000828210156157535761575361568c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561579957600080fd5b815165ffffffffffff811681146119ee57600080fd5b6080815260006157c26080830187615558565b82810360208401526157d481876151e9565b905082810360408401526157e88186615591565b91505082606083015295945050505050565b84815260ff8416602082015282604082015260806060820152600061135f6080830184614c7e565b85815260ff8516602082015283604082015260a06060820152600061584a60a0830185614c7e565b828103608084015261585c8185614c7e565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036158995761589961568c565b5060010190565b6000602082840312156158b257600080fd5b815180151581146119ee57600080fd5b60006101208b835260206001600160a01b038c16818501528160408501526158ec8285018c615558565b91508382036060850152615900828b6151e9565b915083820360808501528189518084528284019150828160051b850101838c0160005b8381101561595157601f1987840301855261593f838351614c7e565b94860194925090850190600101615923565b505086810360a0880152615965818c615591565b9450505050508560c08401528460e084015282810361010084015261598a8185614c7e565b9c9b505050505050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156159d2576159d261568c565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615a3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b601f821115612e1857600081815260208120601f850160051c81016020861015615a685750805b601f850160051c820191505b818110156123dc57828155600101615a74565b815167ffffffffffffffff811115615aa157615aa1614aa8565b615ab581615aaf84546154ec565b84615a41565b602080601f831160018114615b085760008415615ad25750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556123dc565b600085815260208120601f198616915b82811015615b3757888601518255948401946001909101908401615b18565b5085821015615b7357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c634300080f000a", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "ff" - }, - "key": "0x3247e86af51c9646bccbd6593d7598c134338c594bef4622bd0013ac9d2c2a7f" - }, - "0x9e545e3c0baab3e08cdfd552c960a1050f373042": { - "balance": "0", - "nonce": 1, - "root": "0xa5123c1d51dd7986375df921b012df36448f6a7bb8122d860ba0700556b38e16", - "codeHash": "0x02224ad39d421b3d0eb214aad31326785feccea3abbf1d489be386047743609e", - "code": "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c806380ab1313116100ee578063b3e7766d11610097578063d5145ebc11610071578063d5145ebc146105d7578063e39a219c146105fe578063e9371a2c14610611578063fc9d84df1461063157600080fd5b8063b3e7766d14610569578063cfb4474d14610589578063d2ee3075146105b057600080fd5b80639ded3952116100c85780639ded39521461051c578063a41483e314610543578063a6ade11f1461055657600080fd5b806380ab1313146104c25780638f3a6c88146104d55780638f86c803146104fc57600080fd5b8063461569b81161015b5780635865b607116101355780635865b607146103d05780635a6b011f146103f757806362fc00db1461049c5780636fe0e559146104af57600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b610219610204366004614d98565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c610237366004614dc6565b610644565b005b6102aa61024c366004614dc6565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b61033f7f000000000000000000000000000000000000000000000000000000000000001e81565b6040519081526020016101ed565b61021961035b366004614d98565b6106c7565b61033f7f000000000000000000000000000000000000000000000000000000000000006481565b6103c36040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ed9190614e4e565b6101d97f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed81565b61045a610405366004614d98565b6004602052600090815260409020805460018201546002909201546001600160a01b0390911691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041684565b604080516001600160a01b03909516855260208501939093526fffffffffffffffffffffffffffffffff918216928401929092521660608201526080016101ed565b61023c6104aa366004614e61565b6107a2565b61023c6104bd366004614f85565b610e96565b61023c6104d0366004615067565b61113d565b61033f7f000000000000000000000000000000000000000000000000000000000000006481565b61033f61050a366004614d98565b60016020526000908152604090205481565b6101d97f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61023c610551366004614d98565b611b3c565b61023c610564366004615118565b611bad565b61057c610577366004614dc6565b611e80565b6040516101ed9190615182565b61033f7f000000000000000000000000000000000000000000000000000000000000000481565b61033f7f000000000000000000000000000000000000000000000000000000000000001e81565b61033f7fa1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f781565b61023c61060c366004614d98565b611ef8565b61062461061f366004614dc6565b612317565b6040516101ed91906151f5565b61023c61063f366004615236565b612349565b600360008381526002602090815260408083206001600160a01b0386168452909152902061067190612dd7565b6005811115610682576106826151c6565b146106b9576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106c38282612eb5565b5050565b6000427f00000000000000000000000000000000000000000000000000000000000000647f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663a25ae557856040518263ffffffff1660e01b815260040161073991815260200190565b608060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a919061529a565b604001516fffffffffffffffffffffffffffffffff1661079a9190615341565b101592915050565b6107aa613511565b6107b385613575565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610858919061529a565b6020015114610893576040517f8796efdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526004602052604090206001015482146108dd576040517f90e78fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097f9190615359565b6001600160a01b0316846001600160a01b03161415806109b957506000858152600460205260409020546001600160a01b03848116911614155b156109f0576040517f8036a47f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526003602052604090205460ff16610a38576040517f7458ca2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905587835260049182905280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002019290925590517fe6646723000000000000000000000000000000000000000000000000000000008152908101869052602481018390526001600160a01b0384811660448301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e664672390606401600060405180830381600087803b158015610b3757600080fd5b505af1158015610b4b573d6000803e3d6000fd5b505050507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd19190615359565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b8152600401610bfe91815260200190565b602060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f9190615376565b15610e4b577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc69190615359565b6040517fab04b8aa000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038581166024830152919091169063ab04b8aa90604401600060405180830381600087803b158015610d2b57600080fd5b505af1158015610d3f573d6000803e3d6000fd5b505050507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190615359565b6040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0385811660248301528681166044830152919091169063be995dc290606401600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b505050505b836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610e8791815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610eb65750600054600160ff909116105b80610ed05750303b158015610ed0575060005460ff166001145b610f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610fbe57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60028251610fcc91906153c7565b15611003576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160005b835181101561107c57838181518110611023576110236153db565b602002602001015160016000838152602001908152602001600020819055506001848281518110611056576110566153db565b6020026020010151611068919061540a565b6110729083615421565b9150600101611008565b507f000000000000000000000000000000000000000000000000000000000000000481146110d6576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5080156106c357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b61114687613575565b600087815260026020908152604080832033845290915281209061116982612dd7565b6001830154909150611186908a906001600160a01b031683613651565b15611192575050611b33565b60058160058111156111a6576111a66151c6565b141580156111c6575060048160058111156111c3576111c36151c6565b14155b156111fd576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112388883611219611214368c90038c018c61545e565b613b70565b61122e611214368d90038d0160a08e0161545e565b8b60a08101613c12565b61126060a0880161124d6101408a018a6154ce565b61125b6101608b018b61550c565b613d24565b61128c6112716101c0890189615540565b6101808a01356101a08b013560e08c013560c08d0135613def565b60006112a960208901356112a46101408b018b6154ce565b613f23565b60008181526003602052604090205490915060ff16156112f5576040517f7458ca2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3181690634292dc3e90611362908a908a908a908a9088906004016155f7565b602060405180830381865afa15801561137f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a39190615376565b6113d9576040517f076490f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405142815233908b907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018b90526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015611491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b5919061529a565b84546020820151604051602481018f905233604482015269010000000000000000009092046001600160a01b03166064830152608482015260a481018490529091506000907f62fc00db000000000000000000000000000000000000000000000000000000009060c40160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e169263080b91ee926115f19291908690600401615631565b600060405180830381600087803b15801561160b57600080fd5b505af115801561161f573d6000803e3d6000fd5b50505060008d815260046020818152604092839020865181546001600160a01b039182167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178255828801516001830155848801516060909801516fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000000298169790971760029091015582517fb98debbf00000000000000000000000000000000000000000000000000000000815292517f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99096169563b98debbf9550838301945090929091908290030181865afa158015611726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174a9190615359565b6001600160a01b031663ad36d6cc8b6040518263ffffffff1660e01b815260040161177791815260200190565b602060405180830381865afa158015611794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b89190615376565b156118d4577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561181b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183f9190615359565b83546040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018d90523360248201526001600160a01b0369010000000000000000009092048216604482015291169063be995dc290606401600060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506119d2565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119569190615359565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018c90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b1580156119b957600080fd5b505af11580156119cd573d6000803e3d6000fd5b505050505b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558d8452600280845282852033865290935290832080547fffffff000000000000000000000000000000000000000000000000000000000016815590810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190611a8090830182614d1a565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018c905260248201523360448201527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063e664672390606401600060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b505050505050505b50505050505050565b600081815260026020908152604080832033845290915290206001810154611b779083906001600160a01b0316611b7284612dd7565b613651565b6106c3576040517f4e9d86f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bb685613575565b60008581526002602090815260408083206001600160a01b0388168452909152812090611be282612dd7565b6001830154909150611bff9088906001600160a01b031683613651565b15611c0b575050611e79565b60006001826005811115611c2157611c216151c6565b03611c3a575060018201546001600160a01b0316611c6d565b6002826005811115611c4e57611c4e6151c6565b03611c6d57508154690100000000000000000090046001600160a01b03165b336001600160a01b03821614611caf576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254600090611cc29060ff16600161566b565b9050611d4d81856002018981548110611cdd57611cdd6153db565b9060005260206000200154866002018a6001611cf99190615341565b81548110611d0957611d096153db565b9060005260206000200154898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613fde92505050565b6000611d58856140e9565b9050611db385888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d9e92508691508d9050615421565b8860040154611dad9190615341565b8461412e565b84547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8316178555611de785614158565b6040805160ff841681524260208201526001600160a01b038b16918c917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611e38856141f6565b611e73576040516001600160a01b038a16908b907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b50505050505b5050505050565b60008281526002602081815260408084206001600160a01b0386168552825292839020909101805483518184028101840190945280845260609392830182828015611eea57602002820191906000526020600020905b815481526020019060010190808311611ed6575b505050505090505b92915050565b611f00613511565b611f0981613575565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015611f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fae919061529a565b6020810151909150611fec576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101839052600060248201526001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e811660448301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e664672390606401600060405180830381600087803b15801561209657600080fd5b505af11580156120aa573d6000803e3d6000fd5b505050507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121309190615359565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161215d91815260200190565b602060405180830381865afa15801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190615376565b156122cb577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122259190615359565b81516040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81166024830152918216604482015291169063be995dc290606401600060405180830381600087803b1580156122b257600080fd5b505af11580156122c6573d6000803e3d6000fd5b505050505b80600001516001600160a01b0316827fa620f04b65b1d538481626bf41dc5ee321b5c48e0cc1a7daae213cf7c254b54e4260405161230b91815260200190565b60405180910390a35050565b60008281526002602090815260408083206001600160a01b0385168452909152812061234290612dd7565b9392505050565b84600003612383576040517f2604872b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124059190615359565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b815260040161243291815260200190565b602060405180830381865afa15801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190615376565b156125b3577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa9190615359565b6040517f9f8a13d70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690639f8a13d790602401602060405180830381865afa158015612559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257d9190615376565b6125b3576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260026020908152604080832033845290915290208054600160ff909116106126375760036125e582612dd7565b60058111156125f6576125f66151c6565b1461262d576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126378633612eb5565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018790526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa1580156126b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126dc919061529a565b9050427f000000000000000000000000000000000000000000000000000000000000006482604001516fffffffffffffffffffffffffffffffff166127219190615341565b1015612759576040517fa0388b4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020810151612794576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516001600160a01b031633036127d7576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85158015906127e65750844015155b156128255785854014612825576040517f72f1f56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663a25ae55761286160018b61540a565b6040518263ffffffff1660e01b815260040161287f91815260200190565b608060405180830381865afa15801561289c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c0919061529a565b602081015190915061292e576129296001868660008181106128e4576128e46153db565b905060200201358460200151888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613fde92505050565b612976565b612976600182602001518460200151888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613fde92505050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f89190615359565b6001600160a01b031663ad36d6cc896040518263ffffffff1660e01b8152600401612a2591815260200190565b602060405180830381865afa158015612a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a669190615376565b15612b66577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aed9190615359565b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690638c1516c790602401600060405180830381600087803b158015612b4957600080fd5b505af1158015612b5d573d6000803e3d6000fd5b50505050612c64565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be89190615359565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018a90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b158015612c4b57600080fd5b505af1158015612c5f573d6000803e3d6000fd5b505050505b612d038386868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050506060860151612cdd91507f0000000000000000000000000000000000000000000000000000000000000004906fffffffffffffffffffffffffffffffff1661540a565b7f000000000000000000000000000000000000000000000000000000000000000461412e565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055612d7b83614158565b815160405142815233916001600160a01b0316908a907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a45050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612df157506000919050565b8154600090612e059060029060ff16615690565b835460ff91909116159150610100900467ffffffffffffffff16421115612e8a578015612e355750600392915050565b8254612e71907f000000000000000000000000000000000000000000000000000000000000001e90610100900467ffffffffffffffff16615341565b421115612e815750600392915050565b50600492915050565b612e93836141f6565b612ea05750600592915050565b80612eac576002612342565b60019392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612f3590830182614d1a565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612f8391815260200190565b60405180910390a37f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300d9190615359565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161303a91815260200190565b602060405180830381865afa158015613057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307b9190615376565b15613225577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131029190615359565b6001600160a01b031663be995dc2837f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b0ea09a8866040518263ffffffff1660e01b815260040161315f91815260200190565b602060405180830381865afa15801561317c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a09190615359565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b039081166024830152841660448201526064015b600060405180830381600087803b15801561320957600080fd5b505af115801561321d573d6000803e3d6000fd5b505050505050565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa1580156132a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c79190615376565b1561343f577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561332a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334e9190615359565b6001600160a01b03166336b8346983837f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b0ea09a8876040518263ffffffff1660e01b81526004016133ac91815260200190565b602060405180830381865afa1580156133c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ed9190615359565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526001600160a01b0391821660248401521660448201526064016131ef565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561349d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c19190615359565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d906044016131ef565b336001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e1614613573576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190615376565b1561364e576040517f5c9d9a2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa1580156136d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f8919061529a565b602001511461370957506000612342565b336001600160a01b0384161461374b576040517f21e62a3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600581111561375f5761375f6151c6565b148061377c5750600382600581111561377a5761377a6151c6565b145b156137b3576040517ff691b6e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055919061382a90830182614d1a565b50600060038201819055600490910155604051428152339085907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f39190615359565b6001600160a01b031663ad36d6cc856040518263ffffffff1660e01b815260040161392091815260200190565b602060405180830381865afa15801561393d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139619190615376565b15613a61577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e89190615359565b6040517fa83871720000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03919091169063a838717290602401600060405180830381600087803b158015613a4457600080fd5b505af1158015613a58573d6000803e3d6000fd5b50505050613b66565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae39190615359565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101869052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b158015613b4d57600080fd5b505af1158015613b61573d6000803e3d6000fd5b505050505b5060019392505050565b6080810151600090613bd257815160208084015160408086015160608701519151613bb595949192910193845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b81516020808401516040808601516060808801516080808a01518551978801989098529386019490945284015282015260a081019190915260c001613bb5565b83856002018781548110613c2857613c286153db565b906000526020600020015414613c6a576040517f224dff3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613c73856141f6565b613cd9578260028601613c87886001615341565b81548110613c9757613c976153db565b906000526020600020015403613cd9576040517f87c1943200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808201351561321d57806060013582608001351461321d576040517f3f126fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001358260e0013514613d65576040517f4d9e774000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610180830135613d9057613d8b613d7d84615730565b613d868461588a565b61420a565b613daa565b613daa613d9c84615730565b613da58461588a565b6142ae565b905080846060013514613de9576040517fb033950600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed6001600160a01b0316906312e64a7290613eac907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401615a2b565b602060405180830381865afa158015613ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eed9190615376565b611b33576040517ff35959c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060607f0000000000000000000000000000000000000000000000000000000000000064613f56610120850185615540565b90501015613fc357613fc07fa1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f7613f90610120860186615540565b613fbb91507f000000000000000000000000000000000000000000000000000000000000006461540a565b6143bf565b90505b613fd684613fd085615730565b8361444b565b949350505050565b805160016000613fee8288615b06565b60ff1681526020019081526020016000205414614037576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008151811061404a5761404a6153db565b6020026020010151831461408a576040517f224dff3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060018251614099919061540a565b815181106140a9576140a96153db565b60200260200101518203613de9576040517f87c1943200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000906001908190839061410390839060ff16615b06565b60ff1681526020019081526020016000205461411f919061540a565b8260030154611ef29190615b29565b82516141439060028601906020860190614d38565b50600484019190915560039092019190915550565b614161816141f6565b6141cc5761418f7f000000000000000000000000000000000000000000000000000000000000001e42615341565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b61418f7f000000000000000000000000000000000000000000000000000000000000001e42615341565b60006001614203836140e9565b1192915050565b6040805160118082526102408201909252600091829190816020015b60608152602001906001900390816142265790505090506142488484836144bd565b61427784610100015160405160200161426391815260200190565b604051602081830303815290604052614770565b8160108151811061428a5761428a6153db565b602002602001018190525061429e816147db565b8051906020012091505092915050565b6040805160148082526102a08201909252600091829190816020015b60608152602001906001900390816142ca5790505090506142ec8484836144bd565b61430784610100015160405160200161426391815260200190565b8160108151811061431a5761431a6153db565b602002602001018190525061433d84610140015167ffffffffffffffff16614806565b81601181518110614350576143506153db565b602002602001018190525061437384610160015167ffffffffffffffff16614806565b81601281518110614386576143866153db565b60200260200101819052506143ac84610180015160405160200161426391815260200190565b8160138151811061428a5761428a6153db565b606060008267ffffffffffffffff8111156143dc576143dc614eb3565b604051908082528060200260200182016040528015614405578160200160208202803683370190505b50905060005b838110156144435784828281518110614426576144266153db565b60209081029190910101528061443b81615b3d565b91505061440b565b509392505050565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c60405160200161449e9c9b9a99989796959493929190615ba8565b6040516020818303038152906040528051906020012090509392505050565b6144d7836020015160405160200161426391815260200190565b816000815181106144ea576144ea6153db565b602002602001018190525081600001518160018151811061450d5761450d6153db565b6020026020010181905250816020015181600281518110614530576145306153db565b60200260200101819052506145558360e0015160405160200161426391815260200190565b81600381518110614568576145686153db565b602002602001018190525061458d8360c0015160405160200161426391815260200190565b816004815181106145a0576145a06153db565b60200260200101819052508160400151816005815181106145c3576145c36153db565b60200260200101819052508160600151816006815181106145e6576145e66153db565b6020026020010181905250816080015181600781518110614609576146096153db565b602002602001018190525061462b836060015167ffffffffffffffff16614806565b8160088151811061463e5761463e6153db565b6020026020010181905250614660836080015167ffffffffffffffff16614806565b81600981518110614673576146736153db565b60200260200101819052508160a0015181600a81518110614696576146966153db565b60200260200101819052506146b8836040015167ffffffffffffffff16614806565b81600b815181106146cb576146cb6153db565b60200260200101819052508160c0015181600c815181106146ee576146ee6153db565b60200260200101819052508160e0015181600d81518110614711576147116153db565b602002602001018190525081610100015181600e81518110614735576147356153db565b602002602001018190525061474d8360a00151614806565b81600f81518110614760576147606153db565b6020026020010181905250505050565b60608151600114801561479d5750608082600081518110614793576147936153db565b016020015160f81c105b156147a6575090565b6147b282516080614819565b826040516020016147c4929190615c61565b60405160208183030381529060405290505b919050565b60606147e682614a0d565b90506147f4815160c0614819565b816040516020016147c4929190615c61565b6060611ef261481483614b42565b614770565b60606038831015614897576040805160018082528183019092529060208201818036833701905050905061484d828461566b565b60f81b81600081518110614863576148636153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611ef2565b600060015b6148a68186615b29565b156148cc57816148b581615b3d565b92506148c5905061010082615421565b905061489c565b6148d7826001615341565b67ffffffffffffffff8111156148ef576148ef614eb3565b6040519080825280601f01601f191660200182016040528015614919576020820181803683370190505b509250614926848361566b565b61493190603761566b565b60f81b83600081518110614947576149476153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111614a055761010061498f828461540a565b61499b90610100615db0565b6149a59087615b29565b6149af91906153c7565b60f81b8382815181106149c4576149c46153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806149fd81615b3d565b91505061497b565b505092915050565b60608151600003614a2c57505060408051600081526020810190915290565b6000805b8351811015614a7357838181518110614a4b57614a4b6153db565b60200260200101515182614a5f9190615341565b915080614a6b81615b3d565b915050614a30565b8167ffffffffffffffff811115614a8c57614a8c614eb3565b6040519080825280601f01601f191660200182016040528015614ab6576020820181803683370190505b50925060009050602083015b8451821015614b3a576000858381518110614adf57614adf6153db565b602002602001015190506000602082019050614afd83828451614c9f565b868481518110614b0f57614b0f6153db565b60200260200101515183614b239190615341565b925050508180614b3290615b3d565b925050614ac2565b505050919050565b6060600082604051602001614b5991815260200190565b604051602081830303815290604052905060005b6020811015614bc857818181518110614b8857614b886153db565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003614bc85780614bc081615b3d565b915050614b6d565b614bd381602061540a565b67ffffffffffffffff811115614beb57614beb614eb3565b6040519080825280601f01601f191660200182016040528015614c15576020820181803683370190505b50925060005b8351811015614b3a578282614c2f81615b3d565b935081518110614c4157614c416153db565b602001015160f81c60f81b848281518110614c5e57614c5e6153db565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080614c9781615b3d565b915050614c1b565b8282825b60208110614cdb5781518352614cba602084615341565b9250614cc7602083615341565b9150614cd460208261540a565b9050614ca3565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b508054600082559060005260206000209081019061364e9190614d83565b828054828255906000526020600020908101928215614d73579160200282015b82811115614d73578251825591602001919060010190614d58565b50614d7f929150614d83565b5090565b5b80821115614d7f5760008155600101614d84565b600060208284031215614daa57600080fd5b5035919050565b6001600160a01b038116811461364e57600080fd5b60008060408385031215614dd957600080fd5b823591506020830135614deb81614db1565b809150509250929050565b60005b83811015614e11578181015183820152602001614df9565b83811115613de95750506000910152565b60008151808452614e3a816020860160208601614df6565b601f01601f19169290920160200192915050565b6020815260006123426020830184614e22565b600080600080600060a08688031215614e7957600080fd5b853594506020860135614e8b81614db1565b93506040860135614e9b81614db1565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715614f0657614f06614eb3565b60405290565b604051610120810167ffffffffffffffff81118282101715614f0657614f06614eb3565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f5957614f59614eb3565b604052919050565b600067ffffffffffffffff821115614f7b57614f7b614eb3565b5060051b60200190565b60006020808385031215614f9857600080fd5b823567ffffffffffffffff811115614faf57600080fd5b8301601f81018513614fc057600080fd5b8035614fd3614fce82614f61565b614f30565b81815260059190911b82018301908381019087831115614ff257600080fd5b928401925b8284101561501057833582529284019290840190614ff7565b979650505050505050565b60008083601f84011261502d57600080fd5b50813567ffffffffffffffff81111561504557600080fd5b6020830191508360208260051b850101111561506057600080fd5b9250929050565b600080600080600080600060a0888a03121561508257600080fd5b8735965060208801359550604088013567ffffffffffffffff808211156150a857600080fd5b908901906101e0828c0312156150bd57600080fd5b909550606089013590808211156150d357600080fd5b6150df8b838c0161501b565b909650945060808a01359150808211156150f857600080fd5b506151058a828b0161501b565b989b979a50959850939692959293505050565b60008060008060006080868803121561513057600080fd5b85359450602086013561514281614db1565b935060408601359250606086013567ffffffffffffffff81111561516557600080fd5b6151718882890161501b565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b818110156151ba5783518352928401929184019160010161519e565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310615230577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060008060006080868803121561524e57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561516557600080fd5b80516fffffffffffffffffffffffffffffffff811681146147d657600080fd5b6000608082840312156152ac57600080fd5b6040516080810181811067ffffffffffffffff821117156152cf576152cf614eb3565b60405282516152dd81614db1565b8152602083810151908201526152f56040840161527a565b60408201526153066060840161527a565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561535457615354615312565b500190565b60006020828403121561536b57600080fd5b815161234281614db1565b60006020828403121561538857600080fd5b8151801515811461234257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826153d6576153d6615398565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008282101561541c5761541c615312565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561545957615459615312565b500290565b600060a0828403121561547057600080fd5b60405160a0810181811067ffffffffffffffff8211171561549357615493614eb3565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6183360301811261550257600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261550257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261557557600080fd5b83018035915067ffffffffffffffff82111561559057600080fd5b6020019150600581901b360382131561506057600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156155da57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60608152600061560b6060830187896155a8565b828103602084015261561e8186886155a8565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff831660208201526060604082015260006156626060830184614e22565b95945050505050565b600060ff821660ff84168060ff0382111561568857615688615312565b019392505050565b600060ff8316806156a3576156a3615398565b8060ff84160691505092915050565b803567ffffffffffffffff811681146147d657600080fd5b600082601f8301126156db57600080fd5b813560206156eb614fce83614f61565b82815260059290921b8401810191818101908684111561570a57600080fd5b8286015b84811015615725578035835291830191830161570e565b509695505050505050565b60006101a0823603121561574357600080fd5b61574b614ee2565b8235815260208301356020820152615765604084016156b2565b6040820152615776606084016156b2565b6060820152615787608084016156b2565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff8111156157d257600080fd5b6157de368287016156ca565b8284015250506101406157f28185016156b2565b908201526101606158048482016156b2565b9082015261018092830135928101929092525090565b600082601f83011261582b57600080fd5b813567ffffffffffffffff81111561584557615845614eb3565b6158586020601f19601f84011601614f30565b81815284602083860101111561586d57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120823603121561589d57600080fd5b6158a5614f0c565b823567ffffffffffffffff808211156158bd57600080fd5b6158c93683870161581a565b835260208501359150808211156158df57600080fd5b6158eb3683870161581a565b6020840152604085013591508082111561590457600080fd5b6159103683870161581a565b6040840152606085013591508082111561592957600080fd5b6159353683870161581a565b6060840152608085013591508082111561594e57600080fd5b61595a3683870161581a565b608084015260a085013591508082111561597357600080fd5b61597f3683870161581a565b60a084015260c085013591508082111561599857600080fd5b6159a43683870161581a565b60c084015260e08501359150808211156159bd57600080fd5b6159c93683870161581a565b60e0840152610100915081850135818111156159e457600080fd5b6159f03682880161581a565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b85815260006020608081840152615a456080840188614e22565b8381036040850152858152818101600587901b820183018860005b89811015615aed57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112615aa357600080fd5b8b01868101903567ffffffffffffffff811115615abf57600080fd5b803603821315615ace57600080fd5b615ad9858284615a00565b958801959450505090850190600101615a60565b5050809450505050508260608301529695505050505050565b600060ff821660ff841680821015615b2057615b20615312565b90039392505050565b600082615b3857615b38615398565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615b6e57615b6e615312565b5060010190565b60008151602080840160005b83811015615b9d57815187529582019590820190600101615b81565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d8830152615c4f615c4960da840186615b75565b84615b75565b9e9d5050505050505050505050505050565b60008351615c73818460208801614df6565b835190830190615c87818360208801614df6565b01949350505050565b600181815b80851115615ce957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615ccf57615ccf615312565b80851615615cdc57918102915b93841c9390800290615c95565b509250929050565b600082615d0057506001611ef2565b81615d0d57506000611ef2565b8160018114615d235760028114615d2d57615d49565b6001915050611ef2565b60ff841115615d3e57615d3e615312565b50506001821b611ef2565b5060208310610133831016604e8410600b8410161715615d6c575081810a611ef2565b615d768383615c90565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615da857615da8615312565b029392505050565b60006123428383615cf156fea164736f6c634300080f000a", + "root": "0xcf1ee359a48643acaaea70850acc6d97d49abf68e71d48c4657a008a6b9f8370", + "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", + "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "03", - "0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49": "02", - "0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "02", - "0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "03" + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "7bc06c482dead17c0e297afbc32f6e63d3846650", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, - "key": "0xed887ba298276e378c422b1a275e365711e6b29aaa834cebdc8465b204127702" + "key": "0x17c85ecbaedd35be311ad177fb8cd266d4d6ca50961076aa5df5287d787e84b3" }, "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0": { "balance": "0", "nonce": 1, - "root": "0x10742a0b2db5b499924b90b31138bccb72ed6d7333e9017a3860f2a83e0c3d2a", + "root": "0x92a0c424773d0160e6fdec4b006a7fdefbfd6a6738b72b7aeae148f4d2c9ec2c", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000001": "2800000000000000000000000000000000000000003b9aca00", + "0x0000000000000000000000000000000000000000000000000000000000000001": "2900000000000000000000000000000000000000003b9aca00", "0x0000000000000000000000000000000000000000000000000000000000000032": "dead", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "851356ae760d987e095750cceb3bc6014560891c", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x08460e45164e07e0e4df7165de40d5863fb7b8ece896a164bf57a134287c68f5" @@ -444,11 +443,11 @@ "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853": { "balance": "0", "nonce": 1, - "root": "0xdcb8bb08e9ca2969a8c8d71d038f8e20921c6648e015d72f82352cf3a97de669", + "root": "0x77d034fab45e9312bf2332676696f240d77bd1b455341d6edaaa041a40043c91", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "322813fd9a801c5507c9de605d63cea4f2ce6c44", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "a85233c63b9ee964add6f2cffe00fd84eb32338f", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x3f005d5c85385294c7a0de617e62ea384bebca06a5b203bd6166371f023de860" @@ -456,72 +455,100 @@ "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0": { "balance": "0", "nonce": 1, - "root": "0x85db2eeb4053d6ca80a005a7222b2f83689ad8af5ae864242cc658447c516ae7", + "root": "0x6861c303c42a0ad270cde86d0481f68d3ba04c01e74ecb4a5d56eb523464b6ea", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000065": "4b726f6d615365637572697479436f756e63696c000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000066": "4b53430000000000000000000000000000000000000000000000000000000006", - "0x0000000000000000000000000000000000000000000000000000000000000099": "02", - "0x000000000000000000000000000000000000000000000000000000000000012d": "f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000161": "4b726f6d615365637572697479436f756e63696c000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000162": "3100000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000195": "02", - "0x00000000000000000000000000000000000000000000000000000000000001f7": "02", - "0x00000000000000000000000000000000000000000000000000000000000001f8": "01", - "0x0368ef2524a38b6b115d8ebd4b69ba6955d052f73f6a344b60cd0a0506a9d257": "70997970c51812dc3a010c7d01b50e0d17dc79c8", - "0x057edaae68d51eec754066df75dd2069eb696ff039b09734aba5812253786c27": "01", - "0x18156c81dcf3fb323401e2be29aa6cf147b01ccf17bbce35023b3250e001cde5": "010000002e", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "998abeb3e57409262ae5b751f60747921b33613e", - "0x38edd6e6b9b564301a1dfcfff8ee08e144d45b79a3fe2ad6c02b66ba5939153c": "01", - "0x3d0fb76aa8078ae9b1562043dcfdd7d5d52d2da206694e1bd45a1b44632424e6": "01", - "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296770": "010000002d", - "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296771": "020000002e", - "0x5b542b52981c4f2fa9965514d5bb7f37f1b7bc0902a6a4dc6b04dc05be85586b": "01", - "0x6bee784efeb983674392298ab585b22866bedf00ebb0eea949d1e66f3f50e71d": "1cbd3b2770909d4e10f157cabc84c7264073c9ec", - "0x7256db6e1a3a9a88515503855dfa22457f63c2a54d44fe0e7a86be7d09dfba10": "1cbd3b2770909d4e10f157cabc84c7264073c9ec", - "0x72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d01": "01", - "0x81fe90a866a48a634a12852c1be675b683a22307409932a7443b8029347be756": "312e706e6700000000000000000000000000000000000000000000000000000a", - "0xaeb5afcfa19e3c204d68128666f5742662909dbf0df67093c848d2c2853e9b39": "01", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3", - "0xb6aab34db6ad98c1b7e7142146804ce9fc6992da8076478d289c62788d5fa80f": "010000002d", - "0xd4e1ac8b62c3ff1e2c1b7113742533b8310ce5ab8a8767ead9ba8b250c7e3cc9": "70997970c51812dc3a010c7d01b50e0d17dc79c8", - "0xd9841eb47aa407700e14e706cabe283f9effe927976c5e8d4e2a2d8069f76af8": "01", - "0xec506dfa273b51989632259ed9c63e160e61bff5202e6a55d2c8927ffef177ed": "322e706e6700000000000000000000000000000000000000000000000000000a" + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "809d550fca64d94bd9f66e60752a544199cfac3d", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x7b52b82e709191be4bae3bb8544d2a6b51d7440a1d15ba1f09e33bcf049e47a5" }, + "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9": { + "balance": "0", + "nonce": 1, + "root": "0xa5123c1d51dd7986375df921b012df36448f6a7bb8122d860ba0700556b38e16", + "codeHash": "0xd7a2592623a188547bfc30b4aebea6d346482194852acb80167178300040135f", + "code": "0x608060405234801561001057600080fd5b50600436106101975760003560e01c80636506e837116100e3578063b3e7766d1161008c578063e39a219c11610066578063e39a219c14610593578063e9371a2c146105a6578063fc9d84df146105c657600080fd5b8063b3e7766d14610525578063cfb4474d14610545578063d2ee30751461056c57600080fd5b80638f86c803116100bd5780638f86c803146104df578063a41483e3146104ff578063a6ade11f1461051257600080fd5b80636506e8371461047e5780636fe0e559146104a55780638f3a6c88146104b857600080fd5b80634394c5841161014557806354fd4d501161011f57806354fd4d501461037d5780635a6b011f146103c657806362fc00db1461046b57600080fd5b80634394c58414610322578063461569b81461035757806354a2c30a1461036a57600080fd5b80631db1b672116101765780631db1b672146102285780632df27fa51461023b57806336086417146102fb57600080fd5b80621c2ff61461019c57806305ddf49e146101e05780631be4e27e146101f5575b600080fd5b6101c37f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f36101ee366004613fe4565b6105d9565b005b61021861020336600461403b565b60036020526000908152604090205460ff1681565b60405190151581526020016101d7565b6101f3610236366004614069565b6105fd565b6102ad610249366004614069565b60026020908152600092835260408084209091529082529020805460018201546003830154600484015460059094015460ff84169467ffffffffffffffff610100860416946001600160a01b03690100000000000000000090910481169416929187565b6040805160ff909816885267ffffffffffffffff90961660208801526001600160a01b0394851695870195909552929091166060850152608084015260a083015260c082015260e0016101d7565b6101c37f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c081565b6103497f000000000000000000000000000000000000000000000000000000000000001e81565b6040519081526020016101d7565b61021861036536600461403b565b610680565b6101f3610378366004614099565b61075b565b6103b96040518060400160405280600581526020017f322e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101d79190614150565b6104296103d436600461403b565b6004602052600090815260409020805460018201546002909201546001600160a01b0390911691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041684565b604080516001600160a01b03909516855260208501939093526fffffffffffffffffffffffffffffffff918216928401929092521660608201526080016101d7565b6101f3610479366004614163565b610785565b6101c37f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b6101f36104b3366004614356565b610e79565b6103497f000000000000000000000000000000000000000000000000000000000000006481565b6103496104ed36600461403b565b60016020526000908152604090205481565b6101f361050d36600461403b565b611120565b6101f36105203660046143df565b611191565b610538610533366004614069565b611464565b6040516101d79190614484565b6103497f000000000000000000000000000000000000000000000000000000000000000481565b6103497f000000000000000000000000000000000000000000000000000000000000001e81565b6101f36105a136600461403b565b6114db565b6105b96105b4366004614069565b6118fa565b6040516101d791906144c6565b6101f36105d4366004614507565b61192c565b6105e1613e01565b6105f784846001846105f2876145d9565b6123cb565b50505050565b600360008381526002602090815260408083206001600160a01b0386168452909152902061062a90612e27565b600581111561063b5761063b614497565b14610672576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067c8282612f05565b5050565b6000427f00000000000000000000000000000000000000000000000000000000000000647f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663a25ae557856040518263ffffffff1660e01b81526004016106f291815260200190565b608060405180830381865afa15801561070f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107339190614684565b604001516fffffffffffffffffffffffffffffffff16610753919061472b565b101592915050565b60408051808201909152606080825260208201526105f78484600061077f86614aad565b856123cb565b61078d613569565b610796856135cd565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015610817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083b9190614684565b6020015114610876576040517f8796efdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526004602052604090206001015482146108c0576040517f90e78fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109629190614bf4565b6001600160a01b0316846001600160a01b031614158061099c57506000858152600460205260409020546001600160a01b03848116911614155b156109d3576040517f8036a47f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526003602052604090205460ff16610a1b576040517fe1cdd3ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905587835260049182905280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002019290925590517fe6646723000000000000000000000000000000000000000000000000000000008152908101869052602481018390526001600160a01b0384811660448301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e664672390606401600060405180830381600087803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b505050507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190614bf4565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b8152600401610be191815260200190565b602060405180830381865afa158015610bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c229190614c11565b15610e2e577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190614bf4565b6040517fab04b8aa000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038581166024830152919091169063ab04b8aa90604401600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b505050507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da89190614bf4565b6040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0385811660248301528681166044830152919091169063be995dc290606401600060405180830381600087803b158015610e1557600080fd5b505af1158015610e29573d6000803e3d6000fd5b505050505b836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610e6a91815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610e995750600054600160ff909116105b80610eb35750303b158015610eb3575060005460ff166001145b610f43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610fa157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60028251610faf9190614c62565b15610fe6576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160005b835181101561105f5783818151811061100657611006614c76565b60200260200101516001600083815260200190815260200160002081905550600184828151811061103957611039614c76565b602002602001015161104b9190614ca5565b6110559083614cbc565b9150600101610feb565b507f000000000000000000000000000000000000000000000000000000000000000481146110b9576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50801561067c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008181526002602090815260408083203384529091529020600181015461115b9083906001600160a01b031661115684612e27565b6136a9565b61067c576040517f4e9d86f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61119a856135cd565b60008581526002602090815260408083206001600160a01b03881684529091528120906111c682612e27565b60018301549091506111e39088906001600160a01b0316836136a9565b156111ef57505061145d565b6000600182600581111561120557611205614497565b0361121e575060018201546001600160a01b0316611251565b600282600581111561123257611232614497565b0361125157508154690100000000000000000090046001600160a01b03165b336001600160a01b03821614611293576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82546000906112a69060ff166001614cf9565b9050611331818560020189815481106112c1576112c1614c76565b9060005260206000200154866002018a60016112dd919061472b565b815481106112ed576112ed614c76565b9060005260206000200154898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613bcf92505050565b600061133c85613cda565b90506113978588888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061138292508691508d9050614cbc565b8860040154611391919061472b565b84613d25565b84547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161785556113cb85613d4f565b6040805160ff841681524260208201526001600160a01b038b16918c917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a361141c85613ded565b611457576040516001600160a01b038a16908b907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b50505050505b5050505050565b60008281526002602081815260408084206001600160a01b03861685528252928390209091018054835181840281018401909452808452606093928301828280156114ce57602002820191906000526020600020905b8154815260200190600101908083116114ba575b5050505050905092915050565b6114e3613569565b6114ec816135cd565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa15801561156d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115919190614684565b60208101519091506115cf576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101839052600060248201526001600160a01b037f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0811660448301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e664672390606401600060405180830381600087803b15801561167957600080fd5b505af115801561168d573d6000803e3d6000fd5b505050507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117139190614bf4565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161174091815260200190565b602060405180830381865afa15801561175d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117819190614c11565b156118ae577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118089190614bf4565b81516040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b037f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c081166024830152918216604482015291169063be995dc290606401600060405180830381600087803b15801561189557600080fd5b505af11580156118a9573d6000803e3d6000fd5b505050505b80600001516001600160a01b0316827fa620f04b65b1d538481626bf41dc5ee321b5c48e0cc1a7daae213cf7c254b54e426040516118ee91815260200190565b60405180910390a35050565b60008281526002602090815260408083206001600160a01b0385168452909152812061192590612e27565b9392505050565b84600003611966576040517f2604872b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e89190614bf4565b6001600160a01b031663ad36d6cc866040518263ffffffff1660e01b8152600401611a1591815260200190565b602060405180830381865afa158015611a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a569190614c11565b15611b96577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add9190614bf4565b6040517f9f8a13d70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690639f8a13d790602401602060405180830381865afa158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190614c11565b611b96576040517f197299a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260026020908152604080832033845290915290208054600160ff90911610611c1a576003611bc882612e27565b6005811115611bd957611bd9614497565b14611c10576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c1a8633612f05565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018790526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015611c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbf9190614684565b9050427f000000000000000000000000000000000000000000000000000000000000006482604001516fffffffffffffffffffffffffffffffff16611d04919061472b565b1015611d3c576040517fa0388b4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020810151611d77576040517fe66309bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516001600160a01b03163303611dba576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8515801590611dc95750844015155b15611e085785854014611e08576040517f72f1f56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663a25ae557611e4460018b614ca5565b6040518263ffffffff1660e01b8152600401611e6291815260200190565b608060405180830381865afa158015611e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea39190614684565b6020810151909150611f1157611f0c600186866000818110611ec757611ec7614c76565b905060200201358460200151888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613bcf92505050565b611f59565b611f59600182602001518460200151888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613bcf92505050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdb9190614bf4565b6001600160a01b031663ad36d6cc896040518263ffffffff1660e01b815260040161200891815260200190565b602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190614c11565b15612149577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d09190614bf4565b6040517f8c1516c70000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039190911690638c1516c790602401600060405180830381600087803b15801561212c57600080fd5b505af1158015612140573d6000803e3d6000fd5b50505050612247565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190614bf4565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018a90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b15801561222e57600080fd5b505af1158015612242573d6000803e3d6000fd5b505050505b6122e683868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060608601516122c091507f0000000000000000000000000000000000000000000000000000000000000004906fffffffffffffffffffffffffffffffff16614ca5565b7f0000000000000000000000000000000000000000000000000000000000000004613d25565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff00909116176001908117845583810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790556123609043614ca5565b40600584015561236f83613d4f565b815160405142815233916001600160a01b0316908a907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a45050505050505050565b6001600160a01b03163b151590565b6123d4856135cd565b60008581526002602090815260408083203384529091528120906123f782612e27565b60018301549091506124149088906001600160a01b0316836136a9565b1561242057505061145d565b600581600581111561243457612434614497565b141580156124545750600481600581111561245157612451614497565b14155b1561248b576040517f744b348200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260020187815481106124a2576124a2614c76565b9060005260206000200154905060006124ba84613ded565b6124eb57600284016124cd89600161472b565b815481106124dd576124dd614c76565b906000526020600020015490505b600087156125a95760058501546040517fb3a472580000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788169163b3a4725891612561918a9188918891600401614d1e565b602060405180830381865afa15801561257e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a29190614d93565b9050612656565b6040517ffefd67bb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788169063fefd67bb90612612908a9087908790600401614fe2565b602060405180830381865afa15801561262f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126539190614d93565b90505b60008181526003602052604090205460ff161561269f576040517fd0cea89800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405142815233908b907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018b90526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015612757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277b9190614684565b86546020820151604051602481018f905233604482015269010000000000000000009092046001600160a01b03166064830152608482015260a481018490529091506000907f62fc00db000000000000000000000000000000000000000000000000000000009060c401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0169263080b91ee926128d59291908690600401615161565b600060405180830381600087803b1580156128ef57600080fd5b505af1158015612903573d6000803e3d6000fd5b50505060008d815260046020818152604092839020865181546001600160a01b039182167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178255828801516001830155848801516060909801516fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000000298169790971760029091015582517fb98debbf00000000000000000000000000000000000000000000000000000000815292517f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99096169563b98debbf9550838301945090929091908290030181865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190614bf4565b6001600160a01b031663ad36d6cc8b6040518263ffffffff1660e01b8152600401612a5b91815260200190565b602060405180830381865afa158015612a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9c9190614c11565b15612bb8577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b239190614bf4565b85546040517fbe995dc2000000000000000000000000000000000000000000000000000000008152600481018d90523360248201526001600160a01b0369010000000000000000009092048216604482015291169063be995dc290606401600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b50505050612cb6565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3a9190614bf4565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018c90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b158015612c9d57600080fd5b505af1158015612cb1573d6000803e3d6000fd5b505050505b600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558d8452600280845282852033865290935290832080547fffffff000000000000000000000000000000000000000000000000000000000016815590810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612d6490830182613e28565b50600060038201819055600480830182905560059092018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018c905260248201523360448201527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063e664672390606401600060405180830381600087803b158015612e0357600080fd5b505af1158015612e17573d6000803e3d6000fd5b5050505050505050505050505050565b8054600090600160ff9091161015612e4157506000919050565b8154600090612e559060029060ff1661519b565b835460ff91909116159150610100900467ffffffffffffffff16421115612eda578015612e855750600392915050565b8254612ec1907f000000000000000000000000000000000000000000000000000000000000001e90610100900467ffffffffffffffff1661472b565b421115612ed15750600392915050565b50600492915050565b612ee383613ded565b612ef05750600592915050565b80612efc576002611925565b60019392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612f8590830182613e28565b6003820160009055600482016000905560058201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612fdb91815260200190565b60405180910390a37f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613041573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130659190614bf4565b6001600160a01b031663ad36d6cc836040518263ffffffff1660e01b815260040161309291815260200190565b602060405180830381865afa1580156130af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d39190614c11565b1561327d577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315a9190614bf4565b6001600160a01b031663be995dc2837f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b0ea09a8866040518263ffffffff1660e01b81526004016131b791815260200190565b602060405180830381865afa1580156131d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f89190614bf4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b039081166024830152841660448201526064015b600060405180830381600087803b15801561326157600080fd5b505af1158015613275573d6000803e3d6000fd5b505050505050565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa1580156132fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331f9190614c11565b15613497577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a69190614bf4565b6001600160a01b03166336b8346983837f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b0ea09a8876040518263ffffffff1660e01b815260040161340491815260200190565b602060405180830381865afa158015613421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134459190614bf4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526001600160a01b039182166024840152166044820152606401613247565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135199190614bf4565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d90604401613247565b336001600160a01b037f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c016146135cb576040517f9d02a7c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa15801561364b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366f9190614c11565b156136a6576040517f5c9d9a2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa15801561372c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137509190614684565b602001511461376157506000611925565b336001600160a01b038416146137a3576040517f21e62a3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260058111156137b7576137b7614497565b14806137d4575060038260058111156137d2576137d2614497565b145b1561380b576040517ff691b6e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055919061388290830182613e28565b5060006003820181905560048201819055600590910155604051428152339085907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561392e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139529190614bf4565b6001600160a01b031663ad36d6cc856040518263ffffffff1660e01b815260040161397f91815260200190565b602060405180830381865afa15801561399c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c09190614c11565b15613ac0577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663ae9483e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a479190614bf4565b6040517fa83871720000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03919091169063a838717290602401600060405180830381600087803b158015613aa357600080fd5b505af1158015613ab7573d6000803e3d6000fd5b50505050613bc5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b429190614bf4565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101869052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b158015613bac57600080fd5b505af1158015613bc0573d6000803e3d6000fd5b505050505b5060019392505050565b805160016000613bdf82886151bd565b60ff1681526020019081526020016000205414613c28576040517ffbb795f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600081518110613c3b57613c3b614c76565b60200260200101518314613c7b576040517f224dff3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060018251613c8a9190614ca5565b81518110613c9a57613c9a614c76565b602002602001015182036105f7576040517f87c1943200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460009060019081908390613cf490839060ff166151bd565b60ff16815260200190815260200160002054613d109190614ca5565b8260030154613d1f91906151e0565b92915050565b8251613d3a9060028601906020860190613e46565b50600484019190915560039092019190915550565b613d5881613ded565b613dc357613d867f000000000000000000000000000000000000000000000000000000000000001e4261472b565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b613d867f000000000000000000000000000000000000000000000000000000000000001e4261472b565b60006001613dfa83613cda565b1192915050565b6040518060600160405280613e14613e91565b815260200160608152602001606081525090565b50805460008255906000526020600020908101906136a69190613fcf565b828054828255906000526020600020908101928215613e81579160200282015b82811115613e81578251825591602001919060010190613e66565b50613e8d929150613fcf565b5090565b604080516101808101909152600060e08201818152610100830182905261012083018290526101408301829052610160830191909152819081526040805160a081018252600080825260208281018290529282018190526060820181905260808201529101908152604080516101a0810182526000808252602082810182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e083018290526101008301829052610120830152610140820181905261016082018190526101808201529101908152602001613fb66040518061012001604052806060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b8152600060208201819052604082015260609081015290565b5b80821115613e8d5760008155600101613fd0565b600080600060608486031215613ff957600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561401e57600080fd5b84016040818703121561403057600080fd5b809150509250925092565b60006020828403121561404d57600080fd5b5035919050565b6001600160a01b03811681146136a657600080fd5b6000806040838503121561407c57600080fd5b82359150602083013561408e81614054565b809150509250929050565b6000806000606084860312156140ae57600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156140d357600080fd5b84016060818703121561403057600080fd5b6000815180845260005b8181101561410b576020818501810151868301820152016140ef565b8181111561411d576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061192560208301846140e5565b600080600080600060a0868803121561417b57600080fd5b85359450602086013561418d81614054565b9350604086013561419d81614054565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715614208576142086141b5565b60405290565b604051610120810167ffffffffffffffff81118282101715614208576142086141b5565b6040516060810167ffffffffffffffff81118282101715614208576142086141b5565b60405160e0810167ffffffffffffffff81118282101715614208576142086141b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156142bf576142bf6141b5565b604052919050565b600067ffffffffffffffff8211156142e1576142e16141b5565b5060051b60200190565b600082601f8301126142fc57600080fd5b8135602061431161430c836142c7565b614278565b82815260059290921b8401810191818101908684111561433057600080fd5b8286015b8481101561434b5780358352918301918301614334565b509695505050505050565b60006020828403121561436857600080fd5b813567ffffffffffffffff81111561437f57600080fd5b61438b848285016142eb565b949350505050565b60008083601f8401126143a557600080fd5b50813567ffffffffffffffff8111156143bd57600080fd5b6020830191508360208260051b85010111156143d857600080fd5b9250929050565b6000806000806000608086880312156143f757600080fd5b85359450602086013561440981614054565b935060408601359250606086013567ffffffffffffffff81111561442c57600080fd5b61443888828901614393565b969995985093965092949392505050565b600081518084526020808501945080840160005b838110156144795781518752958201959082019060010161445d565b509495945050505050565b6020815260006119256020830184614449565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614501577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060008060006080868803121561451f57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561442c57600080fd5b600082601f83011261455c57600080fd5b813567ffffffffffffffff811115614576576145766141b5565b6145a760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614278565b8181528460208386010111156145bc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000604082360312156145eb57600080fd5b6040516040810167ffffffffffffffff828210818311171561460f5761460f6141b5565b81604052843591508082111561462457600080fd5b6146303683870161454b565b8352602085013591508082111561464657600080fd5b506146533682860161454b565b60208301525092915050565b80516fffffffffffffffffffffffffffffffff8116811461467f57600080fd5b919050565b60006080828403121561469657600080fd5b6040516080810181811067ffffffffffffffff821117156146b9576146b96141b5565b60405282516146c781614054565b8152602083810151908201526146df6040840161465f565b60408201526146f06060840161465f565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561473e5761473e6146fc565b500190565b600060a0828403121561475557600080fd5b60405160a0810181811067ffffffffffffffff82111715614778576147786141b5565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b803567ffffffffffffffff8116811461467f57600080fd5b60006101a082840312156147de57600080fd5b6147e66141e4565b90508135815260208201356020820152614802604083016147b3565b6040820152614813606083016147b3565b6060820152614824608083016147b3565b608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013567ffffffffffffffff81111561486f57600080fd5b61487b858286016142eb565b82840152505061014061488f8184016147b3565b908201526101606148a18382016147b3565b818301525061018080830135818301525092915050565b600061012082840312156148cb57600080fd5b6148d361420e565b9050813567ffffffffffffffff808211156148ed57600080fd5b6148f98583860161454b565b8352602084013591508082111561490f57600080fd5b61491b8583860161454b565b6020840152604084013591508082111561493457600080fd5b6149408583860161454b565b6040840152606084013591508082111561495957600080fd5b6149658583860161454b565b6060840152608084013591508082111561497e57600080fd5b61498a8583860161454b565b608084015260a08401359150808211156149a357600080fd5b6149af8583860161454b565b60a084015260c08401359150808211156149c857600080fd5b6149d48583860161454b565b60c084015260e08401359150808211156149ed57600080fd5b6149f98583860161454b565b60e084015261010091508184013581811115614a1457600080fd5b614a208682870161454b565b8385015250505092915050565b600082601f830112614a3e57600080fd5b81356020614a4e61430c836142c7565b82815260059290921b84018101918181019086841115614a6d57600080fd5b8286015b8481101561434b57803567ffffffffffffffff811115614a915760008081fd5b614a9f8986838b010161454b565b845250918301918301614a71565b600060608236031215614abf57600080fd5b614ac7614232565b823567ffffffffffffffff80821115614adf57600080fd5b81850191506101e08236031215614af557600080fd5b614afd614255565b614b073684614743565b8152614b163660a08501614743565b602082015261014083013582811115614b2e57600080fd5b614b3a368286016147cb565b60408301525061016083013582811115614b5357600080fd5b614b5f368286016148b8565b60608301525061018083013560808201526101a083013560a08201526101c083013582811115614b8e57600080fd5b614b9a36828601614a2d565b60c08301525083526020850135915080821115614bb657600080fd5b614bc2368387016142eb565b60208401526040850135915080821115614bdb57600080fd5b50614be8368286016142eb565b60408301525092915050565b600060208284031215614c0657600080fd5b815161192581614054565b600060208284031215614c2357600080fd5b8151801515811461192557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614c7157614c71614c33565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082821015614cb757614cb76146fc565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614cf457614cf46146fc565b500290565b600060ff821660ff84168060ff03821115614d1657614d166146fc565b019392505050565b608081526000855160406080840152614d3a60c08401826140e5565b905060208701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808483030160a0850152614d7582826140e5565b60208501979097525050506040810192909252606090910152919050565b600060208284031215614da557600080fd5b5051919050565b60006101a082518452602083015160208501526040830151614dda604086018267ffffffffffffffff169052565b506060830151614df6606086018267ffffffffffffffff169052565b506080830151614e12608086018267ffffffffffffffff169052565b5060a083015160a085015260c083015160c085015260e083015160e0850152610100808401518186015250610120808401518282870152614e5583870182614449565b9250505061014080840151614e758287018267ffffffffffffffff169052565b50506101608381015167ffffffffffffffff16908501526101809283015192909301919091525090565b60006101208251818552614eb5828601826140e5565b91505060208301518482036020860152614ecf82826140e5565b91505060408301518482036040860152614ee982826140e5565b91505060608301518482036060860152614f0382826140e5565b91505060808301518482036080860152614f1d82826140e5565b91505060a083015184820360a0860152614f3782826140e5565b91505060c083015184820360c0860152614f5182826140e5565b91505060e083015184820360e0860152614f6b82826140e5565b9150506101008084015185830382870152614f8683826140e5565b9695505050505050565b6000815180845260208085019450848260051b860182860160005b85811015614fd5578383038952614fc38383516140e5565b98850198925090840190600101614fab565b5090979650505050505050565b606081526000845160608084015261502960c08401825180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b60208181015180516101608601529081015161018085015260408101516101a085015260608101516101c085015260808101516101e08501525060408101516101e061020085015261507f6102a0850182614dac565b905060608201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4080868403016102208701526150bc8383614e9f565b9250608084015161024087015260a084015161026087015260c08401519350808684030161028087015250506150f28183614f90565b91505060208601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08085840301608086015261512f8383614449565b925060408801519150808584030160a08601525061514d8282614449565b602085019690965250505060400152919050565b8381526fffffffffffffffffffffffffffffffff8316602082015260606040820152600061519260608301846140e5565b95945050505050565b600060ff8316806151ae576151ae614c33565b8060ff84160691505092915050565b600060ff821660ff8416808210156151d7576151d76146fc565b90039392505050565b6000826151ef576151ef614c33565b50049056fea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "03", + "0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49": "02", + "0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "02", + "0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "03" + }, + "key": "0x8f9c59785b25c2aaced68d553bb192545553e42593130ee4862efe93a6040df8" + }, + "0xa85233c63b9ee964add6f2cffe00fd84eb32338f": { + "balance": "0", + "nonce": 1, + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0x35557ad22a54e2d0ee2fcd5267d8726f9e014d93448c30d3d0ea003f20103f13", + "code": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063761f44931161005b578063761f44931461012d5780637f46ddb214610140578063927ede2d1461018c578063aa557452146101b357600080fd5b80633687011a1461008257806354fd4d50146100975780635d93a3fc146100e9575b600080fd5b610095610090366004610bad565b6101c6565b005b6100d36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100e09190610c9b565b60405180910390f35b61011d6100f7366004610cb5565b603160209081526000938452604080852082529284528284209052825290205460ff1681565b60405190151581526020016100e0565b61009561013b366004610cf6565b610272565b6101677f000000000000000000000000420000000000000000000000000000000000000a81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e0565b6101677f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b6100956101c1366004610d8e565b6106f3565b333b1561025a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b61026a86863333888888886107af565b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614801561039057507f000000000000000000000000420000000000000000000000000000000000000a73ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103789190610e05565b73ffffffffffffffffffffffffffffffffffffffff16145b61041c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f7468657220627269646765006064820152608401610251565b3073ffffffffffffffffffffffffffffffffffffffff8816036104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c314552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c66000000000000000000000000000000000000000000006064820152608401610251565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152603160209081526040808320938a1683529281528282208683529052205460ff161515600114610590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4c314552433732314272696467653a20546f6b656e204944206973206e6f742060448201527f657363726f77656420696e20746865204c3120427269646765000000000000006064820152608401610251565b73ffffffffffffffffffffffffffffffffffffffff87811660008181526031602090815260408083208b8616845282528083208884529091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152918616602483015260448201859052906342842e0e90606401600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac878787876040516106e29493929190610e6b565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f742062652061646472657373283029000000000000000000000000000000006064820152608401610251565b6107a687873388888888886107af565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8716610852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c314552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f7420626520616464726573732830290000000000000000000000000000006064820152608401610251565b600063761f449360e01b888a89898988886040516024016108799796959493929190610eab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000959095169490941790935273ffffffffffffffffffffffffffffffffffffffff8c81166000818152603186528381208e8416825286528381208b82529095529382902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517f23b872dd000000000000000000000000000000000000000000000000000000008152908a166004820152306024820152604481018890529092506323b872dd90606401600060405180830381600087803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b50506040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169250633dbb202b9150610a67907f000000000000000000000000420000000000000000000000000000000000000a9085908990600401610f08565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a589898888604051610b139493929190610e6b565b60405180910390a4505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610b4857600080fd5b50565b803563ffffffff81168114610b5f57600080fd5b919050565b60008083601f840112610b7657600080fd5b50813567ffffffffffffffff811115610b8e57600080fd5b602083019150836020828501011115610ba657600080fd5b9250929050565b60008060008060008060a08789031215610bc657600080fd5b8635610bd181610b26565b95506020870135610be181610b26565b945060408701359350610bf660608801610b4b565b9250608087013567ffffffffffffffff811115610c1257600080fd5b610c1e89828a01610b64565b979a9699509497509295939492505050565b6000815180845260005b81811015610c5657602081850181015186830182015201610c3a565b81811115610c68576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cae6020830184610c30565b9392505050565b600080600060608486031215610cca57600080fd5b8335610cd581610b26565b92506020840135610ce581610b26565b929592945050506040919091013590565b600080600080600080600060c0888a031215610d1157600080fd5b8735610d1c81610b26565b96506020880135610d2c81610b26565b95506040880135610d3c81610b26565b94506060880135610d4c81610b26565b93506080880135925060a088013567ffffffffffffffff811115610d6f57600080fd5b610d7b8a828b01610b64565b989b979a50959850939692959293505050565b600080600080600080600060c0888a031215610da957600080fd5b8735610db481610b26565b96506020880135610dc481610b26565b95506040880135610dd481610b26565b945060608801359350610de960808901610b4b565b925060a088013567ffffffffffffffff811115610d6f57600080fd5b600060208284031215610e1757600080fd5b8151610cae81610b26565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610ea1606083018486610e22565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a0830152610efb60c083018486610e22565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000610f376060830185610c30565b905063ffffffff8316604083015294935050505056fea164736f6c634300080f000a", + "key": "0xea5bcd16c6bba173a130ee9dbf9a8d7e4a9f75be48c7f605934587f6ccd1eb76" + }, + "0xb7278a61aa25c888815afc32ad3cc52ff24fe575": { + "balance": "0", + "nonce": 1, + "root": "0x3fe1d369b347a5a5c3ef2ffc7443ecb417736b02d5d3d46543e0dddbe76c8540", + "codeHash": "0xf5bbc45c8d0fe2e46b8a3119517fe1789bec338816793bf698db8be057abc85a", + "code": "0x608060405234801561001057600080fd5b50600436106102775760003560e01c806379ba509711610160578063a457c2d7116100d8578063dd62ed3e1161008c578063ee9a31a211610071578063ee9a31a21461060c578063f1127ed814610633578063f2fde38b1461068557600080fd5b8063dd62ed3e146105c2578063e30c3978146105fb57600080fd5b8063c3cda520116100bd578063c3cda52014610589578063c4d66de81461059c578063d505accf146105af57600080fd5b8063a457c2d714610563578063a9059cbb1461057657600080fd5b80638e539e8c1161012f57806395d89b411161011457806395d89b41146105045780639ab24eb01461053d5780639dc29fac1461055057600080fd5b80638e539e8c146104d257806391ddadf4146104e557600080fd5b806379ba50971461048b5780637ecebe001461049357806384b0196e146104a65780638da5cb5b146104c157600080fd5b80633a46b1a8116101f3578063587cde1e116101c25780636fcfff45116101a75780636fcfff451461043257806370a082311461045a578063715018a61461048357600080fd5b8063587cde1e146103f35780635c19a95c1461041f57600080fd5b80633a46b1a81461038757806340c10f191461039a5780634bf5d7e9146103af57806354fd4d50146103b757600080fd5b806318160ddd1161024a578063313ce5671161022f578063313ce5671461035d5780633644e5151461036c578063395093511461037457600080fd5b806318160ddd1461033857806323b872dd1461034a57600080fd5b806301ffc9a71461027c578063033964be146102a457806306fdde03146102e3578063095ea7b314610325575b600080fd5b61028f61028a366004612a65565b610698565b60405190151581526020015b60405180910390f35b6102cb7f0000000000000000000000001291be112d480055dafd8a610b7d1e203891c27481565b6040516001600160a01b03909116815260200161029b565b60408051808201909152600581527f4b726f6d6100000000000000000000000000000000000000000000000000000060208201525b60405161029b9190612b12565b61028f610333366004612b41565b610738565b6002545b60405190815260200161029b565b61028f610358366004612b6b565b610752565b6040516012815260200161029b565b61033c610776565b61028f610382366004612b41565b610785565b61033c610395366004612b41565b6107c4565b6103ad6103a8366004612b41565b610852565b005b610318610913565b6103186040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6102cb610401366004612ba7565b6001600160a01b039081166000908152600960205260409020541690565b6103ad61042d366004612ba7565b6109ab565b610445610440366004612ba7565b6109b8565b60405163ffffffff909116815260200161029b565b61033c610468366004612ba7565b6001600160a01b031660009081526020819052604090205490565b6103ad6109da565b6103ad6109ee565b61033c6104a1366004612ba7565b610a79565b6104ae610a97565b60405161029b9796959493929190612bc2565b603f546001600160a01b03166102cb565b61033c6104e0366004612c74565b610b3c565b6104ed610ba7565b60405165ffffffffffff909116815260200161029b565b60408051808201909152600381527f4b524f00000000000000000000000000000000000000000000000000000000006020820152610318565b61033c61054b366004612ba7565b610bb2565b6103ad61055e366004612b41565b610c5e565b61028f610571366004612b41565b610d06565b61028f610584366004612b41565b610db0565b6103ad610597366004612c9e565b610dbe565b6103ad6105aa366004612ba7565b610ef4565b6103ad6105bd366004612cf6565b611075565b61033c6105d0366004612d60565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6071546001600160a01b03166102cb565b6102cb7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b610646610641366004612d93565b6111d9565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928101929092520161029b565b6103ad610693366004612ba7565b611272565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f30a0c5a9000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061073057507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b60003361074681858561132f565b60019150505b92915050565b600033610760858285611487565b61076b858585611519565b506001949350505050565b600061078061170c565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061074690829086906107bf908790612e02565b61132f565b60006107ce610ba7565b65ffffffffffff1682106108295760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166000908152600a6020526040902061084b9083611837565b9392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614806108935750603f546001600160a01b031633145b6109055760405162461bcd60e51b815260206004820152602e60248201527f476f7665726e616e6365546f6b656e3a206f6e6c7920627269646765206f722060448201527f6f776e65722063616e206d696e740000000000000000000000000000000000006064820152608401610820565b61090f828261194a565b5050565b60604361091e610ba7565b65ffffffffffff16146109735760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152606401610820565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6109b5338261199b565b50565b6001600160a01b0381166000908152600a602052604081205461074c90611a2c565b6109e2611aac565b6109ec6000611b06565b565b60715433906001600160a01b03168114610a705760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610820565b6109b581611b06565b6001600160a01b03811660009081526007602052604081205461074c565b600060608082808083610acb7f4b726f6d610000000000000000000000000000000000000000000000000000056005611b37565b610af67f31000000000000000000000000000000000000000000000000000000000000016006611b37565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610b46610ba7565b65ffffffffffff168210610b9c5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000006044820152606401610820565b61074c600b83611837565b600061078043611bdb565b6001600160a01b0381166000908152600a60205260408120548015610c36576001600160a01b0383166000908152600a6020526040902080546000198301908110610bff57610bff612e49565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610c39565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610cfc5760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e0000000000000000000000000000006064820152608401610820565b61090f8282611c59565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610da35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610820565b61076b828686840361132f565b600033610746818585611519565b83421115610e0e5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610820565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610e8890610e809060a00160405160208183030381529060405280519060200120611c9e565b858585611ce6565b9050610e9381611d0e565b8614610ee15760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610820565b610eeb818861199b565b50505050505050565b600c54610100900460ff1615808015610f145750600c54600160ff909116105b80610f2e5750303b158015610f2e5750600c5460ff166001145b610fa05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610820565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ffe57600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611006611d36565b61100f82611272565b801561090f57600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b834211156110c55760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610820565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886110f48c611d0e565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061114f82611c9e565b9050600061115f82878787611ce6565b9050896001600160a01b0316816001600160a01b0316146111c25760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610820565b6111cd8a8a8a61132f565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600a60205260409020805463ffffffff841690811061121d5761121d612e49565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b61127a611aac565b607180546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556112c3603f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60006020835110156113175761131083611dbb565b905061074c565b816113228482612f13565b5060ff905061074c565b90565b6001600160a01b0383166113aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0382166114265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461151357818110156115065760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610820565b611513848484840361132f565b50505050565b6001600160a01b0383166115955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0382166116115760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b038316600090815260208190526040902054818110156116a05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611513848484611e17565b6000306001600160a01b037f000000000000000000000000b7278a61aa25c888815afc32ad3cc52ff24fe5751614801561176557507f000000000000000000000000000000000000000000000000000000000000053946145b1561178f57507f5d7f69047dffee0a267a2453257f13283de5077d62fced0ff575bdf2621ed7b090565b610780604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f7d1780c7a694e1f75550e8e5f55a6c40ba84748efbfbd38087dbf009f30899ba918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b81546000908181600581111561189157600061185284611e22565b61185c9085612ff1565b600088815260209020909150869082015463ffffffff1611156118815780915061188f565b61188c816001612e02565b92505b505b808210156118de5760006118a58383611f0a565b600088815260209020909150869082015463ffffffff1611156118ca578091506118d8565b6118d5816001612e02565b92505b50611891565b801561191f576000868152602090208101600019015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611922565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169695505050505050565b6119548282611f25565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161198f91815260200190565b60405180910390a25050565b6001600160a01b038281166000818152600960208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611513828483611fd1565b600063ffffffff821115611aa85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610820565b5090565b603f546001600160a01b031633146109ec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610820565b607180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556109b58161210e565b606060ff8314611b4a5761131083612178565b818054611b5690612e78565b80601f0160208091040260200160405190810160405280929190818152602001828054611b8290612e78565b8015611bcf5780601f10611ba457610100808354040283529160200191611bcf565b820191906000526020600020905b815481529060010190602001808311611bb257829003601f168201915b5050505050905061074c565b600065ffffffffffff821115611aa85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152608401610820565b611c6382826121b7565b816001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161198f91815260200190565b600061074c611cab61170c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000611cf7878787876121cf565b91509150611d04816122b1565b5095945050505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b600c54610100900460ff16611db35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610820565b6109ec612416565b600080829050601f81511115611dff57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016108209190612b12565b8051611e0a82613008565b179392505050565b505050565b611e1283838361249c565b600081600003611e3457506000919050565b60006001611e41846124ce565b901c6001901b90506001818481611e5a57611e5a61302c565b048201901c90506001818481611e7257611e7261302c565b048201901c90506001818481611e8a57611e8a61302c565b048201901c90506001818481611ea257611ea261302c565b048201901c90506001818481611eba57611eba61302c565b048201901c90506001818481611ed257611ed261302c565b048201901c90506001818481611eea57611eea61302c565b048201901c905061084b81828581611f0457611f0461302c565b04612562565b6000611f19600284841861305b565b61084b90848416612e02565b611f2f8282612578565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1015611fc35760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610820565b611513600b61263f8361264b565b816001600160a01b0316836001600160a01b031614158015611ff35750600081115b15611e12576001600160a01b03831615612081576001600160a01b0383166000908152600a60205260408120819061202e906128148561264b565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612076929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611e12576001600160a01b0382166000908152600a6020526040812081906120b79061263f8561264b565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516120ff929190918252602082015260400190565b60405180910390a25050505050565b603f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060600061218583612820565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6121c18282612861565b611513600b6128148361264b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561220657506000905060036122a8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561225a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b0381166122a1576000600192509250506122a8565b9150600090505b94509492505050565b60008160048111156122c5576122c5613096565b036122cd5750565b60018160048111156122e1576122e1613096565b0361232e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610820565b600281600481111561234257612342613096565b0361238f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610820565b60038160048111156123a3576123a3613096565b036109b55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610820565b600c54610100900460ff166124935760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610820565b6109ec33611b06565b6001600160a01b03838116600090815260096020526040808220548584168352912054611e1292918216911683611fd1565b600080608083901c156124e357608092831c92015b604083901c156124f557604092831c92015b602083901c1561250757602092831c92015b601083901c1561251957601092831c92015b600883901c1561252b57600892831c92015b600483901c1561253d57600492831c92015b600283901c1561254f57600292831c92015b600183901c1561074c5760010192915050565b6000818310612571578161084b565b5090919050565b6001600160a01b0382166125ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610820565b80600260008282546125e09190612e02565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361090f60008383611e17565b600061084b8284612e02565b825460009081908181156126ad5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660208201526126c2565b60408051808201909152600080825260208201525b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1693506126f784868863ffffffff16565b9250600082118015612721575061270c610ba7565b65ffffffffffff16816000015163ffffffff16145b1561277b5761272f836129d1565b60008881526020902083016000190180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff90921691909117905561280a565b86604051806040016040528061279f612792610ba7565b65ffffffffffff16611a2c565b63ffffffff1681526020016127b3866129d1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b600061084b8284612ff1565b600060ff8216601f81111561074c576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166128dd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0382166000908152602081905260409020548181101561296c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610820565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611e1283600084611e17565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611aa85760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610820565b600060208284031215612a7757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084b57600080fd5b6000815180845260005b81811015612acd57602081850181015186830182015201612ab1565b81811115612adf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061084b6020830184612aa7565b80356001600160a01b0381168114612b3c57600080fd5b919050565b60008060408385031215612b5457600080fd5b612b5d83612b25565b946020939093013593505050565b600080600060608486031215612b8057600080fd5b612b8984612b25565b9250612b9760208501612b25565b9150604084013590509250925092565b600060208284031215612bb957600080fd5b61084b82612b25565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152612bfe60e084018a612aa7565b8381036040850152612c10818a612aa7565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015612c6257835183529284019291840191600101612c46565b50909c9b505050505050505050505050565b600060208284031215612c8657600080fd5b5035919050565b803560ff81168114612b3c57600080fd5b60008060008060008060c08789031215612cb757600080fd5b612cc087612b25565b95506020870135945060408701359350612cdc60608801612c8d565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215612d1157600080fd5b612d1a88612b25565b9650612d2860208901612b25565b95506040880135945060608801359350612d4460808901612c8d565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612d7357600080fd5b612d7c83612b25565b9150612d8a60208401612b25565b90509250929050565b60008060408385031215612da657600080fd5b612daf83612b25565b9150602083013563ffffffff81168114612dc857600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612e1557612e15612dd3565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c90821680612e8c57607f821691505b602082108103611d30577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115611e1257600081815260208120601f850160051c81016020861015612eec5750805b601f850160051c820191505b81811015612f0b57828155600101612ef8565b505050505050565b815167ffffffffffffffff811115612f2d57612f2d612e1a565b612f4181612f3b8454612e78565b84612ec5565b602080601f831160018114612f765760008415612f5e5750858301515b600019600386901b1c1916600185901b178555612f0b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612fc357888601518255948401946001909101908401612fa4565b5085821015612fe15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008282101561300357613003612dd3565b500390565b80516020808301519190811015611d305760001960209190910360031b1b16919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613091577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", + "storage": { + "0x000000000000000000000000000000000000000000000000000000000000000c": "ff" + }, + "key": "0x6d7c215742536a50e5da6c18c5b22c08ad4876441d6a1c93e629474ec3f6facf" + }, "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e": { "balance": "0", "nonce": 1, - "root": "0xb51ec8dbdda1235c05dd16ca28b8e72c9f469ae3a34e5b6de9a8a1c7cb092280", + "root": "0x717515de0dfdc6d9f7afbdeeb4a3a2f7f4ab95c0a9cd712d8eecf299be6830fc", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "36c02da8a0983159322a80ffe9f24b1acff8b570", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "03", + "0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49": "02", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3", + "0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "02", + "0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "03" }, "key": "0xad6ff7dc4f5626bc6b49eb92a9bbcd72320506ab7bfa9f543c096f7a28980df6" }, - "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690": { + "0xc5a5c42992decbae36851359345fe25997f5c42d": { "balance": "0", "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xc4825f5ac697c051a52eaac72a6c24043b771675aa90db220fe7fa7d0e8a7c13", - "code": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80634292dc3e1461003b57806354fd4d5014610063575b600080fd5b61004e61004936600461576f565b6100ac565b60405190151581526020015b60405180910390f35b61009f6040518060400160405280600581526020017f302e312e3500000000000000000000000000000000000000000000000000000081525081565b60405161005a91906157e3565b60006100b661560c565b848460008181106100c9576100c9615856565b9050602002013570ffffffffffffffffffffffffffffffffff16816000600681106100f6576100f6615856565b602002015260888585600181811061011057610110615856565b90506020020135600116901b60888686600081811061013157610131615856565b90506020020135901c61014491906158b4565b60208201528484600281811061015c5761015c615856565b9050602002013570ffffffffffffffffffffffffffffffffff168160026006811061018957610189615856565b60200201526088858560038181106101a3576101a3615856565b90506020020135600116901b6088868660028181106101c4576101c4615856565b90506020020135901c6101d791906158b4565b606080830191909152608084811c908301526fffffffffffffffffffffffffffffffff841660a08301526040805160028082529281019091526000918291829182918291816020015b60408051808201909152600080825260208201528152602001906001900390816102205750506040805160028082526060820190925291925060009190602082015b61026a61562a565b81526020019060019003908161026257905050905061028a8d8d896104fb565b85519399509097509095509350869083906000906102aa576102aa615856565b6020026020010151600001818152505083826000815181106102ce576102ce615856565b6020026020010151602001818152505084826001815181106102f2576102f2615856565b60200260200101516000018181525050828260018151811061031657610316615856565b6020026020010151602001818152505061032e614a63565b8160008151811061034157610341615856565b6020026020010181905250610354614b0e565b8160018151811061036757610367615856565b602002602001018190525061037c8282614bb5565b6103905760009750505050505050506104f2565b8a8a60008181106103a3576103a3615856565b90506020020135826000815181106103bd576103bd615856565b6020908102919091010151528a8a60018181106103dc576103dc615856565b90506020020135826000815181106103f6576103f6615856565b602002602001015160200181815250508a8a600281811061041957610419615856565b905060200201358260018151811061043357610433615856565b6020908102919091010151528a8a600381811061045257610452615856565b905060200201358260018151811061046c5761046c615856565b60200260200101516020018181525050610484614a63565b8160008151811061049757610497615856565b60200260200101819052506104aa614b0e565b816001815181106104bd576104bd615856565b60200260200101819052506104d28282614bb5565b6104e65760009750505050505050506104f2565b60019750505050505050505b95945050505050565b60008060008061050961564f565b61051161566e565b6000806105667f2754b04f3f510d0e86a0d0e811f0fc16f92b722514e1729066d2abf90811d6f27f1816b0f9909a5a979bd34c559e57b4096bee5cce7eb668bc0a9805677f40dc858b845b6020020151614e89565b90925090506105c07f174fa57071f8f6e53fcb31a5ecc33274ec76e4e186eeb0b64255d2f314cd50b27f1c399365e85e4de2761ebcf350da85ff4518cc82f7cef64a477a7a5fd11d4a448b60015b60200201518585614eef565b90925090506106127f259a4d5cd83279b6dc9ca2008b669f82e91f23804e2524c5087a2452d52c33bd7f303abddb7ae0f35e3a6bd39314b347c3c3a433f72833dda1998ad2176258baa38b60026105b4565b90925090506106647f252b158900f31a7c0c00b924e7d3c8d61a60c5e9fd2b83251ba73d1dc0b680f57f29c8c2b3f0d74267bc2b0f9f3568838cdb0eee4719391790d93d0015c00ce5af8b60036105b4565b90925090506106b67f0c25f9f3c38b6a128d7d38c5625a3976d389b5f9f33098bb419968e4d18e150e7f21fb777462c7f4af71940423babc7f882f0c97be9620ef84f6f11974ee0edb8e8b60046105b4565b90925090506107087f2280a0fd7dbf95c450830906ffc607a373d5b9b56b9101138e925ad557eb355a7f0697ab7e9a5377e2759ab6d1283301ccae9c72bad14946a9513ee19be1ec825e8b60056105b4565b6020860152845261073b7f00b54142d3712f03ff5c15914a3dce82c0d8a8d537e165e2342048adf14e34aa846000614f3b565b8351602085015161074f9190856002614f87565b600091505b600482116107ed576107db8b8b61076c8560026158fb565b6107779060006158b4565b81811061078657610786615856565b905060200201358c8c85600261079c91906158fb565b6107a79060016158b4565b8181106107b6576107b6615856565b90506020020135858560036107cb91906158fb565b6107d69060056158b4565b614f87565b816107e581615938565b925050610754565b6107f8836014614ff7565b6040850152600091505b600d8211610896576108848b8b61081a8560026158fb565b61082590600a6158b4565b81811061083457610834615856565b905060200201358c8c85600261084a91906158fb565b61085590600b6158b4565b81811061086457610864615856565b905060200201358585600361087991906158fb565b6107d69060016158b4565b8161088e81615938565b925050610802565b6108a183602b614ff7565b60608501526108b1836001614ff7565b6080850152600091505b600982116109205761090e8b8b6108d38560026158fb565b6108de9060266158b4565b8181106108ed576108ed615856565b905060200201358c8c85600261090391906158fb565b6108559060276158b4565b8161091881615938565b9250506108bb565b61092b83601f614ff7565b60a0850152600091505b6003821161099a576109888b8b61094d8560026158fb565b61095890603a6158b4565b81811061096757610967615856565b905060200201358c8c85600261097d91906158fb565b61085590603b6158b4565b8161099281615938565b925050610935565b6109a583600d614ff7565b60c0850152600091505b60468211610a1857610a068b8b6109c78560016158fb565b6109d29060426158b4565b8181106109e1576109e1615856565b90506020020135848460026109f691906158fb565b610a019060016158b4565b614f3b565b81610a1081615938565b9250506109af565b610a2383608f614ff7565b60e0850152600091505b60038211610a9257610a808b8b610a458560026158fb565b610a509060896158b4565b818110610a5f57610a5f615856565b905060200201358c8c856002610a7591906158fb565b61085590608a6158b4565b81610a8a81615938565b925050610a2d565b610a9d83600d614ff7565b61010085015260c0840151600080516020615a46833981519152907f1dba8b5bdd64ef6ce29a9039aca3c0e524395c43b9227b96c75090cc6cc7ec97900961012085015260c0840151600080516020615a46833981519152907f24a1fcd63e9f03b27281db85fe631ec8e5c466f8178a4ee94d4942b7ccd90e1c900961014085015260c0840151600080516020615a46833981519152907f20bab6e5f766b4edf82399e9c5ff0e40d4b6875321a3d8020e18521d8f5c7241900961016085015260c0840151610b70906304000000615059565b610180850152600080516020615a46833981519152610b90600182615970565b610180860151086101a08501819052600080516020615a46833981519152907f30644e66c81e03716be83b486d6feabcc7ddd0fe6cbf5e72d585d142f7829b05096101c0850152600080516020615a46833981519152610bf1600182615970565b60c0860151089150610c0b84600e5b6020020151836150c0565b6101c08501526101a0840151600080516020615a46833981519152907f07baaa5b7af9cf52cd226bc56865f0f99ef8fcd4219060f09f43e9a148b5ab68096101e0850152600080516020615a46833981519152610c887f20bab6e5f766b4edf82399e9c5ff0e40d4b6875321a3d8020e18521d8f5c724182615970565b60c0860151089150610c9b84600f610c00565b6101e08501526101a0840151600080516020615a46833981519152907f1c699f652457365bf2fc4fa2c5c63d6c4349b03cb46d633d7a2655c5da4b900a09610200850152600080516020615a46833981519152610d187f19277f31ecb5bfe8604677099c09556812b0b5c50cceb2b584098183a5a6c5c882615970565b60c0860151089150610d2b846010610c00565b6102008501526101a0840151600080516020615a46833981519152907f205cdbaf03903a5c23e60eef0df90673bc65a25762694c501e3281153b4e588a09610220850152600080516020615a46833981519152610da87f082a7bd4c0a7e4352229d332c27a160da18f0d7c651f3047df41b80345532f6e82615970565b60c0860151089150610dbb846011610c00565b6102208501526101a0840151600080516020615a46833981519152907f27db73b1a831278e143aab90091db38afdea3294c4ba05d1c697a392eb09cc7909610240850152600080516020615a46833981519152610e387f26501ebfe559ea5826f023d3e76e4b66f170cd940408eb5590a4075c80b498d682615970565b60c0860151089150610e4b846012610c00565b6102408501526101a0840151600080516020615a46833981519152907f0204822d629ab653697f028f5fa17d23ac2ba08c60c7112d98ebd28f325f0af609610260850152600080516020615a46833981519152610ec87f0d5eb4c216db2c3262de3f6a2ef71a9be95ff21a7a1a50ed069d6131e7d54e5f82615970565b60c0860151089150610edb846013610c00565b6102608501526101a0840151600080516020615a46833981519152907f2622622a60c0d9327ccf066a0f1fce13c48601b976affd1f41c2a72a9f77da6409610280850152600080516020615a46833981519152610f587f24a1fcd63e9f03b27281db85fe631ec8e5c466f8178a4ee94d4942b7ccd90e1c82615970565b60c0860151089150610f6b846014610c00565b6102808501526102008401516101e0850151600080516020615a468339815191529190089150600080516020615a46833981519152846011602002015183089150600080516020615a46833981519152846012602002015183089150600080516020615a46833981519152846013602002015183086101e085015261103c8b8b604a818110610ffc57610ffc615856565b905060200201358c8c604881811061101657611016615856565b905060200201358d8d604981811061103057611030615856565b905060200201356150f0565b915061107b8b8b604b81811061105457611054615856565b905060200201358c8c604381811061106e5761106e615856565b90506020020135846150f0565b91506110ad8b8b604c81811061109357611093615856565b905060200201358c8c604481811061106e5761106e615856565b91506110df8b8b604d8181106110c5576110c5615856565b905060200201358c8c604581811061106e5761106e615856565b91506111118b8b604e8181106110f7576110f7615856565b905060200201358c8c604681811061106e5761106e615856565b91506111438b8b604f81811061112957611129615856565b905060200201358c8c604781811061106e5761106e615856565b610200850152600080516020615a468339815191528b8b604481811061116b5761116b615856565b905060200201358c8c604381811061118557611185615856565b905060200201350991506111ca8b8b60508181106111a5576111a5615856565b9050602002013583866010605481106111c0576111c0615856565b60200201516150f0565b610200850152600080516020615a468339815191528b8b60468181106111f2576111f2615856565b905060200201358c8c604581811061120c5761120c615856565b9050602002013509915061122c8b8b60518181106111a5576111a5615856565b610200850152600080516020615a468339815191528b8b606181811061125457611254615856565b90506020020135600080516020615a468339815191526112749190615970565b6001089150600080516020615a468339815191528285600e602002015109610220850152600080516020615a468339815191528b8b60648181106112ba576112ba615856565b905060200201358c8c60648181106112d4576112d4615856565b90506020020135099150600080516020615a468339815191528b8b606481811061130057611300615856565b90506020020135600080516020615a468339815191526113209190615970565b83089150600080516020615a4683398151915282856014602002015109610240850152600080516020615a468339815191528b8b606381811061136557611365615856565b90506020020135600080516020615a468339815191526113859190615970565b8c8c606481811061139857611398615856565b90506020020135089150600080516020615a4683398151915284600e6020020151830961026085015260c08401516060850151600080516020615a468339815191529190096102a08501526101e0840151610280850151600080516020615a468339815191529190089150600080516020615a4683398151915261142a83600080516020615a46833981519152615970565b6001086101e08501526080840151600080516020615a46833981519152908c8c604381811061145b5761145b615856565b90506020020135086102c08501526114a68b8b605b81811061147f5761147f615856565b905060200201358560036054811061149957611499615856565b60200201518660166111c0565b9150600080516020615a468339815191528b8b60628181106114ca576114ca615856565b9050602002013583096102e08501526102a08401516102c0850151600080516020615a468339815191529190089150600080516020615a468339815191528b8b606181811061151b5761151b615856565b9050602002013583096102c08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526080840151600080516020615a46833981519152908c8c604481811061159057611590615856565b90506020020135086103208501526115db8b8b605c8181106115b4576115b4615856565b90506020020135856003605481106115ce576115ce615856565b60200201518660196111c0565b9150600080516020615a46833981519152846017602002015183096102e0850152610300840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846016602002015183096102c0850152610300840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526080840151600080516020615a46833981519152908c8c60458181106116a1576116a1615856565b90506020020135086103208501526116c58b8b605d8181106115b4576115b4615856565b9150600080516020615a46833981519152846017602002015183096102e0850152610300840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846016602002015183096102c0850152610300840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526102c0840151600080516020615a46833981519152906117839082615970565b6102e0860151089150600080516020615a4683398151915284600f602002015183096102c08501526102a0840151600080516020615a46833981519152907f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5290096102a08501526080840151600080516020615a46833981519152908c8c604681811061181257611812615856565b90506020020135086102e085015261185d8b8b605e81811061183657611836615856565b905060200201358560036054811061185057611850615856565b60200201518660176111c0565b9150600080516020615a468339815191528b8b606581811061188157611881615856565b9050602002013583096103008501526102a08401516102e0850151600080516020615a468339815191529190089150600080516020615a468339815191528b8b60648181106118d2576118d2615856565b9050602002013583096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526080840151600080516020615a46833981519152908c8c604781811061194757611947615856565b905060200201350861032085015261196b8b8b605f8181106115b4576115b4615856565b9150600080516020615a46833981519152846018602002015183096103008501526102a0840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846017602002015183096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526080840151600080516020615a46833981519152908c8c6042818110611a3157611a31615856565b9050602002013508610320850152611a558b8b60608181106115b4576115b4615856565b9150600080516020615a46833981519152846018602002015183096103008501526102a0840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846017602002015183096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526102e0840151600080516020615a4683398151915290611b139082615970565b610300860151089150600080516020615a4683398151915284600f602002015183096102a08501526060840151600080516020615a46833981519152908c8c6068818110611b6357611b63615856565b90506020020135089150600080516020615a46833981519152828c8c6067818110611b9057611b90615856565b90506020020135096102e08501526080840151600080516020615a46833981519152908c8c606a818110611bc657611bc6615856565b90506020020135089150600080516020615a46833981519152828560176020020151096102e0850152600080516020615a468339815191528b8b6052818110611c1157611c11615856565b905060200201358c8c6043818110611c2b57611c2b615856565b90506020020135096103008501526040840151600080516020615a468339815191529060000960408501819052610300850151600080516020615a468339815191529108610300850152600080516020615a468339815191528b8b6053818110611c9757611c97615856565b9050602002013585600260548110611cb157611cb1615856565b602002015108610320850152600080516020615a468339815191528b8b606a818110611cdf57611cdf615856565b90506020020135600080516020615a46833981519152611cff9190615970565b8c8c6068818110611d1257611d12615856565b9050602002013508610340850152600080516020615a468339815191528b8b6066818110611d4257611d42615856565b90506020020135600080516020615a46833981519152611d629190615970565b6001089150600080516020615a468339815191528285600e602002015109610360850152600080516020615a468339815191528b8b6066818110611da857611da8615856565b905060200201358c8c6066818110611dc257611dc2615856565b90506020020135099150600080516020615a468339815191528b8b6066818110611dee57611dee615856565b90506020020135600080516020615a46833981519152611e0e9190615970565b83089150600080516020615a46833981519152828560146020020151096103808501526060840151610300850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c6066818110611e7357611e73615856565b90506020020135096103008501526080840151610320850151600080516020615a468339815191529190086103208501819052610300850151600080516020615a468339815191529190099150600080516020615a46833981519152611ee783600080516020615a46833981519152615970565b6102e0860151089150600080516020615a4683398151915284600f602002015183096102e08501526103408401516101c0850151600080516020615a46833981519152919009610300850152600080516020615a468339815191528b8b6069818110611f5557611f55615856565b90506020020135600080516020615a46833981519152611f759190615970565b8c8c6068818110611f8857611f88615856565b90506020020135089150600080516020615a468339815191528285601a6020020151099150600080516020615a4683398151915284600f602002015183096103408501526060840151600080516020615a46833981519152908c8c606d818110611ff457611ff4615856565b90506020020135089150600080516020615a46833981519152828c8c606c81811061202157612021615856565b90506020020135096103a08501526080840151600080516020615a46833981519152908c8c606f81811061205757612057615856565b90506020020135089150600080516020615a468339815191528285601d6020020151096103a08501526120ca8b8b605281811061209657612096615856565b905060200201358c8c60448181106120b0576120b0615856565b90506020020135866002605481106111c0576111c0615856565b6103c0850152600080516020615a468339815191528b8b606f8181106120f2576120f2615856565b90506020020135600080516020615a468339815191526121129190615970565b8c8c606d81811061212557612125615856565b90506020020135086103e0850152600080516020615a468339815191528b8b606b81811061215557612155615856565b90506020020135600080516020615a468339815191526121759190615970565b6001089150600080516020615a468339815191528285600e602002015109610400850152600080516020615a468339815191528b8b606b8181106121bb576121bb615856565b905060200201358c8c606b8181106121d5576121d5615856565b90506020020135099150600080516020615a468339815191528b8b606b81811061220157612201615856565b90506020020135600080516020615a468339815191526122219190615970565b83089150600080516020615a468339815191528285601460200201510961042085015260608401516103c0850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c606b81811061228657612286615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a468339815191526122d283600080516020615a46833981519152615970565b6103a0860151089150600080516020615a4683398151915284600f602002015183096103a08501526103e08401516101c0850151600080516020615a468339815191529190096103c0850152600080516020615a468339815191528b8b606e81811061234057612340615856565b90506020020135600080516020615a468339815191526123609190615970565b8c8c606d81811061237357612373615856565b90506020020135089150600080516020615a468339815191528285601f6020020151099150600080516020615a4683398151915284600f602002015183096103e08501526060840151600080516020615a46833981519152908c8c60728181106123df576123df615856565b90506020020135089150600080516020615a46833981519152828c8c607181811061240c5761240c615856565b90506020020135096104408501526080840151600080516020615a46833981519152908c8c607481811061244257612442615856565b90506020020135089150600080516020615a468339815191528285602260200201510961044085015261249b8b8b605281811061248157612481615856565b905060200201358c8c60458181106120b0576120b0615856565b610460850152600080516020615a468339815191528b8b60748181106124c3576124c3615856565b90506020020135600080516020615a468339815191526124e39190615970565b8c8c60728181106124f6576124f6615856565b9050602002013508610480850152600080516020615a468339815191528b8b607081811061252657612526615856565b90506020020135600080516020615a468339815191526125469190615970565b6001089150600080516020615a468339815191528285600e6020020151096104a0850152600080516020615a468339815191528b8b607081811061258c5761258c615856565b905060200201358c8c60708181106125a6576125a6615856565b90506020020135099150600080516020615a468339815191528b8b60708181106125d2576125d2615856565b90506020020135600080516020615a468339815191526125f29190615970565b83089150600080516020615a46833981519152828560146020020151096104c08501526060840151610460850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607081811061265757612657615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a468339815191526126a383600080516020615a46833981519152615970565b610440860151089150600080516020615a4683398151915284600f602002015183096104408501526104808401516101c0850151600080516020615a46833981519152919009610460850152600080516020615a468339815191528b8b607381811061271157612711615856565b90506020020135600080516020615a468339815191526127319190615970565b8c8c607281811061274457612744615856565b90506020020135089150600080516020615a46833981519152828560246020020151099150600080516020615a4683398151915284600f602002015183096104808501526060840151600080516020615a46833981519152908c8c60778181106127b0576127b0615856565b90506020020135089150600080516020615a46833981519152828c8c60768181106127dd576127dd615856565b90506020020135096104e08501526080840151600080516020615a46833981519152908c8c607981811061281357612813615856565b90506020020135089150600080516020615a46833981519152828560276020020151096104e085015261286c8b8b605281811061285257612852615856565b905060200201358c8c60468181106120b0576120b0615856565b610500850152600080516020615a468339815191528b8b607981811061289457612894615856565b90506020020135600080516020615a468339815191526128b49190615970565b8c8c60778181106128c7576128c7615856565b9050602002013508610520850152600080516020615a468339815191528b8b60758181106128f7576128f7615856565b90506020020135600080516020615a468339815191526129179190615970565b6001089150600080516020615a468339815191528285600e602002015109610540850152600080516020615a468339815191528b8b607581811061295d5761295d615856565b905060200201358c8c607581811061297757612977615856565b90506020020135099150600080516020615a468339815191528b8b60758181106129a3576129a3615856565b90506020020135600080516020615a468339815191526129c39190615970565b83089150600080516020615a46833981519152828560146020020151096105608501526060840151610500850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c6075818110612a2857612a28615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a46833981519152612a7483600080516020615a46833981519152615970565b6104e0860151089150600080516020615a4683398151915284600f602002015183096103208501526105208401516101c0850151600080516020615a468339815191529190096104e0850152600080516020615a468339815191528b8b6078818110612ae257612ae2615856565b90506020020135600080516020615a46833981519152612b029190615970565b8c8c6077818110612b1557612b15615856565b90506020020135089150600080516020615a46833981519152828560296020020151099150600080516020615a4683398151915284600f602002015183096105008501526060840151600080516020615a46833981519152908c8c607c818110612b8157612b81615856565b90506020020135089150600080516020615a46833981519152828c8c607b818110612bae57612bae615856565b90506020020135096105208501526080840151600080516020615a46833981519152908c8c607e818110612be457612be4615856565b90506020020135089150600080516020615a4683398151915282856029602002015109610520850152612c3d8b8b6054818110612c2357612c23615856565b905060200201358c8c60438181106120b0576120b0615856565b610580850152600080516020615a468339815191528b8b6055818110612c6557612c65615856565b9050602002013585600260548110612c7f57612c7f615856565b6020020151086105a0850152600080516020615a468339815191528b8b607e818110612cad57612cad615856565b90506020020135600080516020615a46833981519152612ccd9190615970565b8c8c607c818110612ce057612ce0615856565b90506020020135086105c0850152600080516020615a468339815191528b8b607a818110612d1057612d10615856565b90506020020135600080516020615a46833981519152612d309190615970565b6001089150600080516020615a468339815191528285600e6020020151096105e0850152600080516020615a468339815191528b8b607a818110612d7657612d76615856565b905060200201358c8c607a818110612d9057612d90615856565b90506020020135099150600080516020615a468339815191528b8b607a818110612dbc57612dbc615856565b90506020020135600080516020615a46833981519152612ddc9190615970565b83089150600080516020615a46833981519152828560146020020151096106008501526060840151610580850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607a818110612e4157612e41615856565b905060200201350961058085015260808401516105a0850151600080516020615a468339815191529190089150600080516020615a468339815191528285602c6020020151099150600080516020615a46833981519152612eb083600080516020615a46833981519152615970565b610520860151089150600080516020615a4683398151915284600f602002015183096105208501526105c08401516101c0850151600080516020615a46833981519152919009610580850152600080516020615a468339815191528b8b607d818110612f1e57612f1e615856565b90506020020135600080516020615a46833981519152612f3e9190615970565b8c8c607c818110612f5157612f51615856565b90506020020135089150600080516020615a468339815191528285602e6020020151099150600080516020615a4683398151915284600f602002015183096105a08501526060840151600080516020615a46833981519152908c8c6081818110612fbd57612fbd615856565b90506020020135089150600080516020615a46833981519152828c8c6080818110612fea57612fea615856565b90506020020135096105c08501526080840151600080516020615a46833981519152908c8c608381811061302057613020615856565b90506020020135089150600080516020615a468339815191528285602e6020020151096105c085015261305f8b8b6056818110612c2357612c23615856565b610620850152600080516020615a468339815191528b8b605781811061308757613087615856565b90506020020135856002605481106130a1576130a1615856565b602002015108610640850152600080516020615a468339815191528b8b60838181106130cf576130cf615856565b90506020020135600080516020615a468339815191526130ef9190615970565b8c8c608181811061310257613102615856565b9050602002013508610660850152600080516020615a468339815191528b8b607f81811061313257613132615856565b90506020020135600080516020615a468339815191526131529190615970565b6001089150600080516020615a468339815191528285600e602002015109610680850152600080516020615a468339815191528b8b607f81811061319857613198615856565b905060200201358c8c607f8181106131b2576131b2615856565b90506020020135099150600080516020615a468339815191528b8b607f8181106131de576131de615856565b90506020020135600080516020615a468339815191526131fe9190615970565b83089150600080516020615a46833981519152828560146020020151096106a08501526060840151610620850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607f81811061326357613263615856565b90506020020135096106208501526080840151610640850151600080516020615a468339815191529190089150600080516020615a46833981519152828560316020020151099150600080516020615a468339815191526132d283600080516020615a46833981519152615970565b6105c0860151089150600080516020615a4683398151915284600f602002015183096105c08501526106608401516101c0850151600080516020615a46833981519152919009610620850152600080516020615a468339815191528b8b608281811061334057613340615856565b90506020020135600080516020615a468339815191526133609190615970565b8c8c608181811061337357613373615856565b90506020020135089150600080516020615a46833981519152828560336020020151099150600080516020615a4683398151915284600f602002015183096106408501526060840151600080516020615a46833981519152908c8c60868181106133df576133df615856565b90506020020135089150600080516020615a46833981519152828c8c608581811061340c5761340c615856565b90506020020135096106608501526080840151600080516020615a46833981519152908c8c608881811061344257613442615856565b90506020020135089150600080516020615a46833981519152828560336020020151096106608501526134818b8b6058818110612c2357612c23615856565b6106c0850152600080516020615a468339815191528b8b60598181106134a9576134a9615856565b90506020020135856002605481106134c3576134c3615856565b6020020151086040850152600080516020615a468339815191528b8b60888181106134f0576134f0615856565b90506020020135600080516020615a468339815191526135109190615970565b8c8c608681811061352357613523615856565b90506020020135086106e0850152600080516020615a468339815191528b8b608481811061355357613553615856565b90506020020135600080516020615a468339815191526135739190615970565b6001089150600080516020615a468339815191528285600e602002015109610700850152600080516020615a468339815191528b8b60848181106135b9576135b9615856565b905060200201358c8c60848181106135d3576135d3615856565b90506020020135099150600080516020615a468339815191528b8b60848181106135ff576135ff615856565b90506020020135600080516020615a4683398151915261361f9190615970565b83089150600080516020615a468339815191528285601460200201510961028085015260608401516106c0850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c608481811061368457613684615856565b9050602002013509606085015260808401516040850151600080516020615a468339815191529190089150600080516020615a46833981519152828560036020020151099150600080516020615a468339815191526136f183600080516020615a46833981519152615970565b610660860151089150600080516020615a4683398151915284600f6020020151830960408501526106e08401516101c0850151600080516020615a468339815191529190096060850152600080516020615a468339815191528b8b608781811061375d5761375d615856565b90506020020135600080516020615a4683398151915261377d9190615970565b8c8c608681811061379057613790615856565b90506020020135089150600080516020615a46833981519152828560376020020151099150600080516020615a4683398151915284600f60200201518309608085015260a08401516137e69060008660106111c0565b915061381b8480600560200201517f35342d2c29302f2827192b2a24232226251f1e1d21201a18171c1b15161312118561511d565b915061383984806005602002015168ff040302143832312e8561511d565b915061384c8285600d60200201516150c0565b6040850152610100840151600080516020615a4683398151915290800960608501819052610100850151600080516020615a46833981519152910960808501526138d68b8b608f8181106138a2576138a2615856565b905060200201358c8c60908181106138bc576138bc615856565b905060200201358660046054811061055c5761055c615856565b90925090506138ef848c8c65ffff088b038d86866151a0565b909250905061393282828d8d608981811061390c5761390c615856565b905060200201358e8e608a81811061392657613926615856565b905060200201356152a8565b6101e08601526101c08501526101608401516080850151600080516020615a4683398151915291900960a085015260e08401516080850151600080516020615a46833981519152919009610160850181905260e0850151600080516020615a4683398151915291096101a0850181905260e0850151600080516020615a468339815191529109610200850181905260e0850151600080516020615a468339815191529109610220850181905260e0850151600080516020615a468339815191529109610240850181905260e0850151600080516020615a468339815191529109610260850152600080516020615a468339815191528b8b6087818110613a3a57613a3a615856565b9050602002013585601360548110613a5457613a54615856565b6020020151099150613a75848c8c6bffff0b6e0d731078117d128286615316565b9150613ab28b8b6069818110613a8d57613a8d615856565b9050602002013585600460548110613aa757613aa7615856565b6020020151846150f0565b6102808501526101408401516060850151600080516020615a46833981519152919009610140850152613b188b8b6063818110613af157613af1615856565b9050602002013585600360548110613b0b57613b0b615856565b60200201518660146111c0565b610280850152610120840151610100850151600080516020615a4683398151915291900961012085015260e0840151610100850151600080516020615a468339815191529190096102a0850152600091505b6008821015613c1957600080516020615a4683398151915284613b8e8460006158fb565b613b999060076158b4565b60548110613ba957613ba9615856565b602002015185613bba8560016158fb565b613bc59060156158b4565b60548110613bd557613bd5615856565b60200201510984613be78460016158fb565b613bf29060166158b4565b60548110613c0257613c02615856565b602002015281613c1181615938565b925050613b6a565b600080516020615a468339815191528b8b6085818110613c3b57613c3b615856565b9050602002013585601d60548110613c5557613c55615856565b6020020151099150613c7e848c8c73ffff0848156216651767186c19711a761b7b1c8086615316565b9150600080516020615a46833981519152828560146020020151086102808501526102a08401516060850151600080516020615a46833981519152919008606085015260e0840151600080516020615a468339815191529080096102a0850181905260e0850151600080516020615a4683398151915291096103c0850152600091505b6032821015613db057600080516020615a4683398151915284613d258460006158fb565b613d309060076158b4565b60548110613d4057613d40615856565b602002015185613d518560016158fb565b613d5c90601e6158b4565b60548110613d6c57613d6c615856565b60200201510984613d7e8460016158fb565b613d8990601f6158b4565b60548110613d9957613d99615856565b602002015281613da881615938565b925050613d01565b600080516020615a468339815191528b8b605a818110613dd257613dd2615856565b9050602002013585605060548110613dec57613dec615856565b602002015109610a208501526101808401516109e0850151600080516020615a46833981519152919009610a408501819052610180850151600080516020615a468339815191529109610a608501819052610180850151600080516020615a4683398151915291096101808501526109e08401516040850151613e7291908660516111c0565b9150613ea1848c8c7f3f50405141524253435444554556465747584859495b4a5c4b5d4c5e4d5f4e6086615316565b9150613ed0848c8c7f2f7a307c317e327f338134833584368637883849394a3a4b3b4c3c4d3d4e3e4f86615316565b9150613eff848c8c7f1f4620472161226423662468256a266b276d286f29702a722b742c752d772e7986615316565b9150613f16848c8c67ffff074315441e4586615316565b9150600080516020615a468339815191528b8b6042818110613f3a57613f3a615856565b9050602002013583089150600080516020615a468339815191528285601460200201510860408501526106c0840151610260850151600080516020615a468339815191529190086102608501526106a08401516103a0850151600080516020615a46833981519152919008610280850152610660840151610240850151600080516020615a46833981519152919008610240850152610640840151610380850151600080516020615a46833981519152919008610380850152610600840151610220850151600080516020615a468339815191529190086102208501526105e0840151610360850151600080516020615a468339815191529190086103608501526105a0840151610200850151600080516020615a46833981519152919008610200850152610580840151610340850151600080516020615a468339815191529190086103408501526105408401516101a0850151600080516020615a468339815191529190086101a0850152610520840151610320850151600080516020615a468339815191529190086103208501526104e0840151610160850151600080516020615a468339815191529190086101608501526104c0840151610300850151600080516020615a468339815191529190086103008501526104808401516080850151600080516020615a4683398151915291900860808501526104608401516102e0850151600080516020615a468339815191529190086102e08501526104408401516102c0850151600080516020615a468339815191529190086102c08501526104208401516060850151600080516020615a468339815191529190086060850152610400840151610100850151600080516020615a4683398151915291900861010085015261420d8b8b608f8181106141d9576141d9615856565b905060200201358c8c60908181106141f3576141f3615856565b905060200201358660056054811061055c5761055c615856565b9092509050614240848c8c7f182c192e1a301b321c341436098b03260a8d040a0b0e0d121016111a121e132286866151a0565b9092509050614267848c8c73ffff4f3a523c533e0c405038068908081628172a86866151a0565b90925090506142b97f22cbc20a434be99c890d0fbf8c441feaf0dfb2178561a82783b0e74fad5d91eb7f186f16fd4e05464ed8a90fea4fac4fa3a80944bcaf19d9f536f8a67e301e75f386604e6105b4565b909250905061430b7f034336e9ed495c46a1c3ca745bad166bbb675c8ee31092792d0b3d435d3da0a77f120d0016a186defe5e27918247f5fb2c6f578d8ed259080a6a91ed9e503bc79c86604d6105b4565b909250905061435d7f2c4cbb935d4c9990fcaae8d9b0a244ee3f5327a7ca816aa58a58a40c8e00457e7f130d42ccd64a2e29acce747d0e976a363ab4b22f78b8a11b13ca81cf3549943986604c6105b4565b90925090506143af7f05ba13020527a88585e1f01f1d23dd68ee0d64cad4dcb82fce758883bafc1ef27f01696dcfadbe9736c07870ef063e349b30fddbd9ce85ccc7f7b19d1b18ddaf4b86604b6105b4565b90925090506144017f1adae7001a26c1f2f5640d6c60724b413dc22ae2ed96aaaccc659021a3ae1a307f2e6ff83e2f71937c1be92fe36ad1280cb68bcdf07699ee52e4d5540fef5a4bf386604a6105b4565b90925090506144537f1b9a33b5b4544142fd3f804b5f9457c34a4ff7da0852efc4b8d4241954ef859b7f2dc9f73c2504de7a2996b6c20aac9e53a6d6bee0e32ccdd44562c3498bd57a4e8660496105b4565b90925090506144a57f2bf75d9dd944249cd720ee71585980774cb83905b860feb5af3da42ca043b1157f07b4ff44a8e4250bf3ce16c06e8430b585a7a1e85243febe565a7929db37cc9f8660486105b4565b90925090506144f77f2444b554a3ef28ed5743cf5883acf229c2d774bf5076626197ca3093666a7fe57f2f54a38842d7fb7870618b48df360608f1a801e01dfa34b49e5964dc43f989bf8660476105b4565b90925090506145497f25d344a083be7e69cb907b8705b3bab3417d4a23f06d43ca7b287028a88ec5837f2c03f591ec6858cdff27cadaac1a67a1dc9ab7877f898686efe7033e7fd02a168660466105b4565b909250905061459b7f2fd1b96dd6e1ac88d9b5d438bace1ce6e7fe07412454779502af65284fef7e227f2fe224e0009d4ab99131c7c1cc045d0d0d7a50d6757fc12e4cfd720abc066d058660456105b4565b90925090506145ed7f2bf75d9dd944249cd720ee71585980774cb83905b860feb5af3da42ca043b1157f07b4ff44a8e4250bf3ce16c06e8430b585a7a1e85243febe565a7929db37cc9f8660446105b4565b909250905061463f7f1969a5f2f2d86eecccfdee75c39368f79759667bf445eed2f9d2d72c859011bf7f055449f64bace3dadff58d914f1647a98729c5476b53b66f1ff472b9537d183c8660436105b4565b90925090506146917f2fd08ae291ca0c95ada3f562b9f9be896737fd57493c4cefa087979abda4d2d67f04a6506069e2d39e944abcc54e70e881ccdd429ed4c1017fbe1099efeb70465f8660426105b4565b90925090506146e37f0ce55ceb7e62f5d45b387d78d357bc9a8423737e1c47b079a6cd4b64748aca117f2f92a53112cbb38374218eafba1349b77d3647f0423a3b48c8cc622f53c9c3e48660416105b4565b90925090506147357f229f748a69bee4ae7fdc62af12994ec2bd7f47b607216d282cc1f96054dac0787f015e9c5665a513c49920a46fbf7e607586f5b394f7487e045d45e99b7104f4778660406105b4565b90925090506147877f1fbdd7e6e58f01eb5a63b5922c2c6babed9c93d98d28363d97f78cd474cd4f1a7f23a726f04321315f0a8d73d3b596905c3e72eb5a899bd281f18abf3d674d1cfe86603f6105b4565b90925090506147d97f250ebdee646f64bb4af9f5f55fd76ae257408de7f0786f4817032e2581aeb8477f0ec875e3938bc9be9eab457a7d1655c96e5573e0d5c047692c45c3e4eaaa5a4386603e6105b4565b909250905061482b7f2617cd43f1512cc7ec9c2b728bbf4cf18de4b4f30912c811a6bd6d7a90eb35807f0c6dd39b0cb2bde148a8aa1dd84b71f6e47365a1cd726b8428c166e2d6f9e2d886603d6105b4565b909250905061487d7f24f6a4c5ff09d31cca15502ee379d50685bfe70be297201f44d4d967deb8be147f13e3df7f2f1cd670e9f473583298014f5286eb1f2402750ece5f75825484678286603c6105b4565b90925090506148cf7f0102612ad204a0291df816e0cbd8bfb60d03a26493db681420f83add5da28c3e7f0a229f00ff3a8cfce146e4c3ab5447e9d300c83f88e2072c860e05da3b9d60cc86603b6105b4565b90925090506149217f138c357f0a9847d66feca030756c854971c8783fb6a2c2547db480cda037781c7f2c03ebe8c2606106b122920dfe0a42293421ddff6bd205db46eacc956ff2a8a186603a6105b4565b90925090506149737f04a6e8bdc030c8594e55d7fb89399e76dba4d5e9bf60fb6e1fbdb2c0ffed69267f1094abfe954af52dbe746c8cf9aaabad56aa7e4da6a9294a1736fe685fee312f8660396105b4565b90925090506149c57f175a2d1aaf07ee184a955e35f3deac123ef1088b68c38bace37056dcfc9d304d7f150856c3d1750c2578b823cb3c7d74ed3e94c1cfece7e1bfdaaff36eea788fb98660386105b4565b90925090506149f0848c8c77ffff070015021e041f06250c28102b142e18311c3420372486866151a0565b85516020870151929450909250614a0a91849184916152a8565b60208601528452614a1f60016002868161055c565b85516020870151929450909250614a379184846153b8565b602086018190528186526101c08601516101e090960151959d959c50909a509850929650505050505050565b614a6b61562a565b80517f186282957db913abd99f91db59fe69922e95040603ef44c0bd7aa3adeef8f5ac905280517f17944351223333f260ddc3b4af45191b856689eda9eab5cbcddbbe570ce860d2602091820152810180517f298adc7396bd3865cbf6d6df91bae406694e6d2215baa893bdeadb63052895f49052517f297772d34bc9aa8ae56162486363ffe417b02dc7e8c207fc2cc20203e67a02ad9060015b602002015290565b614b1661562a565b80517f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2905280517f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602091820152810180517f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec9052517f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d906001614b06565b60008083516006614bc691906158fb565b905060008167ffffffffffffffff811115614be357614be36158cc565b604051908082528060200260200182016040528015614c0c578160200160208202803683370190505b509050614c1761568d565b60008551875114614c2757600080fd5b60005b8751811015614e6057878181518110614c4557614c45615856565b60200260200101516000015184826006614c5f91906158fb565b614c6a9060006158b4565b81518110614c7a57614c7a615856565b602002602001018181525050878181518110614c9857614c98615856565b60200260200101516020015184826006614cb291906158fb565b614cbd9060016158b4565b81518110614ccd57614ccd615856565b602002602001018181525050868181518110614ceb57614ceb615856565b6020908102919091010151515184614d048360066158fb565b614d0f9060026158b4565b81518110614d1f57614d1f615856565b602002602001018181525050868181518110614d3d57614d3d615856565b60209081029190910181015151015184614d588360066158fb565b614d639060036158b4565b81518110614d7357614d73615856565b602002602001018181525050868181518110614d9157614d91615856565b602002602001015160200151600060028110614daf57614daf615856565b602002015184614dc08360066158fb565b614dcb9060046158b4565b81518110614ddb57614ddb615856565b602002602001018181525050868181518110614df957614df9615856565b602002602001015160200151600160028110614e1757614e17615856565b602002015184614e288360066158fb565b614e339060056158b4565b81518110614e4357614e43615856565b602090810291909101015280614e5881615938565b915050614c2a565b50602082602086026020860160085afa905080614e7c57600080fd5b5051151595945050505050565b600080614e946156ab565b6000614eb3604051806040016040528060008152602001600081525090565b8783526020830187905260408084018790528160608560075afa915081614ed957600080fd5b8051602090910151909890975095505050505050565b600080614efa6156c9565b87815260208101879052604081018690526060810185905260808101849052614f22816153fd565b6060810151608090910151909890975095505050505050565b60028282614f4881615938565b935060908110614f5a57614f5a615856565b6020020152828282614f6b81615938565b935060908110614f7d57614f7d615856565b6020020152505050565b60018282614f9481615938565b935060908110614fa657614fa6615856565b6020020152838282614fb781615938565b935060908110614fc957614fc9615856565b6020020152828282614fda81615938565b935060908110614fec57614fec615856565b602002015250505050565b600080838363ffffffff166090811061501257615012615856565b60200201818152505060006150448484602061502e9190615987565b6150399060016159b3565b63ffffffff16615438565b5190506150508161546e565b93525090919050565b600061506361560c565b61506b61568d565b6020808352828101819052604083018190526060830186905260808301859052600080516020615a4683398151915260a08401526000908260c08560055afa9050806150b657600080fd5b5051949350505050565b6000816000036150cf57600080fd5b600080516020615a468339815191526150e7836155e2565b84099392505050565b6000600080516020615a4683398151915282600080516020615a4683398151915285870908949350505050565b6000805b60208110156151965760ff80851690811461517d5760089490941c93600080516020615a4683398151915287826054811061515e5761515e615856565b6020020151600080516020615a46833981519152868909089350615183565b50615196565b5061518f6001826158b4565b9050615121565b5090949350505050565b6000806151ab6156c9565b606081018590526080810184905260005b602081101561528d5760ff80881690811461527457601088901c9760081c60ff168a8a838181106151ef576151ef615856565b905060200201358460006005811061520957615209615856565b60200201528a8a61521b8460016158b4565b81811061522a5761522a615856565b905060200201358460016005811061524457615244615856565b60200201528b816054811061525b5761525b615856565b6020020151604085015261526e846153fd565b5061527a565b5061528d565b506152866002826158b4565b90506151bc565b50606081015160809091015190999098509650505050505050565b60008060006152ca604051806040016040528060008152602001600081525090565b6152d26156e7565b888152602081018890526040808201889052606082018790528260808360065afa9250826152ff57600080fd5b508051602090910151909890975095505050505050565b6000805b60208110156153ad5760ff80851690811461539457601085901c9460081c60ff16600080516020615a4683398151915285600080516020615a468339815191528b846054811061536c5761536c615856565b60200201518b8b8781811061538357615383615856565b90506020020135090894505061539a565b506153ad565b506153a66002826158b4565b905061531a565b509095945050505050565b6000806153f08686866153eb877f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47615970565b6152a8565b9150915094509492505050565b600060406020830160608460075afa90508061541857600080fd5b60406060830160806020850160065afa90508061543457600080fd5b5050565b61544061568d565b6000602082848660026107d05a03fa9050808061545957fe5b5080615467576154676159db565b5092915050565b6000816155c18160008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b6040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c179050608081901b608082901c179050919050565b90506155db600080516020615a4683398151915282615a0a565b9392505050565b6000615606826156016002600080516020615a46833981519152615970565b615059565b92915050565b6040518060c001604052806006906020820280368337509192915050565b604051806040016040528061563d615705565b815260200161564a615705565b905290565b60405180610a8001604052806054906020820280368337509192915050565b6040518061120001604052806090906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60008083601f84011261573557600080fd5b50813567ffffffffffffffff81111561574d57600080fd5b6020830191508360208260051b850101111561576857600080fd5b9250929050565b60008060008060006060868803121561578757600080fd5b853567ffffffffffffffff8082111561579f57600080fd5b6157ab89838a01615723565b909750955060208801359150808211156157c457600080fd5b506157d188828901615723565b96999598509660400135949350505050565b600060208083528351808285015260005b81811015615810578581018301518582016040015282016157f4565b81811115615822576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156158c7576158c7615885565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561593357615933615885565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361596957615969615885565b5060010190565b60008282101561598257615982615885565b500390565b600063ffffffff808316818516818304811182151516156159aa576159aa615885565b02949350505050565b600063ffffffff8083168185168083038211156159d2576159d2615885565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082615a40577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300080f000a", - "key": "0xe645f3e3dba1eb870eb045c6df181f42832b2ef1c0ba7b9eaac56d015a81bc52" + "root": "0xa7abcc6e1e344abdd761f5e3b08dfacd08b68a6533969baeeaf61e80fde624e4", + "codeHash": "0x546a79d9f4cc13c0632f3f5cac30aad4e38cc6e93a96003d8336f09642d25ca3", + "code": "0x6080604052600436106101b65760003560e01c806370a08231116100ec578063ad36d6cc1161008a578063d38dc7ee11610064578063d38dc7ee146105d7578063d8fe7642146105f7578063dd215c5d14610647578063facd743b1461066757600080fd5b8063ad36d6cc1461054b578063b7d636a51461059b578063d0e30db0146105cf57600080fd5b80638f09ade4116100c65780638f09ade4146104b2578063946765fd146104d2578063a51c9ace14610506578063ab91f1901461051b57600080fd5b806370a08231146104315780638129fc1c1461046757806382dae3aa1461047c57600080fd5b806339111af81161015957806354fd4d501161013357806354fd4d50146103725780635a544742146103c85780635df6a6bc146103e85780636641ea08146103fd57600080fd5b806339111af8146102f55780633a549046146103295780633ee4d4a31461033e57600080fd5b8063205c287811610195578063205c28781461025f5780632e1a7d4d1461028157806336086417146102a157806336b83469146102d557600080fd5b80621c2ff6146101bb5780630f43a6771461020c5780630ff754ea1461022b575b600080fd5b3480156101c757600080fd5b506101ef7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021857600080fd5b506036545b604051908152602001610203565b34801561023757600080fd5b506101ef7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e081565b34801561026b57600080fd5b5061027f61027a3660046124ff565b610687565b005b34801561028d57600080fd5b5061027f61029c36600461252b565b6107ba565b3480156102ad57600080fd5b506101ef7f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c081565b3480156102e157600080fd5b5061027f6102f0366004612544565b61086b565b34801561030157600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000003281565b34801561033557600080fd5b506101ef610adc565b34801561034a57600080fd5b506101ef7f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c881565b34801561037e57600080fd5b506103bb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161020391906125f1565b3480156103d457600080fd5b5061027f6103e3366004612604565b610bfa565b3480156103f457600080fd5b5061027f610ea3565b34801561040957600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000481565b34801561043d57600080fd5b5061021d61044c366004612634565b6001600160a01b031660009081526033602052604090205490565b34801561047357600080fd5b5061027f610f22565b34801561048857600080fd5b50610491601481565b6040516fffffffffffffffffffffffffffffffff9091168152602001610203565b3480156104be57600080fd5b506104916104cd366004612604565b611099565b3480156104de57600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000a81565b34801561051257600080fd5b50610491606481565b34801561052757600080fd5b50610532620186a081565b60405167ffffffffffffffff9091168152602001610203565b34801561055757600080fd5b5061058b61056636600461252b565b7f00000000000000000000000000000000000000000000000000000000000000321090565b6040519015158152602001610203565b3480156105a757600080fd5b506104917f000000000000000000000000000000000000000000000000000000000000000181565b61027f611148565b3480156105e357600080fd5b5061027f6105f236600461266f565b61129a565b34801561060357600080fd5b5061061761061236600461252b565b611573565b6040805182516fffffffffffffffffffffffffffffffff9081168252602093840151169281019290925201610203565b34801561065357600080fd5b5061027f610662366004612604565b611692565b34801561067357600080fd5b5061058b610682366004612634565b6119f8565b61068f611a7e565b6001600160a01b0382166107105760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61071a3382611ad7565b6000610737835a8460405180602001604052806000815250611d29565b9050806107ac5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b506107b660018055565b5050565b6107c2611a7e565b6107cc3382611ad7565b60006107e9335a8460405180602001604052806000815250611d29565b90508061085e5760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610707565b5061086860018055565b50565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed9190612694565b6001600160a01b0316336001600160a01b0316146109735760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff1680610a1b5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055610a7f826fffffffffffffffffffffffffffffffff8316611d49565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610bd55760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03166380446bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7491906126b1565b9050804210610bc4576000610b8982426126f9565b90507f0000000000000000000000000000000000000000000000000000000000000004811115610bc2576001600160a01b039250505090565b505b50506038546001600160a01b031690565b507f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c890565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7c9190612694565b6001600160a01b0316336001600160a01b031614610d025760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dae5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b610dea827f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff16611ad7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ead611e7d565b9050806108685760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e6400000000000000000000000000000000000000000000006064820152608401610707565b600054610100900460ff1615808015610f425750600054600160ff909116105b80610f5c5750303b158015610f5c575060005460ff166001145b610fce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610707565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561102c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61103461212e565b801561086857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111415760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b9392505050565b6111737f00000000000000000000000000000000000000000000000000000000000000326001612710565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316636abcf5636040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f591906126b1565b1061128e5760405162461bcd60e51b815260206004820152604260248201527f56616c696461746f72506f6f6c3a206f6e6c792063616e206465706f7369742060448201527f746f2056616c696461746f72506f6f6c206265666f7265207465726d696e617460648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610707565b6112983334611d49565b565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146113385760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c650000000000000000000000000000000000000000006064820152608401610707565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156113e15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c726561647920657869737473000000006064820152608401610707565b6113e9611e7d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561146b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148f9190612694565b90506114cd817f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff16611ad7565b7f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361156d6121ab565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906115dd5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61164f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f20657869737400000000000000000000000000000000000000000000000000006064820152608401610707565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117149190612694565b6001600160a01b0316336001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d00000000000000000000000000000000000000000000000000006064820152608401610707565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156118465760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a65640000000000000000000000000000000000006064820152608401610707565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806118ee5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f742065786973740000000000000000000000000000000000006064820152608401610707565b600060646118fd601484612728565b611907919061278f565b9050600061191582846127be565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c09091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b6036546000908103611a0c57506000919050565b6001600160a01b038216611a2257506000919050565b6001600160a01b0382166000818152603760205260409020546036805491929183908110611a5257611a526127ef565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b600260015403611ad05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610707565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611b655760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e636573000000000000000000000000000000000000000000000000000000006064820152608401610707565b611b6f82826126f9565b90507f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff1681108015611bb65750611bb6836119f8565b15611d0957603654600090611bcd906001906126f9565b90508015611c85576001600160a01b0384166000908152603760205260408120546036805491929184908110611c0557611c056127ef565b600091825260209091200154603680546001600160a01b039092169250829184908110611c3457611c346127ef565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611caf57611caf61281e565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611d6d908390612710565b90507f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff168110158015611db75750611db5836119f8565b155b15611d09577f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c06001600160a01b0316836001600160a01b031614611d0957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000a81101561207857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611f3457506000846fffffffffffffffffffffffffffffffff16115b156120785760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec919061284d565b915061200e8260000151856fffffffffffffffffffffffffffffffff16611d49565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a361206c82612379565b60019485019401611ead565b80156121225760358590556040517f9902cdc0000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031690639902cdc090602401600060405180830381600087803b1580156120fe57600080fd5b505af1158015612112573d6000803e3d6000fd5b5050505060019550505050505090565b60009550505050505090565b600054610100900460ff16611d435760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610707565b60365480158015906121bf57506000603554115b1561234e5760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663a25ae557600160355461220491906126f9565b6040518263ffffffff1660e01b815260040161222291815260200190565b608060405180830381865afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612263919061284d565b9050600082826020015143414460014361227d91906126f9565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c6122ee91906128f0565b905060368181548110612303576123036127ef565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506108689050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612423926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526124b5939291600401612904565b600060405180830381600087803b1580156124cf57600080fd5b505af11580156124e3573d6000803e3d6000fd5b5050505050565b6001600160a01b038116811461086857600080fd5b6000806040838503121561251257600080fd5b823561251d816124ea565b946020939093013593505050565b60006020828403121561253d57600080fd5b5035919050565b60008060006060848603121561255957600080fd5b83359250602084013561256b816124ea565b9150604084013561257b816124ea565b809150509250925092565b6000815180845260005b818110156125ac57602081850181015186830182015201612590565b818111156125be576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111416020830184612586565b6000806040838503121561261757600080fd5b823591506020830135612629816124ea565b809150509250929050565b60006020828403121561264657600080fd5b8135611141816124ea565b6fffffffffffffffffffffffffffffffff8116811461086857600080fd5b6000806040838503121561268257600080fd5b82359150602083013561262981612651565b6000602082840312156126a657600080fd5b8151611141816124ea565b6000602082840312156126c357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561270b5761270b6126ca565b500390565b60008219821115612723576127236126ca565b500190565b60006fffffffffffffffffffffffffffffffff80831681851681830481118215151615612757576127576126ca565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806127b2576127b2612760565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e7576127e76126ca565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561285f57600080fd5b6040516080810181811067ffffffffffffffff821117156128a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516128b7816124ea565b81526020838101519082015260408301516128d181612651565b604082015260608301516128e481612651565b60608201529392505050565b6000826128ff576128ff612760565b500690565b6001600160a01b038416815267ffffffffffffffff831660208201526060604082015260006129366060830184612586565b9594505050505056fea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x0000000000000000000000000000000000000000000000000000000000000001": "01" + }, + "key": "0xd76a9e3251db48a3dc95c22482b0e33783cfd46d1b333e3b373cdf5adece583b" + }, + "0xc6e7df5e7b4f2a278906862b61205850344d4e7d": { + "balance": "0", + "nonce": 1, + "root": "0xb45fafbc41242521fb222c114d80647c0858e2a27d7574ef837788f7a78cdaaa", + "codeHash": "0x02898aaa7c1add99de89629303000fbd799dcaaec7d7380cb042e86d96a9fd75", + "code": "0x60806040526004361061015f5760003560e01c80636e296e45116100c0578063a4e7f8bd11610074578063b28ade2511610059578063b28ade25146103d2578063d764ad0b146103f2578063ecc704281461040557600080fd5b8063a4e7f8bd14610372578063b1b1b209146103a257600080fd5b806383a74074116100a557806383a74074146103275780638cbeeef2146102575780639fce812c1461033e57600080fd5b80636e296e45146102fd5780638129fc1c1461031257600080fd5b80633f827a5a1161011757806354fd4d50116100fc57806354fd4d501461026d5780635644cfdf146102c35780635c975abb146102d957600080fd5b80633f827a5a1461022f5780634c1d6a691461025757600080fd5b80630ff754ea116101485780630ff754ea146101ac5780632828d7e8146102055780633dbb202b1461021a57600080fd5b8063028f85f7146101645780630c56849814610197575b600080fd5b34801561017057600080fd5b50610179601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156101a357600080fd5b50610179603f81565b3480156101b857600080fd5b506101e07f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018e565b34801561021157600080fd5b50610179604081565b61022d610228366004611563565b610443565b005b34801561023b57600080fd5b50610244600081565b60405161ffff909116815260200161018e565b34801561026357600080fd5b50610179619c4081565b34801561027957600080fd5b506102b66040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161018e9190611635565b3480156102cf57600080fd5b5061017961138881565b3480156102e557600080fd5b5060335460ff165b604051901515815260200161018e565b34801561030957600080fd5b506101e0610631565b34801561031e57600080fd5b5061022d61071d565b34801561033357600080fd5b5061017962030d4081565b34801561034a57600080fd5b506101e07f000000000000000000000000420000000000000000000000000000000000000481565b34801561037e57600080fd5b506102ed61038d36600461164f565b60686020526000908152604090205460ff1681565b3480156103ae57600080fd5b506102ed6103bd36600461164f565b60656020526000908152604090205460ff1681565b3480156103de57600080fd5b506101796103ed366004611668565b6108af565b61022d6104003660046116bc565b61091d565b34801561041157600080fd5b506067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660405190815260200161018e565b61055b7f00000000000000000000000042000000000000000000000000000000000000046104728585856108af565b347fd764ad0b000000000000000000000000000000000000000000000000000000006104bd6067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b338a34898c8c6040516024016104d9979695949392919061178b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110d0565b3373ffffffffffffffffffffffffffffffffffffffff85167fdd28cef75ff18fb538e43317144469f339702f973eace2bc808f2acc37db310e3486866105c06067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b876040516105d29594939291906117ea565b60405180910390a35050606780547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60665460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215301610700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060665473ffffffffffffffffffffffffffffffffffffffff1690565b600054610100900460ff161580801561073d5750600054600160ff909116105b806107575750303b158015610757575060005460ff166001145b6107e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106f7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561084157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610849611185565b80156108ac57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000611388619c4080603f6108cb604063ffffffff8816611851565b6108d59190611881565b6108e0601088611851565b6108ed9062030d406118cf565b6108f791906118cf565b61090191906118cf565b61090b91906118cf565b61091591906118cf565b949350505050565b60f087901c600181106109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206d6573736167657320697320737570706f7274656420617420746860648201527f69732074696d6500000000000000000000000000000000000000000000000000608482015260a4016106f7565b6000610a1e898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061124a92505050565b9050610a2861126d565b15610a6057853414610a3c57610a3c6118fb565b60008181526068602052604090205460ff1615610a5b57610a5b6118fb565b610bb2565b3415610b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a4016106f7565b60008181526068602052604090205460ff16610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016106f7565b610bbb87611391565b15610c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a4016106f7565b60008181526065602052604090205460ff1615610d0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016106f7565b610d2e85610d1f611388619c406118cf565b67ffffffffffffffff16611408565b1580610d54575060665473ffffffffffffffffffffffffffffffffffffffff1661dead14155b15610e6d5760008181526068602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201610e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016106f7565b50506110a6565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a161790556000610efe88619c405a610ec1919061192a565b8988888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142692505050565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905590508015610f955760008281526065602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a26110a2565b60008281526068602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016106f7565b5050505b50505050505050565b905090565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fe9e05c4200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0169063e9e05c4290849061114d908890839089906000908990600401611941565b6000604051808303818588803b15801561116657600080fd5b505af115801561117a573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff1661121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106f7565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b600061125a878787878787611440565b8051906020012090509695505050505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0161480156110af57507f000000000000000000000000420000000000000000000000000000000000000473ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e073ffffffffffffffffffffffffffffffffffffffff16639bf62d826040518163ffffffff1660e01b8152600401602060405180830381865afa158015611351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113759190611999565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600073ffffffffffffffffffffffffffffffffffffffff821630148061140257507f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b606086868686868660405160240161145d969594939291906119b6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108ac57600080fd5b60008083601f84011261151357600080fd5b50813567ffffffffffffffff81111561152b57600080fd5b60208301915083602082850101111561154357600080fd5b9250929050565b803563ffffffff8116811461155e57600080fd5b919050565b6000806000806060858703121561157957600080fd5b8435611584816114df565b9350602085013567ffffffffffffffff8111156115a057600080fd5b6115ac87828801611501565b90945092506115bf90506040860161154a565b905092959194509250565b6000815180845260005b818110156115f0576020818501810151868301820152016115d4565b81811115611602576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061164860208301846115ca565b9392505050565b60006020828403121561166157600080fd5b5035919050565b60008060006040848603121561167d57600080fd5b833567ffffffffffffffff81111561169457600080fd5b6116a086828701611501565b90945092506116b390506020850161154a565b90509250925092565b600080600080600080600060c0888a0312156116d757600080fd5b8735965060208801356116e9816114df565b955060408801356116f9816114df565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561172357600080fd5b61172f8a828b01611501565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a08301526117dd60c083018486611742565b9998505050505050505050565b858152608060208201526000611804608083018688611742565b905083604083015263ffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168183048111821515161561187857611878611822565b02949350505050565b600067ffffffffffffffff808416806118c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff8083168185168083038211156118f2576118f2611822565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008282101561193c5761193c611822565b500390565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015267ffffffffffffffff84166040820152821515606082015260a06080820152600061198e60a08301846115ca565b979650505050505050565b6000602082840312156119ab57600080fd5b8151611648816114df565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611a0160c08301846115ca565b9897505050505050505056fea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x0000000000000000000000000000000000000000000000000000000000000066": "dead" + }, + "key": "0x4ea7799478a7af2a47ba555f04aec4ae4ba240bf410d7c859c34c310f0413892" }, "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9": { "balance": "0", "nonce": 1, - "root": "0x84fca44e98047a84beede48a330ff069336023c8e8e5e3349e5e6cb1bd534404", + "root": "0xeda23f13fd45ac4a23d951107719942f59587177ceb979494bc474e070c21669", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", "0x0000000000000000000000000000000000000000000000000000000000000001": "01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "09635f643e140090a9a8dcd712ed6285858cebef", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "c5a5c42992decbae36851359345fe25997f5c42d", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0xfe007bdba68bf70aaeb167af64e1fe093e2da7911c8fdd2ca2cbd15510556466" @@ -529,69 +556,62 @@ "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9": { "balance": "0", "nonce": 1, - "root": "0x6f22237ad748a49888344782eeecd1f1f031eab6d5a52da92470955b28231e53", + "root": "0x49a6aad6a4b4b89c042996181df3b5193cb886b19fc18f8e4f66663fc7c16d96", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "67d269191c92caf3cd7723f116c85e6e9bf55933", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "e6e340d132b5f46d1e472debcd681b2abc16e57e", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x5955c038e06073af9c7343aebef817ef3c1a62b10ca675a3d129ce4e4269f7ea" }, + "0xe6e340d132b5f46d1e472debcd681b2abc16e57e": { + "balance": "0", + "nonce": 1, + "root": "0x821e2556a290c86405f8160a2d662042a431ba456b9db265c79bb837c04be5f0", + "codeHash": "0xb70a51c24da0406f762357a71eed348a4f0fb92d46ea67cac19c1a50cae756ad", + "code": "0x6080604052600436106101a05760003560e01c80639e45e8f4116100e1578063cf8e5cf01161008a578063e4a3011611610064578063e4a3011614610550578063e664672314610570578063f403838d14610590578063f4daa291146105a657600080fd5b8063cf8e5cf0146104fb578063d1de856c1461051b578063dcec33481461053b57600080fd5b8063ae9483e0116100bb578063ae9483e014610473578063b0ea09a8146104a7578063b98debbf146104c757600080fd5b80639e45e8f41461037b578063a25ae557146103d4578063a48ea6de1461045357600080fd5b806369f16eec1161014e5780637f006420116101285780637f0064201461031057806380446bd21461033057806388786272146103455780639902cdc01461035b57600080fd5b806369f16eec146102d05780636abcf563146102e557806370872aa5146102fa57600080fd5b8063529933df1161017f578063529933df1461023157806354fd4d50146102655780635a045f78146102bb57600080fd5b80622134cc146101a557806333727c4d146101ec5780634599c7881461021c575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000281565b6040519081526020015b60405180910390f35b3480156101f857600080fd5b5061020c610207366004611ac3565b6105da565b60405190151581526020016101e3565b34801561022857600080fd5b506101d96105ee565b34801561023d57600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000000481565b34801561027157600080fd5b506102ae6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101e39190611adc565b6102ce6102c9366004611b4f565b610661565b005b3480156102dc57600080fd5b506101d9610e7d565b3480156102f157600080fd5b506003546101d9565b34801561030657600080fd5b506101d960015481565b34801561031c57600080fd5b506101d961032b366004611ac3565b610e8f565b34801561033c57600080fd5b506101d961106f565b34801561035157600080fd5b506101d960025481565b34801561036757600080fd5b506102ce610376366004611ac3565b611087565b34801561038757600080fd5b506103af7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e3565b3480156103e057600080fd5b506103f46103ef366004611ac3565b6112d9565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152828201516fffffffffffffffffffffffffffffffff90811692820192909252606092830151909116918101919091526080016101e3565b34801561045f57600080fd5b506101d961046e366004611ac3565b611396565b34801561047f57600080fd5b506103af7f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae81565b3480156104b357600080fd5b506103af6104c2366004611ac3565b611402565b3480156104d357600080fd5b506103af7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561050757600080fd5b506103f4610516366004611ac3565b611444565b34801561052757600080fd5b506101d9610536366004611ac3565b611483565b34801561054757600080fd5b506101d96114cb565b34801561055c57600080fd5b506102ce61056b366004611b81565b611511565b34801561057c57600080fd5b506102ce61058b366004611bc8565b61172a565b34801561059c57600080fd5b506101d960045481565b3480156105b257600080fd5b506101d97f000000000000000000000000000000000000000000000000000000000000007881565b6000426105e683611396565b111592915050565b60035460009015610658576003805461060990600190611c30565b8154811061061957610619611c47565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600061066c60035490565b6040517fad36d6cc0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9169063ad36d6cc90602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190611c76565b9050600081156107cd576040517f891aab740000000000000000000000000000000000000000000000000000000081523360048201527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae73ffffffffffffffffffffffffffffffffffffffff169063891aab749060240160006040518083038186803b1580156107b057600080fd5b505afa1580156107c4573d6000803e3d6000fd5b5050505061085f565b7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc973ffffffffffffffffffffffffffffffffffffffff16633a5490466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085c9190611c9f565b90505b81158015610883575073ffffffffffffffffffffffffffffffffffffffff81811614155b1561093e573373ffffffffffffffffffffffffffffffffffffffff82161461093e5760405162461bcd60e51b815260206004820152604260248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206e65787420736560448201527f6c65637465642076616c696461746f722063616e207375626d6974206f75747060648201527f7574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6109466114cb565b86146109e05760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a401610935565b426109e961106f565b1115610a5d5760405162461bcd60e51b815260206004820152603560248201527f4c324f75747075744f7261636c653a2063616e6e6f74207375626d6974204c3260448201527f206f757470757420696e207468652066757475726500000000000000000000006064820152608401610935565b86610ad05760405162461bcd60e51b815260206004820152603c60248201527f4c324f75747075744f7261636c653a204c3220636865636b706f696e74206f7560448201527f747075742063616e6e6f7420626520746865207a65726f2068617368000000006064820152608401610935565b8415801590610adf5750834015155b15610b805784844014610b805760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a401610935565b60408051608081018252338152602081018981526fffffffffffffffffffffffffffffffff428181168486019081528b831660608601908152600380546001810182556000829052965196027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8101805473ffffffffffffffffffffffffffffffffffffffff989098167fffffffffffffffffffffffff00000000000000000000000000000000000000009098169790971790965593517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c86015551925182167001000000000000000000000000000000000292909116919091177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d909201919091559051879185918a917f457b4388026260019ae0b0b4f16c98235d74fe7359be469bdcba16e6d0d4968991610cd991815260200190565b60405180910390a48115610d8c576040517fbe119347000000000000000000000000000000000000000000000000000000008152600481018490527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae73ffffffffffffffffffffffffffffffffffffffff169063be11934790602401600060405180830381600087803b158015610d6f57600080fd5b505af1158015610d83573d6000803e3d6000fd5b50505050610e74565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663d38dc7ee84610df37f000000000000000000000000000000000000000000000000000000000000007842611cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050505b50505050505050565b60035460009061065c90600190611c30565b6000610e996105ee565b821115610f345760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f7375626d69747465640000000000000000000000000000000000000000000000608482015260a401610935565b600354610fcf5760405162461bcd60e51b815260206004820152604760248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e207375626d697460648201527f7465642079657400000000000000000000000000000000000000000000000000608482015260a401610935565b6003546000905b808210156110685760006002610fec8385611cbc565b610ff69190611cd4565b9050846003828154811061100c5761100c611c47565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16101561105e57611057816001611cbc565b9250611062565b8091505b50610fd6565b5092915050565b600061065c61107c6114cb565b610536906001611cbc565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663ad36d6cc6110ce600184611c30565b6040518263ffffffff1660e01b81526004016110ec91815260200190565b602060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611c76565b15611208573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae16146112035760405162461bcd60e51b815260206004820152605660248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f72206d616e6167657220636f6e74726163742063616e20736574206e65787460648201527f2066696e616c697a65206f757470757420696e64657800000000000000000000608482015260a401610935565b600455565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112035760405162461bcd60e51b815260206004820152605360248201527f4c324f75747075744f7261636c653a206f6e6c79207468652076616c6964617460448201527f6f7220706f6f6c20636f6e74726163742063616e20736574206e65787420666960648201527f6e616c697a65206f757470757420696e64657800000000000000000000000000608482015260a401610935565b6040805160808101825260008082526020820181905291810182905260608101919091526003828154811061131057611310611c47565b6000918252602091829020604080516080810182526003909302909101805473ffffffffffffffffffffffffffffffffffffffff1683526001810154938301939093526002909201546fffffffffffffffffffffffffffffffff808216938301939093527001000000000000000000000000000000009004909116606082015292915050565b60007f0000000000000000000000000000000000000000000000000000000000000078600383815481106113cc576113cc611c47565b60009182526020909120600260039092020101546113fc91906fffffffffffffffffffffffffffffffff16611cbc565b92915050565b60006003828154811061141757611417611c47565b600091825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1692915050565b604080516080810182526000808252602082018190529181018290526060810191909152600361147383610e8f565b8154811061131057611310611c47565b60007f0000000000000000000000000000000000000000000000000000000000000002600154836114b49190611c30565b6114be9190611d0f565b6002546113fc9190611cbc565b60035460009015611509577f00000000000000000000000000000000000000000000000000000000000000046114ff6105ee565b61065c9190611cbc565b61065c6105ee565b600054610100900460ff16158080156115315750600054600160ff909116105b8061154b5750303b15801561154b575060005460ff166001145b6115bd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610935565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561161b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b428211156116b85760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a401610935565b60028290556001839055801561172557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e16146117fb5760405162461bcd60e51b815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c792074686520636f6c6f73736560448201527f756d20636f6e74726163742063616e207265706c61636520616e206f7574707560648201527f7400000000000000000000000000000000000000000000000000000000000000608482015260a401610935565b73ffffffffffffffffffffffffffffffffffffffff81166118845760405162461bcd60e51b815260206004820152603060248201527f4c324f75747075744f7261636c653a207375626d69747465722061646472657360448201527f732063616e6e6f74206265207a65726f000000000000000000000000000000006064820152608401610935565b60035483106119215760405162461bcd60e51b815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420616674657220746865206c6174657374206f757470757460648201527f20696e6465780000000000000000000000000000000000000000000000000000608482015260a401610935565b60006003848154811061193657611936611c47565b6000918252602090912060039091020160028101549091507f00000000000000000000000000000000000000000000000000000000000000789061198c906fffffffffffffffffffffffffffffffff1642611c30565b10611a255760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420746861742068617320616c7265616479206265656e206660648201527f696e616c697a6564000000000000000000000000000000000000000000000000608482015260a401610935565b6001810183905580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405184815285907f1ec0d63ba3dd4b277ece3e578c4c9587edfa0d855192704c88f9a1d74316624f9060200160405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600060208284031215611ad557600080fd5b5035919050565b600060208083528351808285015260005b81811015611b0957858101830151858201604001528201611aed565b81811115611b1b576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060008060808587031215611b6557600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611b9457600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff81168114611bc557600080fd5b50565b600080600060608486031215611bdd57600080fd5b83359250602084013591506040840135611bf681611ba3565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c4257611c42611c01565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c8857600080fd5b81518015158114611c9857600080fd5b9392505050565b600060208284031215611cb157600080fd5b8151611c9881611ba3565b60008219821115611ccf57611ccf611c01565b500190565b600082611d0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d4757611d47611c01565b50029056fea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01" + }, + "key": "0x3dbf99296c1be8e244c0325b4861825343f8b995a643099d43c4d0bb066f6089" + }, "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512": { "balance": "0", "nonce": 1, - "root": "0xc7149db1c8201df1156bca20167d25250e7236968f8788b87d2f748d30f66efc", + "root": "0x033df61de47ecabbaf426ed2f8c0d6272a2723ca2e75ddbb11110803155fca7f", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "0x0000000000000000000000000000000000000000000000000000000000000033": "9a676e781a523b5d0c0e43731313a708cb607508", "0x0000000000000000000000000000000000000000000000000000000000000065": "0834", "0x0000000000000000000000000000000000000000000000000000000000000066": "0f4240", "0x0000000000000000000000000000000000000000000000000000000000000067": "3c44cdddb6a900fa2b585dd299e03d12fa4293bc", "0x0000000000000000000000000000000000000000000000000000000000000068": "01c9c380", "0x0000000000000000000000000000000000000000000000000000000000000069": "ffffffffffffffffffffffffffffffff000f42403b9aca00080a01312d00", "0x000000000000000000000000000000000000000000000000000000000000006a": "1388", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "f5059a5d33d5853360d16c683c16e67980206f36", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "95401dc811bb5740090279ba06cfa8fcf6113778", "0x65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08": "9965507d1a55bcc2695c58ba16fb37d819b0a4dc", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x798c6047767c10f653ca157a7f66a592a1d6ca550cae352912be0b0745336afd" }, - "0xf30b03a031b334ffe91039afdabbc4fb264dc373": { - "balance": "115792089237316195423570985008687907853269984665640564039455794579721596828552", - "nonce": 2, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "key": "0x4ad0a3c8b5ed3f6db83560a7a4b1818628627110997be57b6e677acbd479a7cb" - }, "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266": { - "balance": "793116389314186255", - "nonce": 58, + "balance": "787634220348200289", + "nonce": 61, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "key": "0xe9707d0e6171f728f7473c24cc0432a9b07eaaf1efed6a137a4a8c12c79552d9" }, - "0xf5059a5d33d5853360d16c683c16e67980206f36": { + "0xfd471836031dc5108809d173a067e8486b9047a3": { "balance": "0", "nonce": 1, - "root": "0x1f6d4a6bd29feba7ce7b0aeb56e30f5d7718d9230959d0621e846e72f6d850c9", - "codeHash": "0xf088100162a48771cf9ad3b57490a878312e56f8afcf21e4fee9675799e494f2", - "code": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c8063c71973f6116100d8578063ed579ad31161008c578063f68016b711610066578063f68016b71461046d578063fc7ffea714610481578063ffa1ad741461049457600080fd5b8063ed579ad314610448578063f2fde38b14610451578063f45e65d81461046457600080fd5b8063cc731b02116100bd578063cc731b02146102f8578063e81b2c6d1461042c578063ecdd939d1461043557600080fd5b8063c71973f6146102d2578063c9b26f61146102e557600080fd5b806354fd4d501161012f5780638da5cb5b116101145780638da5cb5b1461028e578063935f029e146102ac578063b40a817c146102bf57600080fd5b806354fd4d501461023d578063715018a61461028657600080fd5b80631fd19ee1116101605780631fd19ee1146101ad5780634add321d146101f55780634f16540b1461021657600080fd5b80630c18c1621461017c57806318d1391814610198575b600080fd5b61018560655481565b6040519081526020015b60405180910390f35b6101ab6101a6366004611139565b61049c565b005b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018f565b6101fd610560565b60405167ffffffffffffffff909116815260200161018f565b6101857f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b6102796040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161018f91906111c6565b6101ab61058b565b60335473ffffffffffffffffffffffffffffffffffffffff166101d0565b6101ab6102ba3660046111d9565b61059f565b6101ab6102cd366004611213565b610638565b6101ab6102e036600461133c565b610709565b6101ab6102f3366004611358565b61071d565b6103bc6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b60405161018f9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b61018560675481565b6101ab610443366004611358565b61074d565b610185606a5481565b6101ab61045f366004611139565b61081b565b61018560665481565b6068546101fd9067ffffffffffffffff1681565b6101ab61048f366004611371565b6108b5565b610185600081565b6104a4610b3a565b6104cc817f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b6040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060035b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161055491906111c6565b60405180910390a35050565b6069546000906105869063ffffffff6a010000000000000000000082048116911661141d565b905090565b610593610b3a565b61059d6000610ba1565b565b6105a7610b3a565b606582905560668190556040805160208101849052908101829052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600160007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161062b91906111c6565b60405180910390a3505050565b610640610b3a565b610648610560565b67ffffffffffffffff168167ffffffffffffffff1610156106b05760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064015b60405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040805160208082019390935281518082039093018352810190526002610523565b610711610b3a565b61071a81610c18565b50565b610725610b3a565b6067819055604080516020808201849052825180830390910181529082019091526000610523565b610755610b3a565b6127108111156107f35760405162461bcd60e51b815260206004820152604860248201527f53797374656d436f6e6669673a20746865206d61782076616c7565206f66207660448201527f616c696461746f7220726577617264207363616c617220686173206265656e2060648201527f6578636565646564000000000000000000000000000000000000000000000000608482015260a4016106a7565b606a819055604080516020808201849052825180830390910181529082019091526004610523565b610823610b3a565b73ffffffffffffffffffffffffffffffffffffffff81166108ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a7565b61071a81610ba1565b600054610100900460ff16158080156108d55750600054600160ff909116105b806108ef5750303b1580156108ef575060005460ff166001145b6109615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109bf57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6109c761100a565b6109d08961081b565b606588905560668790556067869055606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff87161790557f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08849055610a4083610c18565b610a48610560565b67ffffffffffffffff168567ffffffffffffffff161015610aab5760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016106a7565b606a8290558015610b1357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff16331461059d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff161115610cae5760405162461bcd60e51b815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d61782062617365000000000000000000000060648201526084016106a7565b6001816040015160ff1611610d2b5760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f72206d757374206260448201527f65206c6172676572207468616e2031000000000000000000000000000000000060648201526084016106a7565b6068546080820151825167ffffffffffffffff90921691610d4c9190611449565b63ffffffff161115610da05760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016106a7565b6000816020015160ff1611610e1d5760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201527f6965722063616e6e6f742062652030000000000000000000000000000000000060648201526084016106a7565b8051602082015163ffffffff82169160ff90911690610e3d908290611468565b610e4791906114b2565b63ffffffff1614610ec05760405162461bcd60e51b815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d697400000000000000000060648201526084016106a7565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b600054610100900460ff166110875760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a7565b61059d600054610100900460ff166111075760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a7565b61059d33610ba1565b803573ffffffffffffffffffffffffffffffffffffffff8116811461113457600080fd5b919050565b60006020828403121561114b57600080fd5b61115482611110565b9392505050565b6000815180845260005b8181101561118157602081850181015186830182015201611165565b81811115611193576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611154602083018461115b565b600080604083850312156111ec57600080fd5b50508035926020909101359150565b803567ffffffffffffffff8116811461113457600080fd5b60006020828403121561122557600080fd5b611154826111fb565b803563ffffffff8116811461113457600080fd5b803560ff8116811461113457600080fd5b80356fffffffffffffffffffffffffffffffff8116811461113457600080fd5b600060c0828403121561128557600080fd5b60405160c0810181811067ffffffffffffffff821117156112cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040529050806112de8361122e565b81526112ec60208401611242565b60208201526112fd60408401611242565b604082015261130e6060840161122e565b606082015261131f6080840161122e565b608082015261133060a08401611253565b60a08201525092915050565b600060c0828403121561134e57600080fd5b6111548383611273565b60006020828403121561136a57600080fd5b5035919050565b6000806000806000806000806101a0898b03121561138e57600080fd5b61139789611110565b97506020890135965060408901359550606089013594506113ba60808a016111fb565b93506113c860a08a01611110565b92506113d78a60c08b01611273565b915061018089013590509295985092959890939650565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516808303821115611440576114406113ee565b01949350505050565b600063ffffffff808316818516808303821115611440576114406113ee565b600063ffffffff808416806114a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600063ffffffff808316818516818304811182151516156114d5576114d56113ee565b0294935050505056fea164736f6c634300080f000a", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0834", - "0x0000000000000000000000000000000000000000000000000000000000000066": "0f4240", - "0x0000000000000000000000000000000000000000000000000000000000000067": "3c44cdddb6a900fa2b585dd299e03d12fa4293bc", - "0x0000000000000000000000000000000000000000000000000000000000000068": "01c9c380", - "0x0000000000000000000000000000000000000000000000000000000000000069": "ffffffffffffffffffffffffffffffff000f42403b9aca00080a01312d00", - "0x000000000000000000000000000000000000000000000000000000000000006a": "1388", - "0x65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08": "9965507d1a55bcc2695c58ba16fb37d819b0a4dc" - }, - "key": "0x4e64a3fa2e772a9bdbceaca76b8ed475afcab9e7be1b46f004a5be4ed3f6db95" + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0x40aac8aac25a1d636dd9d8b526e5dfb6901c03dc7299df027be796eaa16de61a", + "code": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c8063816bf26d11610076578063b3a472581161005b578063b3a47258146101df578063d6df096d146101f2578063fefd67bb1461021857600080fd5b8063816bf26d146101935780639aea2572146101b957600080fd5b806346fd838c146100a857806352a07fa3146100dd57806354fd4d50146101245780635747274b1461016d575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000015b6040519081526020015b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000015b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d4565b6101606040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d491906114fb565b7f0000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c6100ff565b7f00000000000000000000000000000000000000000000000000000000000000646100ca565b7fa1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f76100ca565b6100ca6101ed366004611515565b61022b565b7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3186100ff565b6100ca61022636600461156e565b6103c6565b600061027b848461023c88806115c1565b61024b9160209160009161162d565b61025491611657565b61025e89806115c1565b61026d9160409160209161162d565b61027691611657565b6105af565b8161028686806115c1565b6102959160609160409161162d565b61029e91611657565b146102d5576040517f7458ca2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000001166341493c607f000000000000000000000000000000000000000000000000000000000000000161033c88806115c1565b61034960208b018b6115c1565b6040518663ffffffff1660e01b81526004016103699594939291906116be565b60006040518083038186803b15801561038157600080fd5b505afa158015610395573d6000803e3d6000fd5b506103a692508791508190506115c1565b6040516103b49291906116f7565b60405180910390209050949350505050565b6000366103d38580611707565b9050608081013561010082013514610417576040517f3f126fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610448848461043361042e36869003860186611811565b61062d565b61027661042e36879003870160a08801611811565b61047060a0820161045d610140840184611881565b61046b6101608501856118b5565b6106cf565b61049c6104816101c08301836118e9565b6101808401356101a085013560e086013560c0870135610794565b6104b760208201356104b2610140840184611881565b6108de565b915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31816634292dc3e61050260208801886118e9565b61050f60408a018a6118e9565b876040518663ffffffff1660e01b81526004016105309594939291906119a0565b602060405180830381865afa15801561054d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057191906119da565b6105a7576040517f076490f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b509392505050565b8184146105e8576040517f8b10302800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821561062757808303610627576040517f4e15341500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b608081015160009061068f5781516020808401516040808601516060870151915161067295949192910193845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b81516020808401516040808601516060808801516080808a01518551978801989098529386019490945284015282015260a081019190915260c001610672565b82602001358260e0013514610710576040517f4d9e774000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061018083013561073b5761073661072884611a94565b61073184611c0c565b61099b565b610755565b61075561074784611a94565b61075084611c0c565b610a3f565b905080846060013514610627576040517fb033950600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f0000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c73ffffffffffffffffffffffffffffffffffffffff16906312e64a729061085e907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401611d82565b602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f91906119da565b6108d5576040517ff35959c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b600060607f00000000000000000000000000000000000000000000000000000000000000646109116101208501856118e9565b9050101561097e5761097b7fa1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f761094b6101208601866118e9565b61097691507f0000000000000000000000000000000000000000000000000000000000000064611eaa565b610b50565b90505b6109918461098b85611a94565b83610bd4565b9150505b92915050565b6040805160118082526102408201909252600091829190816020015b60608152602001906001900390816109b75790505090506109d9848483610c46565b610a088461010001516040516020016109f491815260200190565b604051602081830303815290604052610ef9565b81601081518110610a1b57610a1b611ec1565b6020026020010181905250610a2f81610f64565b8051906020012091505092915050565b6040805160148082526102a08201909252600091829190816020015b6060815260200190600190039081610a5b579050509050610a7d848483610c46565b610a988461010001516040516020016109f491815260200190565b81601081518110610aab57610aab611ec1565b6020026020010181905250610ace84610140015167ffffffffffffffff16610f8f565b81601181518110610ae157610ae1611ec1565b6020026020010181905250610b0484610160015167ffffffffffffffff16610f8f565b81601281518110610b1757610b17611ec1565b6020026020010181905250610b3d8461018001516040516020016109f491815260200190565b81601381518110610a1b57610a1b611ec1565b606060008267ffffffffffffffff811115610b6d57610b6d611745565b604051908082528060200260200182016040528015610b96578160200160208202803683370190505b50905060005b838110156105a75784828281518110610bb757610bb7611ec1565b602090810291909101015280610bcc81611ef0565b915050610b9c565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001610c279c9b9a99989796959493929190611f3d565b6040516020818303038152906040528051906020012090509392505050565b610c6083602001516040516020016109f491815260200190565b81600081518110610c7357610c73611ec1565b6020026020010181905250816000015181600181518110610c9657610c96611ec1565b6020026020010181905250816020015181600281518110610cb957610cb9611ec1565b6020026020010181905250610cde8360e001516040516020016109f491815260200190565b81600381518110610cf157610cf1611ec1565b6020026020010181905250610d168360c001516040516020016109f491815260200190565b81600481518110610d2957610d29611ec1565b6020026020010181905250816040015181600581518110610d4c57610d4c611ec1565b6020026020010181905250816060015181600681518110610d6f57610d6f611ec1565b6020026020010181905250816080015181600781518110610d9257610d92611ec1565b6020026020010181905250610db4836060015167ffffffffffffffff16610f8f565b81600881518110610dc757610dc7611ec1565b6020026020010181905250610de9836080015167ffffffffffffffff16610f8f565b81600981518110610dfc57610dfc611ec1565b60200260200101819052508160a0015181600a81518110610e1f57610e1f611ec1565b6020026020010181905250610e41836040015167ffffffffffffffff16610f8f565b81600b81518110610e5457610e54611ec1565b60200260200101819052508160c0015181600c81518110610e7757610e77611ec1565b60200260200101819052508160e0015181600d81518110610e9a57610e9a611ec1565b602002602001018190525081610100015181600e81518110610ebe57610ebe611ec1565b6020026020010181905250610ed68360a00151610f8f565b81600f81518110610ee957610ee9611ec1565b6020026020010181905250505050565b606081516001148015610f265750608082600081518110610f1c57610f1c611ec1565b016020015160f81c105b15610f2f575090565b610f3b82516080610fa2565b82604051602001610f4d929190611ff6565b60405160208183030381529060405290505b919050565b6060610f6f82611196565b9050610f7d815160c0610fa2565b81604051602001610f4d929190611ff6565b6060610995610f9d836112cb565b610ef9565b606060388310156110205760408051600180825281830190925290602082018180368337019050509050610fd68284612025565b60f81b81600081518110610fec57610fec611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610995565b600060015b61102f8186612079565b15611055578161103e81611ef0565b925061104e90506101008261208d565b9050611025565b6110608260016120ac565b67ffffffffffffffff81111561107857611078611745565b6040519080825280601f01601f1916602001820160405280156110a2576020820181803683370190505b5092506110af8483612025565b6110ba906037612025565b60f81b836000815181106110d0576110d0611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b81811161118e576101006111188284611eaa565b611124906101006121a8565b61112e9087612079565b61113891906121b4565b60f81b83828151811061114d5761114d611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061118681611ef0565b915050611104565b505092915050565b606081516000036111b557505060408051600081526020810190915290565b6000805b83518110156111fc578381815181106111d4576111d4611ec1565b602002602001015151826111e891906120ac565b9150806111f481611ef0565b9150506111b9565b8167ffffffffffffffff81111561121557611215611745565b6040519080825280601f01601f19166020018201604052801561123f576020820181803683370190505b50925060009050602083015b84518210156112c357600085838151811061126857611268611ec1565b60200260200101519050600060208201905061128683828451611428565b86848151811061129857611298611ec1565b602002602001015151836112ac91906120ac565b9250505081806112bb90611ef0565b92505061124b565b505050919050565b60606000826040516020016112e291815260200190565b604051602081830303815290604052905060005b60208110156113515781818151811061131157611311611ec1565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003611351578061134981611ef0565b9150506112f6565b61135c816020611eaa565b67ffffffffffffffff81111561137457611374611745565b6040519080825280601f01601f19166020018201604052801561139e576020820181803683370190505b50925060005b83518110156112c35782826113b881611ef0565b9350815181106113ca576113ca611ec1565b602001015160f81c60f81b8482815181106113e7576113e7611ec1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061142081611ef0565b9150506113a4565b8282825b6020811061146457815183526114436020846120ac565b92506114506020836120ac565b915061145d602082611eaa565b905061142c565b905182516020929092036101000a6000190180199091169116179052505050565b60005b838110156114a0578181015183820152602001611488565b838111156106275750506000910152565b600081518084526114c9816020860160208601611485565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061150e60208301846114b1565b9392505050565b6000806000806080858703121561152b57600080fd5b843567ffffffffffffffff81111561154257600080fd5b85016040818803121561155457600080fd5b966020860135965060408601359560600135945092505050565b60008060006060848603121561158357600080fd5b833567ffffffffffffffff81111561159a57600080fd5b8401606081870312156115ac57600080fd5b95602085013595506040909401359392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126115f657600080fd5b83018035915067ffffffffffffffff82111561161157600080fd5b60200191503681900382131561162657600080fd5b9250929050565b6000808585111561163d57600080fd5b8386111561164a57600080fd5b5050820193919092039150565b8035602083101561099557600019602084900360031b1b1692915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8581526060602082015260006116d8606083018688611675565b82810360408401526116eb818587611675565b98975050505050505050565b8183823760009101908152919050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2183360301811261173b57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff8111828210171561179857611798611745565b60405290565b604051610120810167ffffffffffffffff8111828210171561179857611798611745565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561180957611809611745565b604052919050565b600060a0828403121561182357600080fd5b60405160a0810181811067ffffffffffffffff8211171561184657611846611745565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6183360301811261173b57600080fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261173b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261191e57600080fd5b83018035915067ffffffffffffffff82111561193957600080fd5b6020019150600581901b360382131561162657600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561198357600080fd5b8260051b8083602087013760009401602001938452509192915050565b6060815260006119b4606083018789611951565b82810360208401526119c7818688611951565b9150508260408301529695505050505050565b6000602082840312156119ec57600080fd5b8151801515811461150e57600080fd5b803567ffffffffffffffff81168114610f5f57600080fd5b600082601f830112611a2557600080fd5b8135602067ffffffffffffffff821115611a4157611a41611745565b8160051b611a508282016117c2565b9283528481018201928281019087851115611a6a57600080fd5b83870192505b84831015611a8957823582529183019190830190611a70565b979650505050505050565b60006101a08236031215611aa757600080fd5b611aaf611774565b8235815260208301356020820152611ac9604084016119fc565b6040820152611ada606084016119fc565b6060820152611aeb608084016119fc565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff811115611b3657600080fd5b611b4236828701611a14565b828401525050610140611b568185016119fc565b90820152610160611b688482016119fc565b9082015261018092830135928101929092525090565b600082601f830112611b8f57600080fd5b813567ffffffffffffffff811115611ba957611ba9611745565b611bda60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117c2565b818152846020838601011115611bef57600080fd5b816020850160208301376000918101602001919091529392505050565b60006101208236031215611c1f57600080fd5b611c2761179e565b823567ffffffffffffffff80821115611c3f57600080fd5b611c4b36838701611b7e565b83526020850135915080821115611c6157600080fd5b611c6d36838701611b7e565b60208401526040850135915080821115611c8657600080fd5b611c9236838701611b7e565b60408401526060850135915080821115611cab57600080fd5b611cb736838701611b7e565b60608401526080850135915080821115611cd057600080fd5b611cdc36838701611b7e565b608084015260a0850135915080821115611cf557600080fd5b611d0136838701611b7e565b60a084015260c0850135915080821115611d1a57600080fd5b611d2636838701611b7e565b60c084015260e0850135915080821115611d3f57600080fd5b611d4b36838701611b7e565b60e084015261010091508185013581811115611d6657600080fd5b611d7236828801611b7e565b8385015250505080915050919050565b85815260006020608081840152611d9c60808401886114b1565b8381036040850152858152818101600587901b820183018860005b89811015611e62577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112611e1857600080fd5b8b01868101903567ffffffffffffffff811115611e3457600080fd5b803603821315611e4357600080fd5b611e4e858284611675565b958801959450505090850190600101611db7565b5050809450505050508260608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611ebc57611ebc611e7b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006000198203611f0357611f03611e7b565b5060010190565b60008151602080840160005b83811015611f3257815187529582019590820190600101611f16565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d8830152611fe4611fde60da840186611f0a565b84611f0a565b9e9d5050505050505050505050505050565b60008351612008818460208801611485565b83519083019061201c818360208801611485565b01949350505050565b600060ff821660ff84168060ff0382111561204257612042611e7b565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826120885761208861204a565b500490565b60008160001904831182151516156120a7576120a7611e7b565b500290565b600082198211156120bf576120bf611e7b565b500190565b600181815b808511156120ff5781600019048211156120e5576120e5611e7b565b808516156120f257918102915b93841c93908002906120c9565b509250929050565b60008261211657506001610995565b8161212357506000610995565b816001811461213957600281146121435761215f565b6001915050610995565b60ff84111561215457612154611e7b565b50506001821b610995565b5060208310610133831016604e8410600b8410161715612182575081810a610995565b61218c83836120c4565b80600019048211156121a0576121a0611e7b565b029392505050565b600061150e8383612107565b6000826121c3576121c361204a565b50069056fea164736f6c634300080f000a", + "key": "0x3534c27400f8a8bfe6768ec7d02c3f4aa064aecb6e692b56a98db9e45bf79b64" } } } diff --git a/kroma-chain-ops/genesis/testdata/deploy.json b/kroma-chain-ops/genesis/testdata/deploy.json index 9e8102b662..5bc40a68af 100644 --- a/kroma-chain-ops/genesis/testdata/deploy.json +++ b/kroma-chain-ops/genesis/testdata/deploy.json @@ -1,40 +1,42 @@ { - "AssetManager": "0x82e01223d51Eb87e16A03E24687EDF0F294da6f1", - "AssetManagerProxy": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "Colosseum": "0x9E545E3C0baAB3E08CdfD552C960A1050f373042", - "ColosseumProxy": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "KromaMintableERC20Factory": "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", + "AssetManager": "0x2bdCC0de6bE1f7D2ee689a0342D76F52E8EFABa3", + "AssetManagerProxy": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", + "Colosseum": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", + "ColosseumProxy": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "KromaMintableERC20Factory": "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F", "KromaMintableERC20FactoryProxy": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "KromaPortal": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", + "KromaPortal": "0x851356ae760d987E095750cCeb3bC6014560891C", "KromaPortalProxy": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "L1CrossDomainMessenger": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", + "L1CrossDomainMessenger": "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", "L1CrossDomainMessengerProxy": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "L1ERC721Bridge": "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44", + "L1ERC721Bridge": "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", "L1ERC721BridgeProxy": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "L1GovernanceToken": "0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154", - "L1GovernanceTokenProxy": "0x4c5859f0F772848b2D91F1D83E2Fe57935348029", - "L1MintManager": "0x1291Be112d480055DaFd8a610b7d1e203891C274", - "L1StandardBridge": "0x59b670e9fA9D0A427751Af201D676719a970857b", + "L1GovernanceToken": "0xb7278A61aa25c888815aFC32Ad3cC52fF24fE575", + "L1GovernanceTokenProxy": "0x1291Be112d480055DaFd8a610b7d1e203891C274", + "L1MintManager": "0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154", + "L1StandardBridge": "0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1", "L1StandardBridgeProxy": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "L2OutputOracle": "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", + "L2OutputOracle": "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", "L2OutputOracleProxy": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "Poseidon2": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", + "Poseidon2": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", "ProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "SecurityCouncil": "0x36C02dA8a0983159322a80FFE9F24b1acfF8B570", - "SecurityCouncilProxy": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "SecurityCouncilToken": "0x998abeb3E57409262aE5b751f60747921B33613E", - "SecurityCouncilTokenProxy": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "SystemConfig": "0xf5059a5D33d5853360D16C683c16e67980206f36", + "SecurityCouncil": "0x809d550fca64d94Bd9F66E60752A544199cfAC3D", + "SecurityCouncilProxy": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "SecurityCouncilToken": "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49", + "SecurityCouncilTokenProxy": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + "SystemConfig": "0x95401dc811bb5740090279Ba06cfA8fcF6113778", "SystemConfigProxy": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "TimeLock": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", - "TimeLockProxy": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "UpgradeGovernor": "0x9d4454B023096f34B160D6B654540c56A1F81688", - "UpgradeGovernorProxy": "0x9A676e781A523b5d0C0e43731313A708CB607508", - "ValidatorManager": "0x7969c5eD335650692Bc04293B07F5BF2e7A673C0", - "ValidatorManagerProxy": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", - "ValidatorPool": "0x09635F643e140090A9A8Dcd712eD6285858ceBef", + "TimeLock": "0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf", + "TimeLockProxy": "0x9A676e781A523b5d0C0e43731313A708CB607508", + "UpgradeGovernor": "0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00", + "UpgradeGovernorProxy": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", + "ValidatorManager": "0x7bc06c482DEAd17c0e297aFbC32f6e63d3846650", + "ValidatorManagerProxy": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", + "ValidatorPool": "0xc5a5C42992dECbae36851359345FE25997F5C42d", "ValidatorPoolProxy": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "ZKMerkleTrie": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "ZKVerifier": "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", + "ZKMerkleTrie": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", + "ZKProofVerifier": "0xFD471836031dc5108809D173A067e8486B9047A3", + "ZKProofVerifierProxy": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "ZKVerifier": "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB", "ZKVerifierProxy": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" } diff --git a/kroma-chain-ops/genesis/testdata/l1-deployments.json b/kroma-chain-ops/genesis/testdata/l1-deployments.json index 9e8102b662..5bc40a68af 100644 --- a/kroma-chain-ops/genesis/testdata/l1-deployments.json +++ b/kroma-chain-ops/genesis/testdata/l1-deployments.json @@ -1,40 +1,42 @@ { - "AssetManager": "0x82e01223d51Eb87e16A03E24687EDF0F294da6f1", - "AssetManagerProxy": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "Colosseum": "0x9E545E3C0baAB3E08CdfD552C960A1050f373042", - "ColosseumProxy": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "KromaMintableERC20Factory": "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", + "AssetManager": "0x2bdCC0de6bE1f7D2ee689a0342D76F52E8EFABa3", + "AssetManagerProxy": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", + "Colosseum": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", + "ColosseumProxy": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "KromaMintableERC20Factory": "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F", "KromaMintableERC20FactoryProxy": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "KromaPortal": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", + "KromaPortal": "0x851356ae760d987E095750cCeb3bC6014560891C", "KromaPortalProxy": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "L1CrossDomainMessenger": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", + "L1CrossDomainMessenger": "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", "L1CrossDomainMessengerProxy": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "L1ERC721Bridge": "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44", + "L1ERC721Bridge": "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", "L1ERC721BridgeProxy": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "L1GovernanceToken": "0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154", - "L1GovernanceTokenProxy": "0x4c5859f0F772848b2D91F1D83E2Fe57935348029", - "L1MintManager": "0x1291Be112d480055DaFd8a610b7d1e203891C274", - "L1StandardBridge": "0x59b670e9fA9D0A427751Af201D676719a970857b", + "L1GovernanceToken": "0xb7278A61aa25c888815aFC32Ad3cC52fF24fE575", + "L1GovernanceTokenProxy": "0x1291Be112d480055DaFd8a610b7d1e203891C274", + "L1MintManager": "0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154", + "L1StandardBridge": "0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1", "L1StandardBridgeProxy": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "L2OutputOracle": "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", + "L2OutputOracle": "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", "L2OutputOracleProxy": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "Poseidon2": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", + "Poseidon2": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", "ProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "SecurityCouncil": "0x36C02dA8a0983159322a80FFE9F24b1acfF8B570", - "SecurityCouncilProxy": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "SecurityCouncilToken": "0x998abeb3E57409262aE5b751f60747921B33613E", - "SecurityCouncilTokenProxy": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "SystemConfig": "0xf5059a5D33d5853360D16C683c16e67980206f36", + "SecurityCouncil": "0x809d550fca64d94Bd9F66E60752A544199cfAC3D", + "SecurityCouncilProxy": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "SecurityCouncilToken": "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49", + "SecurityCouncilTokenProxy": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + "SystemConfig": "0x95401dc811bb5740090279Ba06cfA8fcF6113778", "SystemConfigProxy": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "TimeLock": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", - "TimeLockProxy": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "UpgradeGovernor": "0x9d4454B023096f34B160D6B654540c56A1F81688", - "UpgradeGovernorProxy": "0x9A676e781A523b5d0C0e43731313A708CB607508", - "ValidatorManager": "0x7969c5eD335650692Bc04293B07F5BF2e7A673C0", - "ValidatorManagerProxy": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", - "ValidatorPool": "0x09635F643e140090A9A8Dcd712eD6285858ceBef", + "TimeLock": "0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf", + "TimeLockProxy": "0x9A676e781A523b5d0C0e43731313A708CB607508", + "UpgradeGovernor": "0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00", + "UpgradeGovernorProxy": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", + "ValidatorManager": "0x7bc06c482DEAd17c0e297aFbC32f6e63d3846650", + "ValidatorManagerProxy": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", + "ValidatorPool": "0xc5a5C42992dECbae36851359345FE25997F5C42d", "ValidatorPoolProxy": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "ZKMerkleTrie": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "ZKVerifier": "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", + "ZKMerkleTrie": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", + "ZKProofVerifier": "0xFD471836031dc5108809D173A067e8486B9047A3", + "ZKProofVerifierProxy": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "ZKVerifier": "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB", "ZKVerifierProxy": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" } diff --git a/kroma-chain-ops/genesis/testdata/test-deploy-config-full.json b/kroma-chain-ops/genesis/testdata/test-deploy-config-full.json index ecb6fd3712..29bf80bdc3 100644 --- a/kroma-chain-ops/genesis/testdata/test-deploy-config-full.json +++ b/kroma-chain-ops/genesis/testdata/test-deploy-config-full.json @@ -95,6 +95,8 @@ "zkVerifierHashScalar": "0xb54142d3712f03ff5c15914a3dce82c0d8a8d537e165e2342048adf14e34aa", "zkVerifierM56Px": "0x175a2d1aaf07ee184a955e35f3deac123ef1088b68c38bace37056dcfc9d304d", "zkVerifierM56Py": "0x150856c3d1750c2578b823cb3c7d74ed3e94c1cfece7e1bfdaaff36eea788fb9", + "zkProofVerifierSP1Verifier": "0x0000000000000000000000000000000000000001", + "zkProofVerifierVKey": "0x0000000000000000000000000000000000000000000000000000000000000001", "governanceTokenNotUseCreate2": true, "governanceTokenProxySalt": "0x0000000000000000000000000000000000000000000000000000004b726f6d61", "mintManagerOwner": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", diff --git a/kroma-validator/challenger.go b/kroma-validator/challenger.go index 117c8d853a..414b6e7fdc 100644 --- a/kroma-validator/challenger.go +++ b/kroma-validator/challenger.go @@ -986,8 +986,6 @@ func (c *Challenger) CancelChallenge(ctx context.Context, outputIndex *big.Int) // ProveFault creates proveFault transaction for invalid output root. // TODO: ProveFault will take long time, so that we may have to handle it carefully. func (c *Challenger) ProveFault(ctx context.Context, outputIndex *big.Int, challenger common.Address, skipSelectFaultPosition bool) (*types.Transaction, error) { - c.log.Info("crafting proveFault tx", "outputIndex", outputIndex, "challenger", challenger) - challenge, err := c.GetChallenge(ctx, outputIndex, challenger) if err != nil { return nil, err @@ -1006,40 +1004,59 @@ func (c *Challenger) ProveFault(ctx context.Context, outputIndex *big.Int, chall blockNumber = new(big.Int).Add(blockNumber, position) } - proof, err := c.PublicInputProof(ctx, blockNumber.Uint64()) - if err != nil { - return nil, fmt.Errorf("failed to get public input proof(fault position blockNumber: %d): %w", blockNumber.Uint64(), err) - } + txOpts := optsutils.NewSimpleTxOpts(ctx, c.cfg.TxManager.From(), c.cfg.TxManager.Signer) - targetBlockNumber := new(big.Int).Add(blockNumber, common.Big1) - cCtx, cCancel := context.WithTimeout(ctx, c.cfg.NetworkTimeout) - defer cCancel() - trace, err := c.l2Client.GetBlockTraceByNumber(cCtx, targetBlockNumber) + header, err := c.l2Client.HeaderByNumber(ctx, blockNumber) if err != nil { - return nil, fmt.Errorf("failed to get block trace(fault position blockNumber: %d): %w", targetBlockNumber.Uint64(), err) + return nil, fmt.Errorf("failed to get block header(fault position blockNumber: %d): %w", blockNumber.Uint64(), err) } - traceBz, err := json.Marshal(trace) - if err != nil { - return nil, fmt.Errorf("failed to marshal block trace(fault position blockNumber: %d): %w", targetBlockNumber.Uint64(), err) - } + // if the src block time is after Kroma MPT time, generate zkVM proof otherwise zkEVM proof + if c.cfg.RollupConfig.IsKromaMPT(header.Time) { + c.log.Info("crafting zkVMProveFault tx", "outputIndex", outputIndex, "challenger", challenger) - fetchResult, err := c.cfg.ProofFetcher.FetchProofAndPair(ctx, string(traceBz)) - if err != nil { - return nil, fmt.Errorf("failed to fetch proof and pair(fault position blockNumber: %d): %w", targetBlockNumber.Uint64(), err) - } + // TODO(seolaoh): add fetching zkVM preimages and proof - txOpts := optsutils.NewSimpleTxOpts(ctx, c.cfg.TxManager.From(), c.cfg.TxManager.Signer) - return c.colosseumContract.ProveFault( - txOpts, - outputIndex, - position, - proof, - fetchResult.Proof, - // NOTE(0xHansLee): the hash of public input (pair[4], pair[5]) is not needed in proving fault. - // It can be calculated using public input sent to colosseum contract. - fetchResult.Pair[:4], - ) + return c.colosseumContract.ProveFaultWithZkVm(txOpts, outputIndex, position, bindings.TypesZkVmProof{}) + } else { + c.log.Info("crafting zkEVMProveFault tx", "outputIndex", outputIndex, "challenger", challenger) + + proof, err := c.PublicInputProof(ctx, blockNumber.Uint64()) + if err != nil { + return nil, fmt.Errorf("failed to get public input proof(fault position blockNumber: %d): %w", blockNumber.Uint64(), err) + } + + targetBlockNumber := new(big.Int).Add(blockNumber, common.Big1) + cCtx, cCancel := context.WithTimeout(ctx, c.cfg.NetworkTimeout) + defer cCancel() + trace, err := c.l2Client.GetBlockTraceByNumber(cCtx, targetBlockNumber) + if err != nil { + return nil, fmt.Errorf("failed to get block trace(fault position blockNumber: %d): %w", targetBlockNumber.Uint64(), err) + } + + traceBz, err := json.Marshal(trace) + if err != nil { + return nil, fmt.Errorf("failed to marshal block trace(fault position blockNumber: %d): %w", targetBlockNumber.Uint64(), err) + } + + fetchResult, err := c.cfg.ProofFetcher.FetchProofAndPair(ctx, string(traceBz)) + if err != nil { + return nil, fmt.Errorf("failed to fetch proof and pair(fault position blockNumber: %d): %w", targetBlockNumber.Uint64(), err) + } + + return c.colosseumContract.ProveFaultWithZkEvm( + txOpts, + outputIndex, + position, + bindings.TypesZkEvmProof{ + PublicInputProof: proof, + Proof: fetchResult.Proof, + // NOTE(0xHansLee): the hash of public input (pair[4], pair[5]) is not needed in proving fault. + // It can be calculated using public input sent to colosseum contract. + Pair: fetchResult.Pair[:4], + }, + ) + } } // IsOutputDeleted checks if the output is deleted. diff --git a/packages/contracts/contracts/L1/Colosseum.sol b/packages/contracts/contracts/L1/Colosseum.sol index 3220108409..3f0109dd91 100644 --- a/packages/contracts/contracts/L1/Colosseum.sol +++ b/packages/contracts/contracts/L1/Colosseum.sol @@ -3,14 +3,11 @@ pragma solidity 0.8.15; import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol"; -import { Hashing } from "../libraries/Hashing.sol"; -import { Predeploys } from "../libraries/Predeploys.sol"; import { Types } from "../libraries/Types.sol"; import { ISemver } from "../universal/ISemver.sol"; -import { IZKMerkleTrie } from "./interfaces/IZKMerkleTrie.sol"; import { L2OutputOracle } from "./L2OutputOracle.sol"; import { SecurityCouncil } from "./SecurityCouncil.sol"; -import { ZKVerifier } from "./ZKVerifier.sol"; +import { ZKProofVerifier } from "./ZKProofVerifier.sol"; contract Colosseum is Initializable, ISemver { /** @@ -58,9 +55,9 @@ contract Colosseum is Initializable, ISemver { L2OutputOracle public immutable L2_ORACLE; /** - * @notice Address of the ZKVerifier. + * @notice Address of the ZKProofVerifier. */ - ZKVerifier public immutable ZK_VERIFIER; + ZKProofVerifier public immutable ZK_PROOF_VERIFIER; /** * @notice The period seconds for which challenges can be created per each output. @@ -83,41 +80,11 @@ contract Colosseum is Initializable, ISemver { */ uint256 public immutable L2_ORACLE_SUBMISSION_INTERVAL; - /** - * @notice The dummy transaction hash. This is used to pad if the - * number of transactions is less than MAX_TXS. This is same as: - * unsignedTx = { - * nonce: 0, - * gasLimit: 0, - * gasPrice: 0, - * to: address(0), - * value: 0, - * data: '0x', - * chainId: CHAIN_ID, - * } - * signature = sign(unsignedTx, 0x1) - * dummyHash = keccak256(rlp({ - * ...unsignedTx, - * signature, - * })) - */ - bytes32 public immutable DUMMY_HASH; - - /** - * @notice The maximum number of transactions - */ - uint256 public immutable MAX_TXS; - /** * @notice Address that has the ability to approve the challenge. */ address public immutable SECURITY_COUNCIL; - /** - * @notice Address that has the ability to verify the merkle proof. - */ - address public immutable ZK_MERKLE_TRIE; - /** * @notice Length of segment array for each turn. */ @@ -302,21 +269,6 @@ contract Colosseum is Initializable, ISemver { */ error L1Reorged(); - /** - * @notice Reverts when the public input is invalid. - */ - error InvalidPublicInput(); - - /** - * @notice Reverts when the ZK proof is invalid. - */ - error InvalidZKProof(); - - /** - * @notice Reverts when the inclusion proof is invalid. - */ - error InvalidInclusionProof(); - /** * @notice Reverts when segments length is invalid. */ @@ -333,20 +285,14 @@ contract Colosseum is Initializable, ISemver { error LastSegmentMatched(); /** - * @notice Reverts when the block hash is mismatched between source and destination output root - * proof. - */ - error BlockHashMismatchedBtwSrcAndDst(); - - /** - * @notice Reverts when the block hash is mismatched. + * @notice Reverts when the public input is already verified. */ - error BlockHashMismatched(); + error AlreadyVerifiedPublicInput(); /** - * @notice Reverts when the state root is mismatched. + * @notice Reverts when the public input hash is invalid. */ - error StateRootMismatched(); + error InvalidPublicInputHash(); /** * @notice Reverts when turn is invalid. @@ -360,48 +306,39 @@ contract Colosseum is Initializable, ISemver { /** * @notice Semantic version. - * @custom:semver 1.1.0 + * @custom:semver 2.0.0 */ - string public constant version = "1.1.0"; + string public constant version = "2.0.0"; /** * @notice Constructs the Colosseum contract. * * @param _l2Oracle Address of the L2OutputOracle contract. - * @param _zkVerifier Address of the ZKVerifier contract. + * @param _zkProofVerifier Address of the ZKProofVerifier contract. * @param _submissionInterval Interval in blocks at which checkpoints must be submitted. * @param _creationPeriodSeconds Seconds The period seconds for which challenges can be created per each output. * @param _bisectionTimeout Timeout seconds for the bisection. * @param _provingTimeout Timeout seconds for the proving. - * @param _dummyHash Dummy hash. - * @param _maxTxs Number of max transactions per block. * @param _segmentsLengths Lengths of segments. * @param _securityCouncil Address of security council. - * @param _zkMerkleTrie Address of zk merkle trie. */ constructor( L2OutputOracle _l2Oracle, - ZKVerifier _zkVerifier, + ZKProofVerifier _zkProofVerifier, uint256 _submissionInterval, uint256 _creationPeriodSeconds, uint256 _bisectionTimeout, uint256 _provingTimeout, - bytes32 _dummyHash, - uint256 _maxTxs, uint256[] memory _segmentsLengths, - address _securityCouncil, - address _zkMerkleTrie + address _securityCouncil ) { L2_ORACLE = _l2Oracle; - ZK_VERIFIER = _zkVerifier; + ZK_PROOF_VERIFIER = _zkProofVerifier; CREATION_PERIOD_SECONDS = _creationPeriodSeconds; BISECTION_TIMEOUT = _bisectionTimeout; PROVING_TIMEOUT = _provingTimeout; L2_ORACLE_SUBMISSION_INTERVAL = _submissionInterval; - DUMMY_HASH = _dummyHash; - MAX_TXS = _maxTxs; SECURITY_COUNCIL = _securityCouncil; - ZK_MERKLE_TRIE = _zkMerkleTrie; initialize(_segmentsLengths); } @@ -498,6 +435,7 @@ contract Colosseum is Initializable, ISemver { challenge.turn = TURN_INIT; challenge.asserter = targetOutput.submitter; challenge.challenger = msg.sender; + challenge.l1Head = blockhash(block.number - 1); _updateTimeout(challenge); emit ChallengeCreated(_outputIndex, targetOutput.submitter, msg.sender, block.timestamp); @@ -557,99 +495,37 @@ contract Colosseum is Initializable, ISemver { } /** - * @notice Proves that a specific output is invalid using ZKP. - * This function can only be called in the READY_TO_PROVE and ASSERTER_TIMEOUT states. + * @notice Proves that a specific output is invalid using zkEVM proof. + * This function can only be called in the READY_TO_PROVE and ASSERTER_TIMEOUT statuses. * * @param _outputIndex Index of the L2 checkpoint output. * @param _pos Position of the last valid segment. - * @param _proof Proof for public input validation. - * @param _zkproof Halo2 proofs composed of points and scalars. - * See https://zcash.github.io/halo2/design/implementation/proofs.html. - * @param _pair Aggregated multi-opening proofs and public inputs. (Currently only 2 public inputs) + * @param _zkEvmProof The public input and proof using zkEVM. */ - function proveFault( + function proveFaultWithZkEvm( uint256 _outputIndex, uint256 _pos, - Types.PublicInputProof calldata _proof, - uint256[] calldata _zkproof, - uint256[] calldata _pair + Types.ZkEvmProof calldata _zkEvmProof ) external { - _checkOutputNotFinalized(_outputIndex); - - Types.Challenge storage challenge = challenges[_outputIndex][msg.sender]; - ChallengeStatus status = _challengeStatus(challenge); - - if (_cancelIfOutputDeleted(_outputIndex, challenge.challenger, status)) { - return; - } - - if (status != ChallengeStatus.READY_TO_PROVE && status != ChallengeStatus.ASSERTER_TIMEOUT) - revert ImproperChallengeStatus(); - - _validateOutputRootProof( - _pos, - challenge, - Hashing.hashOutputRootProof(_proof.srcOutputRootProof), - Hashing.hashOutputRootProof(_proof.dstOutputRootProof), - _proof.srcOutputRootProof, - _proof.dstOutputRootProof - ); - _validatePublicInput(_proof.dstOutputRootProof, _proof.publicInput, _proof.rlps); - _validateWithdrawalStorageRoot( - _proof.merkleProof, - _proof.l2ToL1MessagePasserBalance, - _proof.l2ToL1MessagePasserCodeHash, - _proof.dstOutputRootProof.messagePasserStorageRoot, - _proof.dstOutputRootProof.stateRoot - ); - - bytes32 publicInputHash = _hashPublicInput( - _proof.srcOutputRootProof.stateRoot, - _proof.publicInput - ); - - if (verifiedPublicInputs[publicInputHash]) revert InvalidPublicInput(); - - if (!ZK_VERIFIER.verify(_zkproof, _pair, publicInputHash)) revert InvalidZKProof(); - emit Proven(_outputIndex, msg.sender, block.timestamp); - - // Scope to call the security council, to avoid stack too deep. - { - Types.CheckpointOutput memory output = L2_ORACLE.getL2Output(_outputIndex); - - bytes memory callbackData = abi.encodeWithSelector( - this.dismissChallenge.selector, - _outputIndex, - msg.sender, - challenge.asserter, - output.outputRoot, - publicInputHash - ); - - // Request outputRoot validation to security council - SecurityCouncil(SECURITY_COUNCIL).requestValidation( - output.outputRoot, - output.l2BlockNumber, - callbackData - ); - - deletedOutputs[_outputIndex] = output; - } - - // Switch validator system after validator pool contract terminated. - if (L2_ORACLE.VALIDATOR_POOL().isTerminated(_outputIndex)) { - // Slash the asseter's asset and move it to pending challenge reward for the output. - L2_ORACLE.VALIDATOR_MANAGER().slash(_outputIndex, msg.sender, challenge.asserter); - } else { - // The challenger's bond is also included in the bond for that output. - L2_ORACLE.VALIDATOR_POOL().increaseBond(_outputIndex, msg.sender); - } - - verifiedPublicInputs[publicInputHash] = true; - delete challenges[_outputIndex][msg.sender]; + Types.ZkVmProof memory emptyZkVmProof; + _proveFault(_outputIndex, _pos, false, _zkEvmProof, emptyZkVmProof); + } - // Delete output root. - L2_ORACLE.replaceL2Output(_outputIndex, DELETED_OUTPUT_ROOT, msg.sender); + /** + * @notice Proves that a specific output is invalid using zkVM proof. + * This function can only be called in the READY_TO_PROVE and ASSERTER_TIMEOUT statuses. + * + * @param _outputIndex Index of the L2 checkpoint output. + * @param _pos Position of the last valid segment. + * @param _zkVmProof The public input and proof using zkVM. + */ + function proveFaultWithZkVm( + uint256 _outputIndex, + uint256 _pos, + Types.ZkVmProof calldata _zkVmProof + ) external { + Types.ZkEvmProof memory emptyZkEvmProof; + _proveFault(_outputIndex, _pos, true, emptyZkEvmProof, _zkVmProof); } /** @@ -709,7 +585,7 @@ contract Colosseum is Initializable, ISemver { _challenger != L2_ORACLE.getSubmitter(_outputIndex) || _asserter != deletedOutputs[_outputIndex].submitter ) revert InvalidAddressGiven(); - if (!verifiedPublicInputs[_publicInputHash]) revert InvalidPublicInput(); + if (!verifiedPublicInputs[_publicInputHash]) revert InvalidPublicInputHash(); verifiedPublicInputs[_publicInputHash] = false; delete deletedOutputs[_outputIndex]; @@ -822,96 +698,97 @@ contract Colosseum is Initializable, ISemver { } /** - * @notice Checks if the L2ToL1MesagePasser account is included in the given state root. + * @notice Proves that a specific output is invalid using ZKP. + * Note that if _isZkVm is true, _proveFault is verified based on zkVM, otherwise zkEVM. * - * @param _merkleProof Merkle proof of L2ToL1MessagePasser account against the state root. - * @param _l2ToL1MessagePasserBalance Balance of the L2ToL1MessagePasser account. - * @param _l2ToL1MessagePasserCodeHash Codehash of the L2ToL1MessagePasser account. - * @param _messagePasserStorageRoot Storage root of the L2ToL1MessagePasser account. - * @param _stateRoot State root. - */ - function _validateWithdrawalStorageRoot( - bytes[] calldata _merkleProof, - bytes32 _l2ToL1MessagePasserBalance, - bytes32 _l2ToL1MessagePasserCodeHash, - bytes32 _messagePasserStorageRoot, - bytes32 _stateRoot - ) internal view { - // TODO(chokobole): Can we fix the codeHash? - bytes memory l2ToL1MessagePasserAccount = abi.encodePacked( - uint256(0), // nonce - _l2ToL1MessagePasserBalance, // balance, - _l2ToL1MessagePasserCodeHash, // codeHash, - _messagePasserStorageRoot // storage root - ); + * @param _outputIndex Index of the L2 checkpoint output. + * @param _pos Position of the last valid segment. + * @param _isZkVm If zkEVM proof is given or not. + * @param _zkEvmProof The public input and proof using zkEVM. + * @param _zkVmProof The public input and proof using zkVM. + */ + function _proveFault( + uint256 _outputIndex, + uint256 _pos, + bool _isZkVm, + Types.ZkEvmProof memory _zkEvmProof, + Types.ZkVmProof memory _zkVmProof + ) private { + _checkOutputNotFinalized(_outputIndex); - if ( - !IZKMerkleTrie(ZK_MERKLE_TRIE).verifyInclusionProof( - bytes32(bytes20(Predeploys.L2_TO_L1_MESSAGE_PASSER)), - l2ToL1MessagePasserAccount, - _merkleProof, - _stateRoot - ) - ) revert InvalidInclusionProof(); - } + Types.Challenge storage challenge = challenges[_outputIndex][msg.sender]; + ChallengeStatus status = _challengeStatus(challenge); - /** - * @notice Validates the output root proofs. - * - * @param _pos Position of the last valid segment. - * @param _challenge The challenge data. - * @param _srcOutputRoot The source output root. - * @param _dstOutputRoot The destination output root. - * @param _srcOutputRootProof Proof of the source output root. - * @param _dstOutputRootProof Proof of the destination output root. - */ - function _validateOutputRootProof( - uint256 _pos, - Types.Challenge storage _challenge, - bytes32 _srcOutputRoot, - bytes32 _dstOutputRoot, - Types.OutputRootProof calldata _srcOutputRootProof, - Types.OutputRootProof calldata _dstOutputRootProof - ) internal view { - if (_challenge.segments[_pos] != _srcOutputRoot) revert FirstSegmentMismatched(); + if (_cancelIfOutputDeleted(_outputIndex, challenge.challenger, status)) { + return; + } + if (status != ChallengeStatus.READY_TO_PROVE && status != ChallengeStatus.ASSERTER_TIMEOUT) + revert ImproperChallengeStatus(); + + bytes32 srcSegment = challenge.segments[_pos]; // If asserter timeout, the bisection of segments may not have ended. // Therefore, segment validation only proceeds when bisection is not possible. - if (!_isAbleToBisect(_challenge)) { - if (_challenge.segments[_pos + 1] == _dstOutputRoot) revert LastSegmentMatched(); + bytes32 dstSegment; + if (!_isAbleToBisect(challenge)) dstSegment = challenge.segments[_pos + 1]; + + // Verify ZK proof according to the given proof type. + bytes32 publicInputHash; + if (_isZkVm) { + publicInputHash = ZK_PROOF_VERIFIER.verifyZkVmProof( + _zkVmProof, + srcSegment, + dstSegment, + challenge.l1Head + ); + } else { + publicInputHash = ZK_PROOF_VERIFIER.verifyZkEvmProof( + _zkEvmProof, + srcSegment, + dstSegment + ); + } + if (verifiedPublicInputs[publicInputHash]) revert AlreadyVerifiedPublicInput(); + + emit Proven(_outputIndex, msg.sender, block.timestamp); + + // Scope to call the security council, to avoid stack too deep. + { + Types.CheckpointOutput memory output = L2_ORACLE.getL2Output(_outputIndex); + + bytes memory callbackData = abi.encodeWithSelector( + this.dismissChallenge.selector, + _outputIndex, + msg.sender, + challenge.asserter, + output.outputRoot, + publicInputHash + ); + + // Request outputRoot validation to security council + SecurityCouncil(SECURITY_COUNCIL).requestValidation( + output.outputRoot, + output.l2BlockNumber, + callbackData + ); + + deletedOutputs[_outputIndex] = output; } - // Note that the connectivity between outputs is verified using nextBlockHash only when output has nextBlockHash - // (KromaOutputV0). - if (_srcOutputRootProof.nextBlockHash != bytes32(0)) { - if (_srcOutputRootProof.nextBlockHash != _dstOutputRootProof.latestBlockhash) - revert BlockHashMismatchedBtwSrcAndDst(); + // Switch validator system after validator pool contract terminated. + if (L2_ORACLE.VALIDATOR_POOL().isTerminated(_outputIndex)) { + // Slash the asseter's asset and move it to pending challenge reward for the output. + L2_ORACLE.VALIDATOR_MANAGER().slash(_outputIndex, msg.sender, challenge.asserter); + } else { + // The challenger's bond is also included in the bond for that output. + L2_ORACLE.VALIDATOR_POOL().increaseBond(_outputIndex, msg.sender); } - } - /** - * @notice Checks if the public input is valid. - * Reverts if public input is invalid. - * - * @param _dstOutputRootProof Proof of the destination output root. - * @param _publicInput Ingredients to compute the public input used by ZK proof verification. - * @param _rlps Pre-encoded RLPs to compute the latest block hash of the destination output root - * proof. - */ - function _validatePublicInput( - Types.OutputRootProof calldata _dstOutputRootProof, - Types.PublicInput calldata _publicInput, - Types.BlockHeaderRLP calldata _rlps - ) internal pure { - // TODO(chokobole): check withdrawal storage root of _dstOutputRootProof against state root of _dstOutputRootProof. - if (_publicInput.stateRoot != _dstOutputRootProof.stateRoot) revert StateRootMismatched(); - - // parentBeaconRoot is non-zero for Cancun block - bytes32 blockHash = _publicInput.parentBeaconRoot != bytes32(0) - ? Hashing.hashBlockHeaderCancun(_publicInput, _rlps) - : Hashing.hashBlockHeaderShanghai(_publicInput, _rlps); - - if (_dstOutputRootProof.latestBlockhash != blockHash) revert BlockHashMismatched(); + verifiedPublicInputs[publicInputHash] = true; + delete challenges[_outputIndex][msg.sender]; + + // Delete output root. + L2_ORACLE.replaceL2Output(_outputIndex, DELETED_OUTPUT_ROOT, msg.sender); } /** @@ -988,35 +865,6 @@ contract Colosseum is Initializable, ISemver { } } - /** - * @notice Hashes the public input with padding dummy transactions. - * - * @param _prevStateRoot Previous state root. - * @param _publicInput Ingredients to compute the public input used by ZK proof verification. - * - * @return Hash of public input. - */ - function _hashPublicInput( - bytes32 _prevStateRoot, - Types.PublicInput calldata _publicInput - ) internal view returns (bytes32) { - bytes32[] memory dummyHashes; - if (_publicInput.txHashes.length < MAX_TXS) { - dummyHashes = Hashing.generateDummyHashes( - DUMMY_HASH, - MAX_TXS - _publicInput.txHashes.length - ); - } - - // NOTE(chokobole): We cannot calculate the Ethereum transaction root solely - // based on transaction hashes. It is necessary to have access to the original - // transactions. Considering the imposed constraints and the difficulty - // of providing a preimage that would generate the desired public input hash - // from an attacker's perspective, we have decided to omit the verification - // using the transaction root. - return Hashing.hashPublicInput(_prevStateRoot, _publicInput, dummyHashes); - } - /** * @notice Returns the number of L2 blocks for the next turn. * diff --git a/packages/contracts/contracts/L1/ZKProofVerifier.sol b/packages/contracts/contracts/L1/ZKProofVerifier.sol new file mode 100644 index 0000000000..47cd64cf32 --- /dev/null +++ b/packages/contracts/contracts/L1/ZKProofVerifier.sol @@ -0,0 +1,307 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +// Contracts +import { ZKVerifier } from "contracts/L1/ZKVerifier.sol"; + +// Libraries +import { Hashing } from "contracts/libraries/Hashing.sol"; +import { Predeploys } from "contracts/libraries/Predeploys.sol"; +import { Types } from "contracts/libraries/Types.sol"; + +// Interfaces +import { ISemver } from "contracts/universal/ISemver.sol"; +import { ISP1Verifier } from "contracts/vendor/ISP1Verifier.sol"; +import { IZKMerkleTrie } from "contracts/L1/interfaces/IZKMerkleTrie.sol"; + +/// @custom:proxied true +/// @title ZKProofVerifier +/// @notice The ZKProofVerifier contract verifies public inputs and corresponding ZK proofs. +/// Currently it verifies zkEVM proofs using ZKVerifier contract, and zkVM proofs using +/// SP1Verifier contract. +contract ZKProofVerifier is ISemver { + /// @notice Address of the ZKVerifier contract. + ZKVerifier internal immutable ZK_VERIFIER; + + /// @notice The dummy transaction hash for zkEVM proofs. This is used to pad if the + /// number of transactions is less than MAX_TXS. This is same as: + /// unsignedTx = { + /// nonce: 0, + /// gasLimit: 0, + /// gasPrice: 0, + /// to: address(0), + /// value: 0, + /// data: '0x', + /// chainId: CHAIN_ID, + /// } + /// signature = sign(unsignedTx, 0x1) + /// dummyHash = keccak256(rlp({ + /// ...unsignedTx, + /// signature, + /// })) + bytes32 internal immutable DUMMY_HASH; + + /// @notice The maximum number of transactions for zkEVM proofs. + uint256 internal immutable MAX_TXS; + + /// @notice Address that has the ability to verify the merkle proof in ZKTrie. + address internal immutable ZK_MERKLE_TRIE; + + /// @notice Address of the SP1VerifierGateway contract. + ISP1Verifier internal immutable SP1_VERIFIER; + + /// @notice The verification key for the zkVM program. + bytes32 internal immutable ZKVM_PROGRAM_V_KEY; + + /// @notice Reverts when the public input is invalid. + error InvalidPublicInput(); + + /// @notice Reverts when the ZK proof is invalid. + error InvalidZkProof(); + + /// @notice Reverts when the inclusion proof is invalid. + error InvalidInclusionProof(); + + /// @notice Reverts when the block hash is mismatched between source and destination output root + /// proof. (only for zkEVM proof) + error BlockHashMismatchedBtwSrcAndDst(); + + /// @notice Reverts when the source output root is mismatched. + error SrcOutputMismatched(); + + /// @notice Reverts when the destination output root is matched. (only for fault proof) + error DstOutputMatched(); + + /// @notice Reverts when the block hash is mismatched. + error BlockHashMismatched(); + + /// @notice Reverts when the state root is mismatched. + error StateRootMismatched(); + + /// @notice Semantic version. + /// @custom:semver 1.0.0 + string public constant version = "1.0.0"; + + /// @notice Constructs the ZKProofVerifier contract. + /// @param _zkVerifier Address of the ZKVerifier contract. + /// @param _dummyHash Dummy hash for zkEVM proofs. + /// @param _maxTxs Number of max transactions per block for zkEVM proofs. + /// @param _zkMerkleTrie Address of the ZKMerkleTrie contract. + /// @param _sp1Verifier Address of the SP1VerifierGateway contract. + /// @param _zkVmProgramVKey The verification key for the zkVM program. + constructor( + ZKVerifier _zkVerifier, + bytes32 _dummyHash, + uint256 _maxTxs, + address _zkMerkleTrie, + ISP1Verifier _sp1Verifier, + bytes32 _zkVmProgramVKey + ) { + ZK_VERIFIER = _zkVerifier; + DUMMY_HASH = _dummyHash; + MAX_TXS = _maxTxs; + ZK_MERKLE_TRIE = _zkMerkleTrie; + SP1_VERIFIER = _sp1Verifier; + ZKVM_PROGRAM_V_KEY = _zkVmProgramVKey; + } + + /// @notice Getter for the address of ZKVerifier contract. + function zkVerifier() external view returns (ZKVerifier) { + return ZK_VERIFIER; + } + + /// @notice Getter for the dummy transaction hash for zkEVM proofs. + function dummyHash() external view returns (bytes32) { + return DUMMY_HASH; + } + + /// @notice Getter for the maximum number of transactions for zkEVM proofs. + function maxTxs() external view returns (uint256) { + return MAX_TXS; + } + + /// @notice Getter for the address of ZKMerkleTrie contract. + function zkMerkleTrie() external view returns (address) { + return ZK_MERKLE_TRIE; + } + + /// @notice Getter for the address of SP1VerifierGateway contract. + function sp1Verifier() external view returns (ISP1Verifier) { + return SP1_VERIFIER; + } + + /// @notice Getter for the verification key for the zkVM program. + function zkVmProgramVKey() external view returns (bytes32) { + return ZKVM_PROGRAM_V_KEY; + } + + /// @notice Verifies zkEVM public inputs and proof. + /// @param _zkEvmProof The public input and proof using zkEVM. + /// @param _storedSrcOutput The stored source output root. + /// @param _storedDstOutput The stored destination output root. It will only be used for fault proving. + /// @return publicInputHash_ Hash of public input. + function verifyZkEvmProof( + Types.ZkEvmProof calldata _zkEvmProof, + bytes32 _storedSrcOutput, + bytes32 _storedDstOutput + ) external view returns (bytes32 publicInputHash_) { + Types.PublicInputProof calldata publicInputProof = _zkEvmProof.publicInputProof; + + if ( + publicInputProof.srcOutputRootProof.nextBlockHash != + publicInputProof.dstOutputRootProof.latestBlockhash + ) revert BlockHashMismatchedBtwSrcAndDst(); + + _validatePublicInputOutput( + _storedSrcOutput, + _storedDstOutput, + Hashing.hashOutputRootProof(publicInputProof.srcOutputRootProof), + Hashing.hashOutputRootProof(publicInputProof.dstOutputRootProof) + ); + _validateZkEvmPublicInput( + publicInputProof.dstOutputRootProof, + publicInputProof.publicInput, + publicInputProof.rlps + ); + _validateWithdrawalStorageRoot( + publicInputProof.merkleProof, + publicInputProof.l2ToL1MessagePasserBalance, + publicInputProof.l2ToL1MessagePasserCodeHash, + publicInputProof.dstOutputRootProof.messagePasserStorageRoot, + publicInputProof.dstOutputRootProof.stateRoot + ); + + publicInputHash_ = _hashZkEvmPublicInput( + publicInputProof.srcOutputRootProof.stateRoot, + publicInputProof.publicInput + ); + + if (!ZK_VERIFIER.verify(_zkEvmProof.proof, _zkEvmProof.pair, publicInputHash_)) + revert InvalidZkProof(); + } + + /// @notice Verifies zkVM public inputs and proof. + /// @param _zkVmProof The public input and proof using zkVM. + /// @param _storedSrcOutput The stored source output root. + /// @param _storedDstOutput The stored destination output root. It will only be used for fault proving. + /// @param _storedL1Head The stored L1 block hash. + /// @return publicInputHash_ Hash of public input. + function verifyZkVmProof( + Types.ZkVmProof calldata _zkVmProof, + bytes32 _storedSrcOutput, + bytes32 _storedDstOutput, + bytes32 _storedL1Head + ) external view returns (bytes32 publicInputHash_) { + _validatePublicInputOutput( + _storedSrcOutput, + _storedDstOutput, + bytes32(_zkVmProof.publicValues[:32]), + bytes32(_zkVmProof.publicValues[32:64]) + ); + + if (bytes32(_zkVmProof.publicValues[64:96]) != _storedL1Head) revert InvalidPublicInput(); + + SP1_VERIFIER.verifyProof( + ZKVM_PROGRAM_V_KEY, + _zkVmProof.publicValues, + _zkVmProof.proofBytes + ); + + publicInputHash_ = keccak256(_zkVmProof.publicValues); + } + + /// @notice Checks if the public input outputs are valid. Reverts if they are invalid. + /// @param _storedSrcOutput The stored source output root. + /// @param _storedDstOutput The stored destination output root. + /// @param _publicInputSrcOutput The source output root of public input. + /// @param _publicInputDstOutput The destination output root of public input. + function _validatePublicInputOutput( + bytes32 _storedSrcOutput, + bytes32 _storedDstOutput, + bytes32 _publicInputSrcOutput, + bytes32 _publicInputDstOutput + ) internal pure { + if (_storedSrcOutput != _publicInputSrcOutput) revert SrcOutputMismatched(); + // If _storedDstOutput is non-zero, it is fault proving case, not validity proving. + // Then assert _publicInputDstOutput is different with on-chain stored destination output. + if (_storedDstOutput != bytes32(0)) { + if (_storedDstOutput == _publicInputDstOutput) revert DstOutputMatched(); + } + } + + /// @notice Checks if the public input of zkEVM proof is valid. Reverts if it is invalid. + /// @param _dstOutputRootProof Proof of the destination output root. + /// @param _publicInput Ingredients to compute the public input used by zkEVM proof verification. + /// @param _rlps Pre-encoded RLPs to compute the latest block hash of the destination output + /// root proof. + function _validateZkEvmPublicInput( + Types.OutputRootProof calldata _dstOutputRootProof, + Types.PublicInput calldata _publicInput, + Types.BlockHeaderRLP calldata _rlps + ) internal pure { + if (_publicInput.stateRoot != _dstOutputRootProof.stateRoot) revert StateRootMismatched(); + + // parentBeaconRoot is non-zero for Cancun block + bytes32 blockHash = _publicInput.parentBeaconRoot != bytes32(0) + ? Hashing.hashBlockHeaderCancun(_publicInput, _rlps) + : Hashing.hashBlockHeaderShanghai(_publicInput, _rlps); + + if (_dstOutputRootProof.latestBlockhash != blockHash) revert BlockHashMismatched(); + } + + /// @notice Checks if the L2ToL1MesagePasser account is included in the given state root. + /// @param _merkleProof Merkle proof of L2ToL1MessagePasser account against the state root. + /// @param _l2ToL1MessagePasserBalance Balance of the L2ToL1MessagePasser account. + /// @param _l2ToL1MessagePasserCodeHash Codehash of the L2ToL1MessagePasser account. + /// @param _messagePasserStorageRoot Storage root of the L2ToL1MessagePasser account. + /// @param _stateRoot State root. + function _validateWithdrawalStorageRoot( + bytes[] calldata _merkleProof, + bytes32 _l2ToL1MessagePasserBalance, + bytes32 _l2ToL1MessagePasserCodeHash, + bytes32 _messagePasserStorageRoot, + bytes32 _stateRoot + ) internal view { + // TODO(chokobole): Can we fix the codeHash? + bytes memory l2ToL1MessagePasserAccount = abi.encodePacked( + uint256(0), // nonce + _l2ToL1MessagePasserBalance, // balance, + _l2ToL1MessagePasserCodeHash, // codeHash, + _messagePasserStorageRoot // storage root + ); + + if ( + !IZKMerkleTrie(ZK_MERKLE_TRIE).verifyInclusionProof( + bytes32(bytes20(Predeploys.L2_TO_L1_MESSAGE_PASSER)), + l2ToL1MessagePasserAccount, + _merkleProof, + _stateRoot + ) + ) revert InvalidInclusionProof(); + } + + /// @notice Hashes the public input for zkEVM proof with padding dummy transactions. + /// @param _prevStateRoot Previous state root. + /// @param _publicInput Ingredients to compute the public input used by zkEVM proof verification. + /// @return Hash of public input for zkEVM proof. + function _hashZkEvmPublicInput( + bytes32 _prevStateRoot, + Types.PublicInput calldata _publicInput + ) internal view returns (bytes32) { + bytes32[] memory dummyHashes; + if (_publicInput.txHashes.length < MAX_TXS) { + dummyHashes = Hashing.generateDummyHashes( + DUMMY_HASH, + MAX_TXS - _publicInput.txHashes.length + ); + } + + // NOTE(chokobole): We cannot calculate the Ethereum transaction root solely + // based on transaction hashes. It is necessary to have access to the original + // transactions. Considering the imposed constraints and the difficulty + // of providing a preimage that would generate the desired public input hash + // from an attacker's perspective, we have decided to omit the verification + // using the transaction root. + return Hashing.hashZkEvmPublicInput(_prevStateRoot, _publicInput, dummyHashes); + } +} diff --git a/packages/contracts/contracts/libraries/Hashing.sol b/packages/contracts/contracts/libraries/Hashing.sol index 7ffe7a4949..6a93b1e117 100644 --- a/packages/contracts/contracts/libraries/Hashing.sol +++ b/packages/contracts/contracts/libraries/Hashing.sol @@ -244,15 +244,15 @@ library Hashing { } /** - * @notice Hashes the various elements of a public input into a public input hash. + * @notice Hashes the various elements of a public input into a public input hash for zkEVM proof. * * @param _prevStateRoot Previous state root. * @param _publicInput Public input which should be hashed to a public input hash. * @param _dummyHashes Dummy hashes returned from generateDummyHashes(). * - * @return Hashed block header. + * @return Hash of public input for zkEVM proof. */ - function hashPublicInput( + function hashZkEvmPublicInput( bytes32 _prevStateRoot, Types.PublicInput memory _publicInput, bytes32[] memory _dummyHashes diff --git a/packages/contracts/contracts/libraries/Types.sol b/packages/contracts/contracts/libraries/Types.sol index 86f7595a49..9bd054dd39 100644 --- a/packages/contracts/contracts/libraries/Types.sol +++ b/packages/contracts/contracts/libraries/Types.sol @@ -42,7 +42,8 @@ library Types { } /** - * @notice Struct representing the elements that are hashed together to generate a public input. + * @notice Struct representing the elements that are hashed together to generate a public input + * for zkEVM proof. * * @custom:field blockHash The hash of the block. * @custom:field parentHash The hash of the previous block. @@ -155,6 +156,7 @@ library Types { * @custom:field segments Array of the segment. * @custom:field segStart The L2 block number of the first segment. * @custom:field segSize The number of L2 blocks. + * @custom:field l1Head Parent L1 block hash at the challenge creation time. */ struct Challenge { uint8 turn; @@ -164,6 +166,7 @@ library Types { bytes32[] segments; uint256 segSize; uint256 segStart; + bytes32 l1Head; } /** @@ -204,11 +207,12 @@ library Types { } /** - * @notice Struct representing the data for verifying the public input. + * @notice Struct representing the data for verifying the public input of zkEVM proof. * * @custom:field srcOutputRootProof Proof of the source output root. * @custom:field dstOutputRootProof Proof of the destination output root. - * @custom:field publicInput Ingredients to compute the public input used by ZK proof verification. + * @custom:field publicInput Ingredients to compute the public input used by + * zkEVM proof verification. * @custom:field rlps Pre-encoded RLPs to compute the next block hash * of the source output root proof. * @custom:field l2ToL1MessagePasserBalance Balance of the L2ToL1MessagePasser account. @@ -224,4 +228,31 @@ library Types { bytes32 l2ToL1MessagePasserCodeHash; bytes[] merkleProof; } + + /** + * @notice Struct representing zkEVM public input and proof. + * + * @param publicInputProof Data for verifying the public input. + * @param proof Halo2 proofs composed of points and scalars. + * See https://zcash.github.io/halo2/design/implementation/proofs.html. + * @param pair Aggregated multi-opening proofs and public inputs. + * (Currently only 2 public inputs) + */ + struct ZkEvmProof { + PublicInputProof publicInputProof; + uint256[] proof; + uint256[] pair; + } + + /** + * @notice Struct representing zkVM public input and proof. + * + * @param publicValues The public values concatenated. + * (Currently 3 public inputs: bytes32 srcOutputRoot, bytes32 dstOutputRoot, bytes32 l1Head) + * @param proofBytes The proof of the program execution the SP1 zkVM encoded as bytes. + */ + struct ZkVmProof { + bytes publicValues; + bytes proofBytes; + } } diff --git a/packages/contracts/contracts/test/BenchmarkTest.t.sol b/packages/contracts/contracts/test/BenchmarkTest.t.sol index 68ebaf049b..477586709c 100644 --- a/packages/contracts/contracts/test/BenchmarkTest.t.sol +++ b/packages/contracts/contracts/test/BenchmarkTest.t.sol @@ -7,6 +7,7 @@ import { Vm } from "forge-std/Vm.sol"; import { ResourceMetering } from "../L1/ResourceMetering.sol"; import { CrossDomainMessenger } from "../universal/CrossDomainMessenger.sol"; +import { Types } from "../libraries/Types.sol"; import "./CommonTest.t.sol"; // Free function for setting the prevBaseFee param in the KromaPortal. diff --git a/packages/contracts/contracts/test/Colosseum.t.sol b/packages/contracts/contracts/test/Colosseum.t.sol index 02a020c0e1..987ebb0937 100644 --- a/packages/contracts/contracts/test/Colosseum.t.sol +++ b/packages/contracts/contracts/test/Colosseum.t.sol @@ -2,12 +2,13 @@ pragma solidity 0.8.15; import { Types } from "../libraries/Types.sol"; +import { ISP1Verifier } from "../vendor/ISP1Verifier.sol"; import { IValidatorManager } from "../L1/interfaces/IValidatorManager.sol"; import { Colosseum } from "../L1/Colosseum.sol"; import { L2OutputOracle } from "../L1/L2OutputOracle.sol"; import { ValidatorPool } from "../L1/ValidatorPool.sol"; +import { ZKProofVerifier } from "../L1/ZKProofVerifier.sol"; import { ZKVerifier } from "../L1/ZKVerifier.sol"; -import { Hashing } from "../libraries/Hashing.sol"; import { Proxy } from "../universal/Proxy.sol"; import { ColosseumTestData } from "./testdata/ColosseumTestData.sol"; import { Colosseum_Initializer } from "./CommonTest.t.sol"; @@ -16,29 +17,23 @@ import { MockL2OutputOracle } from "./ValidatorManager.t.sol"; contract MockColosseum is Colosseum { constructor( L2OutputOracle _l2Oracle, - ZKVerifier _zkVerifier, + ZKProofVerifier _zkProofVerifier, uint256 _submissionInterval, uint256 _creationPeriodSeconds, uint256 _bisectionTimeout, uint256 _provingTimeout, - bytes32 _dummyHash, - uint256 _maxTxs, uint256[] memory _segmentsLengths, - address _securityCouncil, - address _zkMerkleTrie + address _securityCouncil ) Colosseum( _l2Oracle, - _zkVerifier, + _zkProofVerifier, _submissionInterval, _creationPeriodSeconds, _bisectionTimeout, _provingTimeout, - _dummyHash, - _maxTxs, _segmentsLengths, - _securityCouncil, - _zkMerkleTrie + _securityCouncil ) {} @@ -55,17 +50,38 @@ contract MockColosseum is Colosseum { ) external view returns (bool) { return _isAbleToBisect(challenges[_outputIndex][_challenger]); } +} - function hashPublicInput( +contract MockZKProofVerifier is ZKProofVerifier { + constructor( + ZKVerifier _zkVerifier, + bytes32 _dummyHash, + uint256 _maxTxs, + address _zkMerkleTrie, + ISP1Verifier _sp1Verifier, + bytes32 _zkVmProgramVKey + ) + ZKProofVerifier( + _zkVerifier, + _dummyHash, + _maxTxs, + _zkMerkleTrie, + _sp1Verifier, + _zkVmProgramVKey + ) + {} + + function hashZkEvmPublicInput( Types.PublicInputProof calldata _proof ) external view returns (bytes32) { - return _hashPublicInput(_proof.srcOutputRootProof.stateRoot, _proof.publicInput); + return _hashZkEvmPublicInput(_proof.srcOutputRootProof.stateRoot, _proof.publicInput); } } // Test the implementations of the Colosseum contract ColosseumTest is Colosseum_Initializer { MockColosseum mockColosseum; + MockZKProofVerifier mockZKProofVerifier; uint256 internal targetOutputIndex; mapping(address => bool) internal isChallenger; @@ -80,21 +96,30 @@ contract ColosseumTest is Colosseum_Initializer { MockColosseum mockColosseumImpl = new MockColosseum( oracle, - zkVerifier, + zkProofVerifier, submissionInterval, creationPeriodSeconds, bisectionTimeout, provingTimeout, - DUMMY_HASH, - MAX_TXS, segmentsLengths, - address(securityCouncil), - address(zkMerkleTrie) + address(securityCouncil) ); vm.prank(multisig); Proxy(payable(address(colosseum))).upgradeTo(address(mockColosseumImpl)); mockColosseum = MockColosseum(address(colosseum)); + MockZKProofVerifier mockVerifierImpl = new MockZKProofVerifier({ + _zkVerifier: zkVerifier, + _dummyHash: DUMMY_HASH, + _maxTxs: MAX_TXS, + _zkMerkleTrie: address(zkMerkleTrie), + _sp1Verifier: sp1Verifier, + _zkVmProgramVKey: ZKVM_PROGRAM_V_KEY + }); + vm.prank(multisig); + Proxy(payable(address(zkProofVerifier))).upgradeTo(address(mockVerifierImpl)); + mockZKProofVerifier = MockZKProofVerifier(address(zkProofVerifier)); + vm.prank(trusted); pool.deposit{ value: trusted.balance }(); vm.prank(asserter); @@ -216,6 +241,7 @@ contract ColosseumTest is Colosseum_Initializer { assertEq(challenge.segStart, start); assertEq(challenge.segSize, end - start); assertEq(challenge.turn, 1); + assertEq(challenge.l1Head, blockhash(block.number - 1)); } function _bisect(uint256 _outputIndex, address _challenger, address _sender) private { @@ -244,7 +270,8 @@ contract ColosseumTest is Colosseum_Initializer { function _proveFault( uint256 _outputIndex, - address _challenger + address _challenger, + bool _isZkVm ) private returns (bytes32 publicInputHash) { // get previous snapshot Types.CheckpointOutput memory prevOutput = oracle.getL2Output(_outputIndex); @@ -252,7 +279,7 @@ contract ColosseumTest is Colosseum_Initializer { Types.Challenge memory challenge = mockColosseum.getChallenge(_outputIndex, _challenger); uint256 position = _detectFault(challenge, challenge.challenger); - publicInputHash = _doProveFault(challenge.challenger, _outputIndex, position); + publicInputHash = _doProveFault(challenge.challenger, _outputIndex, position, _isZkVm); assertEq( uint256(colosseum.getStatus(_outputIndex, challenge.challenger)), @@ -270,34 +297,48 @@ contract ColosseumTest is Colosseum_Initializer { function _doProveFault( address _challenger, uint256 _outputIndex, - uint256 _position + uint256 _position, + bool _isZkVm ) private returns (bytes32) { - ( - Types.OutputRootProof memory srcOutputRootProof, - Types.OutputRootProof memory dstOutputRootProof - ) = ColosseumTestData.outputRootProof(); - Types.PublicInput memory publicInput = ColosseumTestData.publicInput(); - Types.BlockHeaderRLP memory rlps = ColosseumTestData.blockHeaderRLP(); - - ColosseumTestData.ProofPair memory pp = ColosseumTestData.proofAndPair(); - - (ColosseumTestData.Account memory account, bytes[] memory merkleProof) = ColosseumTestData - .merkleProof(); - - Types.PublicInputProof memory proof = Types.PublicInputProof({ - srcOutputRootProof: srcOutputRootProof, - dstOutputRootProof: dstOutputRootProof, - publicInput: publicInput, - rlps: rlps, - l2ToL1MessagePasserBalance: bytes32(account.balance), - l2ToL1MessagePasserCodeHash: account.codeHash, - merkleProof: merkleProof - }); - - vm.prank(_challenger); - colosseum.proveFault(_outputIndex, _position, proof, pp.proof, pp.pair); - - return mockColosseum.hashPublicInput(proof); + if (_isZkVm) { + // TODO(seolaoh): add zkVM proof test case + return bytes32(0); + } else { + ( + Types.OutputRootProof memory srcOutputRootProof, + Types.OutputRootProof memory dstOutputRootProof + ) = ColosseumTestData.outputRootProof(); + Types.PublicInput memory publicInput = ColosseumTestData.publicInput(); + Types.BlockHeaderRLP memory rlps = ColosseumTestData.blockHeaderRLP(); + + ColosseumTestData.ProofPair memory pp = ColosseumTestData.proofAndPair(); + + ( + ColosseumTestData.Account memory account, + bytes[] memory merkleProof + ) = ColosseumTestData.merkleProof(); + + Types.PublicInputProof memory proof = Types.PublicInputProof({ + srcOutputRootProof: srcOutputRootProof, + dstOutputRootProof: dstOutputRootProof, + publicInput: publicInput, + rlps: rlps, + l2ToL1MessagePasserBalance: bytes32(account.balance), + l2ToL1MessagePasserCodeHash: account.codeHash, + merkleProof: merkleProof + }); + + Types.ZkEvmProof memory zkEvmProof = Types.ZkEvmProof({ + publicInputProof: proof, + proof: pp.proof, + pair: pp.pair + }); + + vm.prank(_challenger); + colosseum.proveFaultWithZkEvm(_outputIndex, _position, zkEvmProof); + + return mockZKProofVerifier.hashZkEvmPublicInput(proof); + } } function _dismissChallenge(uint256 txId) private { @@ -312,18 +353,15 @@ contract ColosseumTest is Colosseum_Initializer { function test_constructor_succeeds() external { assertEq(address(colosseum.L2_ORACLE()), address(oracle), "oracle address not matched"); assertEq( - address(colosseum.ZK_VERIFIER()), - address(zkVerifier), - "zk verifier address not matched" + address(colosseum.ZK_PROOF_VERIFIER()), + address(zkProofVerifier), + "zk proof verifier address not matched" ); assertEq(colosseum.CREATION_PERIOD_SECONDS(), creationPeriodSeconds); assertEq(colosseum.BISECTION_TIMEOUT(), bisectionTimeout); assertEq(colosseum.PROVING_TIMEOUT(), provingTimeout); assertEq(colosseum.L2_ORACLE_SUBMISSION_INTERVAL(), submissionInterval); - assertEq(colosseum.DUMMY_HASH(), DUMMY_HASH); - assertEq(colosseum.MAX_TXS(), MAX_TXS); assertEq(colosseum.SECURITY_COUNCIL(), address(securityCouncil)); - assertEq(colosseum.ZK_MERKLE_TRIE(), address(zkMerkleTrie)); } function test_initialize_succeeds() external { @@ -437,7 +475,7 @@ contract ColosseumTest is Colosseum_Initializer { function test_createChallenge_afterChallengeProven_reverts() external { uint256 outputIndex = targetOutputIndex; - test_proveFault_succeeds(); + test_proveFaultWithZkEvm_succeeds(); assertEq( uint256(colosseum.getStatus(outputIndex, challenger)), @@ -646,7 +684,7 @@ contract ColosseumTest is Colosseum_Initializer { _bisect(outputIndex, otherChallenger, challenge.asserter); // The output root of the target output index was replaced by another challenge. - test_proveFault_succeeds(); + test_proveFaultWithZkEvm_succeeds(); uint256 prevDeposit = pool.balanceOf(otherChallenger); uint256 pendingBond = pool.getPendingBond(outputIndex, otherChallenger); @@ -675,14 +713,14 @@ contract ColosseumTest is Colosseum_Initializer { _bisect(outputIndex, otherChallenger, challenge.asserter); // The output root of the target output index was replaced by another challenge. - test_proveFault_succeeds(); + test_proveFaultWithZkEvm_succeeds(); vm.prank(challenger); vm.expectRevert(Colosseum.OnlyChallengerCanCancel.selector); colosseum.bisect(outputIndex, otherChallenger, 0, new bytes32[](0)); } - function test_proveFault_succeeds() public returns (bytes32 publicInputHash) { + function test_proveFaultWithZkEvm_succeeds() public returns (bytes32 publicInputHash) { uint256 outputIndex = targetOutputIndex; Types.CheckpointOutput memory targetOutput = oracle.getL2Output(outputIndex); @@ -699,7 +737,7 @@ contract ColosseumTest is Colosseum_Initializer { uint256(Colosseum.ChallengeStatus.READY_TO_PROVE) ); - publicInputHash = _proveFault(outputIndex, challenge.challenger); + publicInputHash = _proveFault(outputIndex, challenge.challenger, false); (, bytes32 outputRoot, , ) = colosseum.deletedOutputs(outputIndex); assertEq(outputRoot, targetOutput.outputRoot); @@ -729,7 +767,7 @@ contract ColosseumTest is Colosseum_Initializer { vm.warp(targetOutput.timestamp + oracle.FINALIZATION_PERIOD_SECONDS() + 1); vm.expectRevert(Colosseum.OutputAlreadyFinalized.selector); - _doProveFault(challenger, outputIndex, 0); + _doProveFault(challenger, outputIndex, 0, false); } // TODO(pangssu): Testing is impossible in the current state. It must be fixed without fail. @@ -749,7 +787,7 @@ contract ColosseumTest is Colosseum_Initializer { // uint256(Colosseum.ChallengeStatus.ASSERTER_TIMEOUT) // ); // - // _proveFault(outputIndex, challenge.challenger); + // _proveFault(outputIndex, challenge.challenger, false); // } function test_proveFault_cancelChallenge_succeeds() external { @@ -764,14 +802,14 @@ contract ColosseumTest is Colosseum_Initializer { } // The output root of the target output index was replaced by another challenge. - test_proveFault_succeeds(); + test_proveFaultWithZkEvm_succeeds(); uint256 prevDeposit = pool.balanceOf(otherChallenger); uint256 pendingBond = pool.getPendingBond(outputIndex, otherChallenger); - Types.PublicInputProof memory _emptyProof; + Types.ZkEvmProof memory emptyZkEvmProof; vm.prank(otherChallenger); - colosseum.proveFault(outputIndex, 0, _emptyProof, new uint256[](0), new uint256[](0)); + colosseum.proveFaultWithZkEvm(outputIndex, 0, emptyZkEvmProof); // Ensure that the challenge has been deleted. assertEq( @@ -788,7 +826,7 @@ contract ColosseumTest is Colosseum_Initializer { uint256 outputIndex = targetOutputIndex; Types.CheckpointOutput memory output = oracle.getL2Output(outputIndex); - bytes32 publicInputHash = test_proveFault_succeeds(); + bytes32 publicInputHash = test_proveFaultWithZkEvm_succeeds(); Types.CheckpointOutput memory newOutput = oracle.getL2Output(outputIndex); vm.prank(address(securityCouncil)); @@ -806,7 +844,7 @@ contract ColosseumTest is Colosseum_Initializer { } function test_dismissChallenge_notSecurityCouncil_reverts() external { - test_proveFault_succeeds(); + test_proveFaultWithZkEvm_succeeds(); vm.prank(makeAddr("not_security_council")); vm.expectRevert(Colosseum.NotAllowedCaller.selector); @@ -847,7 +885,7 @@ contract ColosseumTest is Colosseum_Initializer { uint256 outputIndex = targetOutputIndex; Types.CheckpointOutput memory output = oracle.getL2Output(outputIndex); - bytes32 publicInputHash = test_proveFault_succeeds(); + bytes32 publicInputHash = test_proveFaultWithZkEvm_succeeds(); Types.CheckpointOutput memory newOutput = oracle.getL2Output(outputIndex); vm.prank(address(securityCouncil)); @@ -865,7 +903,7 @@ contract ColosseumTest is Colosseum_Initializer { uint256 outputIndex = targetOutputIndex; Types.CheckpointOutput memory output = oracle.getL2Output(outputIndex); - bytes32 publicInputHash = test_proveFault_succeeds(); + bytes32 publicInputHash = test_proveFaultWithZkEvm_succeeds(); Types.CheckpointOutput memory newOutput = oracle.getL2Output(outputIndex); vm.prank(address(securityCouncil)); @@ -893,11 +931,11 @@ contract ColosseumTest is Colosseum_Initializer { uint256 outputIndex = targetOutputIndex; Types.CheckpointOutput memory output = oracle.getL2Output(outputIndex); - test_proveFault_succeeds(); + test_proveFaultWithZkEvm_succeeds(); Types.CheckpointOutput memory newOutput = oracle.getL2Output(outputIndex); vm.prank(address(securityCouncil)); - vm.expectRevert(Colosseum.InvalidPublicInput.selector); + vm.expectRevert(Colosseum.InvalidPublicInputHash.selector); colosseum.dismissChallenge( outputIndex, newOutput.submitter, @@ -964,7 +1002,7 @@ contract ColosseumTest is Colosseum_Initializer { ); // The output root of the target output index was replaced by another challenge. - test_proveFault_succeeds(); + test_proveFaultWithZkEvm_succeeds(); assertEq( uint256(colosseum.getStatus(outputIndex, otherChallenger)), @@ -1005,7 +1043,7 @@ contract ColosseumTest is Colosseum_Initializer { _createChallenge(outputIndex, otherChallenger); // The output root of the target output index was replaced by another challenge. - test_proveFault_succeeds(); + test_proveFaultWithZkEvm_succeeds(); vm.prank(challenger); vm.expectRevert(Colosseum.OnlyChallengerCanCancel.selector); @@ -1022,7 +1060,7 @@ contract ColosseumTest is Colosseum_Initializer { vm.warp(challenge.timeoutAt + 1); // The output root of the target output index was replaced by another challenge. - test_proveFault_succeeds(); + test_proveFaultWithZkEvm_succeeds(); vm.prank(otherChallenger); vm.expectRevert(Colosseum.ImproperChallengeStatusToCancel.selector); @@ -1106,6 +1144,7 @@ contract ColosseumTest is Colosseum_Initializer { contract Colosseum_ValidatorSystemUpgrade_Test is Colosseum_Initializer { MockColosseum mockColosseum; + MockZKProofVerifier mockZKProofVerifier; MockL2OutputOracle mockOracle; uint256 internal targetOutputIndex; @@ -1114,21 +1153,30 @@ contract Colosseum_ValidatorSystemUpgrade_Test is Colosseum_Initializer { MockColosseum mockColosseumImpl = new MockColosseum( oracle, - zkVerifier, + zkProofVerifier, submissionInterval, creationPeriodSeconds, bisectionTimeout, provingTimeout, - DUMMY_HASH, - MAX_TXS, segmentsLengths, - address(securityCouncil), - address(zkMerkleTrie) + address(securityCouncil) ); vm.prank(multisig); Proxy(payable(address(colosseum))).upgradeTo(address(mockColosseumImpl)); mockColosseum = MockColosseum(address(colosseum)); + MockZKProofVerifier mockVerifierImpl = new MockZKProofVerifier({ + _zkVerifier: zkVerifier, + _dummyHash: DUMMY_HASH, + _maxTxs: MAX_TXS, + _zkMerkleTrie: address(zkMerkleTrie), + _sp1Verifier: sp1Verifier, + _zkVmProgramVKey: ZKVM_PROGRAM_V_KEY + }); + vm.prank(multisig); + Proxy(payable(address(zkProofVerifier))).upgradeTo(address(mockVerifierImpl)); + mockZKProofVerifier = MockZKProofVerifier(address(zkProofVerifier)); + address oracleAddress = address(oracle); MockL2OutputOracle mockOracleImpl = new MockL2OutputOracle( pool, @@ -1275,7 +1323,7 @@ contract Colosseum_ValidatorSystemUpgrade_Test is Colosseum_Initializer { revert("failed to select faulty position"); } - function _getProof() + function _getZkEvmProof() private pure returns (ColosseumTestData.ProofPair memory, Types.PublicInputProof memory) @@ -1324,7 +1372,7 @@ contract Colosseum_ValidatorSystemUpgrade_Test is Colosseum_Initializer { colosseum.createChallenge(targetOutputIndex, bytes32(0), 0, segments); } - function test_proveFault_callValidatorManager_succeeds() + function test_proveFaultWithZkEvm_callValidatorManager_succeeds() public returns (bytes32 publicInputHash) { @@ -1341,7 +1389,15 @@ contract Colosseum_ValidatorSystemUpgrade_Test is Colosseum_Initializer { challenge = mockColosseum.getChallenge(targetOutputIndex, challenger); } - (ColosseumTestData.ProofPair memory pp, Types.PublicInputProof memory proof) = _getProof(); + ( + ColosseumTestData.ProofPair memory pp, + Types.PublicInputProof memory proof + ) = _getZkEvmProof(); + Types.ZkEvmProof memory zkEvmProof = Types.ZkEvmProof({ + publicInputProof: proof, + proof: pp.proof, + pair: pp.pair + }); uint256 position = _detectFault(challenge, challenge.challenger); @@ -1355,9 +1411,9 @@ contract Colosseum_ValidatorSystemUpgrade_Test is Colosseum_Initializer { ) ); vm.prank(challenger); - colosseum.proveFault(targetOutputIndex, position, proof, pp.proof, pp.pair); + colosseum.proveFaultWithZkEvm(targetOutputIndex, position, zkEvmProof); - publicInputHash = mockColosseum.hashPublicInput(proof); + publicInputHash = mockZKProofVerifier.hashZkEvmPublicInput(proof); assertEq(assetMgr.totalValidatorKro(challenge.asserter), beforeAsserterKro - bondAmount); assertEq(assetMgr.totalValidatorKro(challenger), minActivateAmount); @@ -1367,7 +1423,7 @@ contract Colosseum_ValidatorSystemUpgrade_Test is Colosseum_Initializer { Types.CheckpointOutput memory output = oracle.getL2Output(targetOutputIndex); uint128 beforeAsserterKro = assetMgr.totalValidatorKro(output.submitter); - bytes32 publicInputHash = test_proveFault_callValidatorManager_succeeds(); + bytes32 publicInputHash = test_proveFaultWithZkEvm_callValidatorManager_succeeds(); vm.expectCall( address(valMgr), @@ -1450,7 +1506,7 @@ contract Colosseum_ValidatorSystemUpgrade_Test is Colosseum_Initializer { vm.prank(otherChallenger); colosseum.createChallenge(targetOutputIndex, bytes32(0), 0, segments); - test_proveFault_callValidatorManager_succeeds(); + test_proveFaultWithZkEvm_callValidatorManager_succeeds(); vm.expectCall( address(valMgr), diff --git a/packages/contracts/contracts/test/CommonTest.t.sol b/packages/contracts/contracts/test/CommonTest.t.sol index e8ce7c2f10..5a3d80cefd 100644 --- a/packages/contracts/contracts/test/CommonTest.t.sol +++ b/packages/contracts/contracts/test/CommonTest.t.sol @@ -2,7 +2,6 @@ pragma solidity 0.8.15; /* Testing utilities */ -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; @@ -27,6 +26,7 @@ import { ValidatorManager } from "../L1/ValidatorManager.sol"; import { ResourceMetering } from "../L1/ResourceMetering.sol"; import { SystemConfig } from "../L1/SystemConfig.sol"; import { ZKMerkleTrie } from "../L1/ZKMerkleTrie.sol"; +import { ZKProofVerifier } from "../L1/ZKProofVerifier.sol"; import { ZKVerifier } from "../L1/ZKVerifier.sol"; import { L2CrossDomainMessenger } from "../L2/L2CrossDomainMessenger.sol"; import { L2ERC721Bridge } from "../L2/L2ERC721Bridge.sol"; @@ -35,11 +35,11 @@ import { L2ToL1MessagePasser } from "../L2/L2ToL1MessagePasser.sol"; import { CodeDeployer } from "../libraries/CodeDeployer.sol"; import { Constants } from "../libraries/Constants.sol"; import { Predeploys } from "../libraries/Predeploys.sol"; -import { Types } from "../libraries/Types.sol"; import { KromaMintableERC20 } from "../universal/KromaMintableERC20.sol"; import { KromaMintableERC20Factory } from "../universal/KromaMintableERC20Factory.sol"; import { Proxy } from "../universal/Proxy.sol"; import { AddressAliasHelper } from "../vendor/AddressAliasHelper.sol"; +import { ISP1Verifier } from "../vendor/ISP1Verifier.sol"; import { FFIInterface } from "./setup/FFIInterface.sol"; contract CommonTest is Test { @@ -732,11 +732,20 @@ contract ERC721Bridge_Initializer is Messenger_Initializer { } } +contract MockSP1Verifier is ISP1Verifier { + function verifyProof( + bytes32 programVKey, + bytes calldata publicValues, + bytes calldata proofBytes + ) external view {} +} + contract Colosseum_Initializer is Portal_Initializer { uint256 immutable CHAIN_ID = 901; bytes32 immutable DUMMY_HASH = hex"a1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f7"; uint256 immutable MAX_TXS = 100; + bytes32 immutable ZKVM_PROGRAM_V_KEY = bytes32(0); // Test target Colosseum colosseumImpl; @@ -744,6 +753,10 @@ contract Colosseum_Initializer is Portal_Initializer { ZKVerifier zkVerifier; ZKVerifier zkVerifierImpl; + ZKProofVerifier zkProofVerifier; + ZKProofVerifier zkProofVerifierImpl; + MockSP1Verifier sp1Verifier; + SecurityCouncil securityCouncilImpl; SecurityCouncil securityCouncil; @@ -767,6 +780,21 @@ contract Colosseum_Initializer is Portal_Initializer { vm.prank(multisig); verifierProxy.upgradeTo(address(zkVerifierImpl)); + // Deploy the ZKProofVerifier + sp1Verifier = new MockSP1Verifier(); + Proxy zkProofVerifierProxy = new Proxy(multisig); + zkProofVerifier = ZKProofVerifier(payable(address(zkProofVerifierProxy))); + zkProofVerifierImpl = new ZKProofVerifier({ + _zkVerifier: zkVerifier, + _dummyHash: DUMMY_HASH, + _maxTxs: MAX_TXS, + _zkMerkleTrie: address(zkMerkleTrie), + _sp1Verifier: sp1Verifier, + _zkVmProgramVKey: ZKVM_PROGRAM_V_KEY + }); + vm.prank(multisig); + zkProofVerifierProxy.upgradeTo(address(zkProofVerifierImpl)); + // case - L2OutputOracle submissionInterval == 1800 segmentsLengths.push(9); segmentsLengths.push(6); @@ -789,16 +817,13 @@ contract Colosseum_Initializer is Portal_Initializer { colosseumImpl = new Colosseum({ _l2Oracle: oracle, - _zkVerifier: zkVerifier, + _zkProofVerifier: zkProofVerifier, _submissionInterval: submissionInterval, _creationPeriodSeconds: creationPeriodSeconds, _bisectionTimeout: bisectionTimeout, _provingTimeout: provingTimeout, - _dummyHash: DUMMY_HASH, - _maxTxs: MAX_TXS, _segmentsLengths: segmentsLengths, - _securityCouncil: address(securityCouncil), - _zkMerkleTrie: address(zkMerkleTrie) + _securityCouncil: address(securityCouncil) }); vm.prank(multisig); toProxy(address(colosseum)).upgradeToAndCall( diff --git a/packages/contracts/contracts/vendor/ISP1Verifier.sol b/packages/contracts/contracts/vendor/ISP1Verifier.sol new file mode 100644 index 0000000000..233eb2d09e --- /dev/null +++ b/packages/contracts/contracts/vendor/ISP1Verifier.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.15; + +/// @title SP1 Verifier Interface +/// @author Succinct Labs +/// @notice This contract is the interface for the SP1 Verifier. +/// See https://github.com/succinctlabs/sp1-contracts/blob/main-0.8.15/contracts/src/ISP1Verifier.sol +interface ISP1Verifier { + /// @notice Verifies a proof with given public values and vkey. + /// @dev It is expected that the first 4 bytes of proofBytes must match the first 4 bytes of + /// target verifier's VERIFIER_HASH. + /// @param programVKey The verification key for the RISC-V program. + /// @param publicValues The public values encoded as bytes. + /// @param proofBytes The proof of the program execution the SP1 zkVM encoded as bytes. + function verifyProof( + bytes32 programVKey, + bytes calldata publicValues, + bytes calldata proofBytes + ) external view; +} diff --git a/packages/contracts/deploy-config/devnetL1-template.json b/packages/contracts/deploy-config/devnetL1-template.json index 7ddeb0d090..20ab26f95c 100644 --- a/packages/contracts/deploy-config/devnetL1-template.json +++ b/packages/contracts/deploy-config/devnetL1-template.json @@ -74,6 +74,8 @@ "zkVerifierHashScalar": "0xb54142d3712f03ff5c15914a3dce82c0d8a8d537e165e2342048adf14e34aa", "zkVerifierM56Px": "0x175a2d1aaf07ee184a955e35f3deac123ef1088b68c38bace37056dcfc9d304d", "zkVerifierM56Py": "0x150856c3d1750c2578b823cb3c7d74ed3e94c1cfece7e1bfdaaff36eea788fb9", + "zkProofVerifierSP1Verifier": "0x0000000000000000000000000000000000000001", + "zkProofVerifierVKey": "0x0000000000000000000000000000000000000000000000000000000000000001", "governanceTokenNotUseCreate2": true, "governanceTokenProxySalt": "0x0000000000000000000000000000000000000000000000000000004b726f6d61", "mintManagerOwner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", diff --git a/packages/contracts/deploy/L1/001-Proxies.ts b/packages/contracts/deploy/L1/001-Proxies.ts index ec6227cea4..9f8033b95a 100644 --- a/packages/contracts/deploy/L1/001-Proxies.ts +++ b/packages/contracts/deploy/L1/001-Proxies.ts @@ -12,6 +12,7 @@ const PROXY_NAMES = [ 'L1ERC721BridgeProxy', 'KromaMintableERC20FactoryProxy', 'ZKVerifierProxy', + 'ZKProofVerifierProxy', 'ColosseumProxy', 'SecurityCouncilProxy', 'SecurityCouncilTokenProxy', diff --git a/packages/contracts/deploy/L1/010-Colosseum.ts b/packages/contracts/deploy/L1/010-Colosseum.ts index f0c3684a3c..182fa74741 100644 --- a/packages/contracts/deploy/L1/010-Colosseum.ts +++ b/packages/contracts/deploy/L1/010-Colosseum.ts @@ -8,9 +8,9 @@ import { } from '../../src/deploy-utils' const deployFn: DeployFunction = async (hre) => { - const zkVerifierProxyAddress = await getDeploymentAddress( + const zkProofVerifierProxyAddress = await getDeploymentAddress( hre, - 'ZKVerifierProxy' + 'ZKProofVerifierProxy' ) const l2OutputOracleProxyAddress = await getDeploymentAddress( hre, @@ -20,21 +20,17 @@ const deployFn: DeployFunction = async (hre) => { hre, 'SecurityCouncilProxy' ) - const zkMerkleTrieAddress = await getDeploymentAddress(hre, 'ZKMerkleTrie') await deploy(hre, 'Colosseum', { args: [ l2OutputOracleProxyAddress, - zkVerifierProxyAddress, + zkProofVerifierProxyAddress, hre.deployConfig.l2OutputOracleSubmissionInterval, hre.deployConfig.colosseumCreationPeriodSeconds, hre.deployConfig.colosseumBisectionTimeout, hre.deployConfig.colosseumProvingTimeout, - hre.deployConfig.colosseumDummyHash, - hre.deployConfig.colosseumMaxTxs, hre.deployConfig.colosseumSegmentsLengths.split(','), securityCouncilProxyAddress, - zkMerkleTrieAddress, ], isProxyImpl: true, initArgs: [hre.deployConfig.colosseumSegmentsLengths.split(',')], @@ -46,8 +42,8 @@ const deployFn: DeployFunction = async (hre) => { ) await assertContractVariable( contract, - 'ZK_VERIFIER', - zkVerifierProxyAddress + 'ZK_PROOF_VERIFIER', + zkProofVerifierProxyAddress ) await assertContractVariable( contract, @@ -69,30 +65,15 @@ const deployFn: DeployFunction = async (hre) => { 'PROVING_TIMEOUT', hre.deployConfig.colosseumProvingTimeout ) - await assertContractVariable( - contract, - 'DUMMY_HASH', - hre.deployConfig.colosseumDummyHash - ) - await assertContractVariable( - contract, - 'MAX_TXS', - hre.deployConfig.colosseumMaxTxs - ) await assertContractVariable( contract, 'SECURITY_COUNCIL', securityCouncilProxyAddress ) - await assertContractVariable( - contract, - 'ZK_MERKLE_TRIE', - zkMerkleTrieAddress - ) }, }) } -deployFn.tags = ['Colosseum', 'setup', 'l1', 'validatorSystemUpgrade'] +deployFn.tags = ['Colosseum', 'setup', 'l1', 'validatorSystemUpgrade', 'mpt'] export default deployFn diff --git a/packages/contracts/deploy/L1/022-ZKProofVerifier.ts b/packages/contracts/deploy/L1/022-ZKProofVerifier.ts new file mode 100644 index 0000000000..930db42aea --- /dev/null +++ b/packages/contracts/deploy/L1/022-ZKProofVerifier.ts @@ -0,0 +1,64 @@ +import '@nomiclabs/hardhat-ethers' +import { DeployFunction } from 'hardhat-deploy/dist/types' + +import { + assertContractVariable, + deploy, + getDeploymentAddress, +} from '../../src/deploy-utils' + +const deployFn: DeployFunction = async (hre) => { + const zkVerifierProxyAddress = await getDeploymentAddress( + hre, + 'ZKVerifierProxy' + ) + const zkMerkleTrieAddress = await getDeploymentAddress(hre, 'ZKMerkleTrie') + + await deploy(hre, 'ZKProofVerifier', { + args: [ + zkVerifierProxyAddress, + hre.deployConfig.colosseumDummyHash, + hre.deployConfig.colosseumMaxTxs, + zkMerkleTrieAddress, + hre.deployConfig.zkProofVerifierSP1Verifier, + hre.deployConfig.zkProofVerifierVKey, + ], + isProxyImpl: true, + postDeployAction: async (contract) => { + await assertContractVariable( + contract, + 'zkVerifier', + zkVerifierProxyAddress + ) + await assertContractVariable( + contract, + 'dummyHash', + hre.deployConfig.colosseumDummyHash + ) + await assertContractVariable( + contract, + 'maxTxs', + hre.deployConfig.colosseumMaxTxs + ) + await assertContractVariable( + contract, + 'zkMerkleTrie', + zkMerkleTrieAddress + ) + await assertContractVariable( + contract, + 'sp1Verifier', + hre.deployConfig.zkProofVerifierSP1Verifier + ) + await assertContractVariable( + contract, + 'zkVmProgramVKey', + hre.deployConfig.zkProofVerifierVKey + ) + }, + }) +} + +deployFn.tags = ['ZKProofVerifier', 'setup', 'l1', 'mpt'] + +export default deployFn diff --git a/packages/contracts/scripts/rename-deploy-scripts.ts b/packages/contracts/scripts/rename-deploy-scripts.ts index 18d5e51b5e..f09be6c06a 100644 --- a/packages/contracts/scripts/rename-deploy-scripts.ts +++ b/packages/contracts/scripts/rename-deploy-scripts.ts @@ -30,6 +30,7 @@ const L1_ORDERED_NAMES = [ 'L1GovernanceToken', 'AssetManager', 'ValidatorManager', + 'ZKProofVerifier', ] const L2_ORDERED_NAMES = [ 'L1Block', diff --git a/packages/contracts/src/contract-artifacts.ts b/packages/contracts/src/contract-artifacts.ts index 213f25233a..4a2b4447dd 100644 --- a/packages/contracts/src/contract-artifacts.ts +++ b/packages/contracts/src/contract-artifacts.ts @@ -174,6 +174,12 @@ } catch {} + let ZKProofVerifier + try { + ZKProofVerifier = require('../artifacts/contracts/L1/ZKProofVerifier.sol/ZKProofVerifier.json') + } catch {} + + let IPoseidon2 try { IPoseidon2 = require('../artifacts/contracts/L1/ZKTrieHasher.sol/IPoseidon2.json') @@ -468,6 +474,12 @@ } catch {} + let ISP1Verifier + try { + ISP1Verifier = require('../artifacts/contracts/vendor/ISP1Verifier.sol/ISP1Verifier.json') + } catch {} + + let WETH9 try { WETH9 = require('../artifacts/contracts/vendor/WETH9.sol/WETH9.json') @@ -504,6 +516,7 @@ SystemConfig, ValidatorManager, ValidatorPool, ZKMerkleTrie, +ZKProofVerifier, IPoseidon2, ZKTrieHasher, ZKVerifier, @@ -553,6 +566,7 @@ IStaticERC1967Proxy, ProxyAdmin, StandardBridge, AddressAliasHelper, +ISP1Verifier, WETH9 }[name] } diff --git a/packages/contracts/src/deploy-config.ts b/packages/contracts/src/deploy-config.ts index a8686c07d2..ae39039228 100644 --- a/packages/contracts/src/deploy-config.ts +++ b/packages/contracts/src/deploy-config.ts @@ -194,13 +194,13 @@ interface RequiredDeployConfig { colosseumCreationPeriodSeconds: number /** - * Dummy hash to be used to compute ZK fault proof as a padding if + * Dummy hash to be used to compute zkEVM proof as a padding if * the number of transaction is less than maximum number of transactions. */ colosseumDummyHash: string /** - * Maximum the number of transaction are allowed in a block. + * Maximum the number of transaction are allowed in a block when computing zkEVM proof. */ colosseumMaxTxs: number @@ -250,6 +250,16 @@ interface RequiredDeployConfig { */ zkVerifierM56Py: string + /** + * Address of the SP1VerifierGateway contract. + */ + zkProofVerifierSP1Verifier: string + + /** + * The verification key for the zkVM program. + */ + zkProofVerifierVKey: string + /** * Governor voting delay in block. */ @@ -587,6 +597,14 @@ export const deployConfigSpec: { zkVerifierM56Py: { type: 'string', // uint256 }, + zkProofVerifierSP1Verifier: { + type: 'address', + default: ethers.constants.AddressZero, + }, + zkProofVerifierVKey: { + type: 'string', // bytes32 + default: ethers.constants.HashZero, + }, governorVotingDelayBlocks: { type: 'number', },