[ { "inputs": [ { "internalType": "address", "name": "moeLink", "type": "address" }, { "internalType": "address[]", "name": "sovBase", "type": "address[]" }, { "internalType": "uint256", "name": "deadlineIn", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApproveMigrate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "Seal", "type": "event" }, { "anonymous": false, "inputs": [], "name": "SealAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SOV_SEAL_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SOV_SEAL_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "approveMigrate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "approvedMigrate", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "metric", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256[]", "name": "index", "type": "uint256[]" } ], "name": "migrate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256[]", "name": "index", "type": "uint256[]" } ], "name": "migrateFrom", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "migrated", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "claim", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "claim", "type": "uint256" } ], "name": "mintable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "claims", "type": "uint256[]" } ], "name": "mintableBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "sovAmount", "type": "uint256" } ], "name": "moeUnits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "oldAmount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "newUnits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "base", "type": "address" } ], "name": "oldIndexOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "oldUnits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "seal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sealAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "seals", "outputs": [ { "internalType": "bool[]", "name": "", "type": "bool[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "moeAmount", "type": "uint256" } ], "name": "sovUnits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "unwrappable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "claim", "type": "uint256" } ], "name": "wrappable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
608060405242600f553480156200001557600080fd5b5060405162003b8338038062003b83833981016040819052620000389162000630565b82828281816040518060400160405280600681526020016520a837bbb2b960d11b8152506040518060400160405280600481526020016341504f5760e01b81525081600390816200008a9190620007b0565b506004620000998282620007b0565b50620000ab91506000905033620002fb565b620000b7814262000892565b60095581516001600160401b03811115620000d657620000d66200061a565b60405190808252806020026020018201604052801562000100578160200160208202803683370190505b5080516200011791600791602090910190620004da565b5081516001600160401b038111156200013457620001346200061a565b6040519080825280602002602001820160405280156200015e578160200160208202803683370190505b5080516200017591600a9160209091019062000544565b5060005b82518110156200024057828181518110620001985762000198620008a8565b602002602001015160078281548110620001b657620001b6620008a8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060086000858481518110620001fe57620001fe620008a8565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555080806200023790620008be565b91505062000179565b505050620002847f59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fe60008051602062003b638339815191526200032660201b60201c565b6200029f60008051602062003b6383398151915233620002fb565b5050600d80546001600160a01b0319166001600160a01b0392909216919091179055620002d3620002cd3390565b62000371565b5050601280546001600160a01b0319166001600160a01b0392909216919091179055620008da565b620003078282620003c3565b600082815260066020526040902062000321908262000468565b505050565b600082815260056020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620004645760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620004233390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006200047f836001600160a01b03841662000488565b90505b92915050565b6000818152600183016020526040812054620004d15750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000482565b50600062000482565b82805482825590600052602060002090810192821562000532579160200282015b828111156200053257825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620004fb565b5062000540929150620005e6565b5090565b82805482825590600052602060002090601f01602090048101928215620005325791602002820160005b83821115620005ad57835183826101000a81548160ff02191690831515021790555092602001926001016020816000010492830192600103026200056e565b8015620005dc5782816101000a81549060ff0219169055600101602081600001049283019260010302620005ad565b5050620005409291505b5b80821115620005405760008155600101620005e7565b80516001600160a01b03811681146200061557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156200064657600080fd5b6200065184620005fd565b602085810151919450906001600160401b03808211156200067157600080fd5b818701915087601f8301126200068657600080fd5b8151818111156200069b576200069b6200061a565b8060051b604051601f19603f83011681018181108582111715620006c357620006c36200061a565b60405291825284820192508381018501918a831115620006e257600080fd5b938501935b828510156200070b57620006fb85620005fd565b84529385019392850192620006e7565b809750505050505050604084015190509250925092565b600181811c908216806200073757607f821691505b6020821081036200075857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200032157600081815260208120601f850160051c81016020861015620007875750805b601f850160051c820191505b81811015620007a85782815560010162000793565b505050505050565b81516001600160401b03811115620007cc57620007cc6200061a565b620007e481620007dd845462000722565b846200075e565b602080601f8311600181146200081c5760008415620008035750858301515b600019600386901b1c1916600185901b178555620007a8565b600085815260208120601f198616915b828110156200084d578886015182559484019460019091019084016200082c565b50858210156200086c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808201808211156200048257620004826200087c565b634e487b7160e01b600052603260045260246000fd5b600060018201620008d357620008d36200087c565b5060010190565b61327980620008ea6000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80636c9efc911161015c57806395d89b41116100ce578063ca15c87311610087578063ca15c8731461060b578063cb5519761461061e578063d547741f14610626578063dd62ed3e14610639578063f2fde38b1461064c578063f544c35e1461065f57600080fd5b806395d89b411461059b57806396bb2131146105a3578063a217fddf146105b6578063a457c2d7146105be578063a9059cbb146105d1578063b6804129146105e457600080fd5b806379cc67901161012057806379cc67901461050a57806386fe212d1461051d5780638da5cb5b146105305780639010d07c1461055557806391c9ce381461056857806391d148541461058857600080fd5b80636c9efc911461048c57806370a082311461049f578063715018a6146104c857806376d84454146104d05780637766912d146104f757600080fd5b8063248a9ca31161020057806339509351116101b957806339509351146103f157806340c10f191461040457806342966c6814610417578063520533291461042a578063550c8a691461043d5780636c18080e1461047957600080fd5b8063248a9ca3146103735780632c678c64146103965780632f2ff15d1461039e578063313ce567146103b157806336568abe146103cb57806339444ffe146103de57600080fd5b80630c7fa13e116102525780630c7fa13e146103155780630f7849431461031f57806315e5f1331461033257806318160ddd146103455780631eaad2d41461034d57806323b872dd1461036057600080fd5b806301ffc9a71461028f57806306fdde03146102b7578063080e1301146102cc57806308560eca146102ed578063095ea7b314610302575b600080fd5b6102a261029d366004612afb565b610688565b60405190151581526020015b60405180910390f35b6102bf610699565b6040516102ae9190612b49565b6102df6102da366004612c2d565b61072b565b6040519081526020016102ae565b6102f561073f565b6040516102ae9190612c74565b6102a2610310366004612cd1565b6107b6565b61031d6107ce565b005b6102df61032d366004612cfb565b610803565b6102df610340366004612cfb565b61081f565b6002546102df565b6102df61035b366004612cfb565b6109e1565b6102a261036e366004612d14565b610b60565b6102df610381366004612cfb565b60009081526005602052604090206001015490565b600b546102df565b61031d6103ac366004612d50565b610b84565b6103b9610bae565b60405160ff90911681526020016102ae565b61031d6103d9366004612d50565b610c21565b6102df6103ec366004612d7c565b610ca4565b6102a26103ff366004612cd1565b610e9d565b61031d610412366004612cd1565b610ebf565b61031d610425366004612cfb565b610fae565b6102df610438366004612cfb565b611041565b6102a261044b366004612d9e565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205460ff1690565b61031d610487366004612dd6565b6110dd565b6102df61049a366004612d7c565b6111a1565b6102df6104ad366004612e0d565b6001600160a01b031660009081526020819052604090205490565b61031d611355565b6102df7f59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fe81565b6102df610505366004612e28565b611369565b61031d610518366004612cd1565b611412565b61031d61052b366004612cfb565b6114a6565b600e546001600160a01b03165b6040516001600160a01b0390911681526020016102ae565b61053d610563366004612d7c565b6114d9565b61057b610576366004612e7f565b6114f1565b6040516102ae9190612eef565b6102a2610596366004612d50565b6115c8565b6102bf6115f3565b6102df6105b1366004612cfb565b611602565b6102df600081565b6102a26105cc366004612cd1565b6116a7565b6102a26105df366004612cd1565b611722565b6102df7fe1322164d2a9c594e09927ac212ba43210d25e7c9efc459689fb7b6107c895b181565b6102df610619366004612cfb565b611730565b6102df611747565b61031d610634366004612d50565b6117fa565b6102df610647366004612d9e565b61181f565b61031d61065a366004612e0d565b61184a565b6102df61066d366004612e0d565b6001600160a01b031660009081526008602052604090205490565b6000610693826118c0565b92915050565b6060600380546106a890612f02565b80601f01602080910402602001604051908101604052809291908181526020018280546106d490612f02565b80156107215780601f106106f657610100808354040283529160200191610721565b820191906000526020600020905b81548152906001019060200180831161070457829003601f168201915b5050505050905090565b6000610738338484611900565b9392505050565b6060600a80548060200260200160405190810160405280929190818152602001828054801561072157602002820191906000526020600020906000905b825461010083900a900460ff16151581526020600192830181810494850194909303909202910180841161077c5790505050505050905090565b6000336107c4818585611b95565b5060019392505050565b7f59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fe6107f881611cb9565b610800611cc3565b50565b60008061081583601154601054611d4d565b5090949350505050565b600d546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088d9190612f3c565b60ff16610898610bae565b60ff161061093e57600d60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109179190612f3c565b61091f610bae565b6109299190612f75565b61093490600a613072565b6106939083613097565b610946610bae565b600d60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bd9190612f3c565b6109c79190612f75565b6109d290600a613072565b61069390836130b9565b919050565b600d546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190612f3c565b60ff16610a5a610bae565b60ff1610610ae157600d60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190612f3c565b6109bd610bae565b610ae9610bae565b600d60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190612f3c565b600033610b6e858285611dd9565b610b79858585611e53565b506001949350505050565b600082815260056020526040902060010154610b9f81611cb9565b610ba98383611ff7565b505050565b6012546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190612f3c565b905090565b6001600160a01b0381163314610c965760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610ca08282612019565b5050565b600060078281548110610cb957610cb96130d0565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b9190612f3c565b60ff16610d36610bae565b60ff1610610df15760078281548110610d5157610d516130d0565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc39190612f3c565b610dcb610bae565b610dd59190612f75565b610de090600a613072565b610dea9084613097565b9050610693565b610df9610bae565b60078381548110610e0c57610e0c6130d0565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610e5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7e9190612f3c565b610e889190612f75565b610e9390600a613072565b610dea90846130b9565b6000336107c4818585610eb0838361181f565b610eba91906130e6565b611b95565b610ec761203b565b6012546001600160a01b03166323b872dd610eea600e546001600160a01b031690565b30610ef485611041565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6c91906130f9565b610f7857610f78613116565b6000806000610f8c84601154601054611d4d565b6010819055601182905591945092509050610fa78584612095565b5050505050565b610fb781612154565b6012546001600160a01b031663a9059cbb33610fd284611602565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561101d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca091906130f9565b60125460009081906001600160a01b03166370a08231611069600e546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156110ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d1919061312c565b9050610738838261215e565b6001600160a01b03821633036111355760405162461bcd60e51b815260206004820152601a60248201527f617070726f76696e67206d69677261746520666f722073656c660000000000006044820152606401610c8d565b336000818152600c602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917fde18c0fde0d143c421bc0b8320f254129857d0bb1b96dcc4ea2b51145177d099910160405180910390a35050565b6000600782815481106111b6576111b66130d0565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015611204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112289190612f3c565b60ff16611233610bae565b60ff16106112c8576007828154811061124e5761124e6130d0565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa15801561129c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c09190612f3c565b610e7e610bae565b6112d0610bae565b600783815481106112e3576112e36130d0565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015611331573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcb9190612f3c565b61135d61203b565b6113676000612174565b565b60006001600160a01b0384163314806113a557506001600160a01b0384166000908152600c6020908152604080832033845290915290205460ff165b6113ff5760405162461bcd60e51b815260206004820152602560248201527f63616c6c6572206973206e6f7420746f6b656e206f776e6572206f72206170706044820152641c9bdd995960da1b6064820152608401610c8d565b61140a848484611900565b949350505050565b61141c82826121c6565b6012546001600160a01b031663a9059cbb8361143784611602565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611482573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906130f9565b7f59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fe6114d081611cb9565b610ca0826121db565b60008281526006602052604081206107389083612255565b6011546010548251606092919060009067ffffffffffffffff81111561151957611519612b7c565b604051908082528060200260200182016040528015611542578160200160208202803683370190505b50905060005b85518110156115bf57600080600061157a89858151811061156b5761156b6130d0565b60200260200101518888611d4d565b925092509250818180975081985050508285858151811061159d5761159d6130d0565b60200260200101818152505050505080806115b790613145565b915050611548565b50949350505050565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546106a890612f02565b6012546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561164f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611673919061312c565b9050600061168060025490565b61168a90856130e6565b9050801561169d5761140a828583612261565b5060009392505050565b600033816116b5828661181f565b9050838110156117155760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c8d565b610b798286868403611b95565b6000336107c4818585611e53565b60008181526006602052604081206106939061234b565b6012546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b8919061312c565b905060006117c560025490565b905080156117f1576117ea6117d8610bae565b6117e390600a613072565b8383612261565b9250505090565b60009250505090565b60008281526005602052604090206001015461181581611cb9565b610ba98383612019565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61185261203b565b6001600160a01b0381166118b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c8d565b61080081612174565b60006001600160e01b031982166336372b0760e01b14806118f157506001600160e01b0319821663a219a02560e01b145b80610693575061069382612355565b6040805160018082528183019092526000918291906020808301908036833701905050905082600181518110611938576119386130d0565b602002602001015181600081518110611953576119536130d0565b60200260200101818152505060006119858585600081518110611978576119786130d0565b60200260200101516111a1565b905060006119ae8787876000815181106119a1576119a16130d0565b6020026020010151612360565b90508181146119bf576119bf613116565b60006119ca8361081f565b90506000600d60009054906101000a90046001600160a01b03166001600160a01b03166339444ffe8387600081518110611a0657611a066130d0565b60200260200101516040518363ffffffff1660e01b8152600401611a34929190918252602082015260400190565b602060405180830381865afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a75919061312c565b600d54604051637766912d60e01b81529192506000916001600160a01b0390911690637766912d90611aaf908d9086908b9060040161315e565b6020604051808303816000875af1158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af2919061312c565b600d546040516323b872dd60e01b81526001600160a01b038d81166004830152306024830152604482018490529293509116906323b872dd906064016020604051808303816000875af1158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7191906130f9565b611b7d57611b7d613116565b611b878a86612095565b509298975050505050505050565b6001600160a01b038316611bf75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c8d565b6001600160a01b038216611c585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c8d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61080081336124e5565b60005b600a54811015611d21576001600a8281548110611ce557611ce56130d0565b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055508080611d1990613145565b915050611cc6565b506040517f080684993fcc29870167e21abb26431451334f3eb727ac7591fd7253b934179990600090a1565b600080808515611dc6576000600f5442611d67919061318e565b90506000611d758289613097565b611d80888885612261565b611d8a91906130e6565b90506000611db789603c611d9c610bae565b611da790600a613072565b611db19190613097565b84612261565b9550909350909150611dd09050565b5060009150839050825b93509350939050565b6000611de5848461181f565b90506000198114611e4d5781811015611e405760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c8d565b611e4d8484848403611b95565b50505050565b6001600160a01b038316611eb75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c8d565b6001600160a01b038216611f195760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c8d565b6001600160a01b03831660009081526020819052604090205481811015611f915760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c8d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611e4d565b612001828261253e565b6000828152600660205260409020610ba990826125c4565b61202382826125d9565b6000828152600660205260409020610ba99082612640565b600e546001600160a01b031633146113675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c8d565b6001600160a01b0382166120eb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610c8d565b80600260008282546120fd91906130e6565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6108003382612655565b600081831061216d5781610738565b5090919050565b600e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6121d1823383611dd9565b610ca08282612655565b6001600a82815481106121f0576121f06130d0565b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055507fdf64dc6e7fb0c6d764fd8e483d791a4710da5311e3f4e1a93d2b20af6ba941548160405161224a91815260200190565b60405180910390a150565b60006107388383612787565b600080806000198587098587029250828110838203039150508060000361229b5783828161229157612291613081565b0492505050610738565b8084116122e25760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610c8d565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000610693825490565b6000610693826127b1565b6000600a8281548110612375576123756130d0565b90600052602060002090602091828204019190069054906101000a900460ff16156123d55760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb881cd9585b195960821b6044820152606401610c8d565b600954429081111561241b5760405162461bcd60e51b815260206004820152600f60248201526e191958591b1a5b99481c185cdcd959608a1b6044820152606401610c8d565b6007838154811061242e5761242e6130d0565b60009182526020909120015460405163079cc67960e41b81526001600160a01b03878116600483015260248201879052909116906379cc679090604401600060405180830381600087803b15801561248557600080fd5b505af1158015612499573d6000803e3d6000fd5b5050505060008411806124aa575083155b6124b6576124b6613116565b60006124c285856111a1565b905080600b60008282546124d691906130e6565b90915550909695505050505050565b6124ef82826115c8565b610ca0576124fc816127d6565b6125078360206127e8565b6040516020016125189291906131a1565b60408051601f198184030181529082905262461bcd60e51b8252610c8d91600401612b49565b61254882826115c8565b610ca05760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556125803390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610738836001600160a01b038416612984565b6125e382826115c8565b15610ca05760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610738836001600160a01b0384166129d3565b6001600160a01b0382166126b55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c8d565b6001600160a01b038216600090815260208190526040902054818110156127295760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c8d565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600082600001828154811061279e5761279e6130d0565b9060005260206000200154905092915050565b60006001600160e01b03198216635a05180f60e01b1480610693575061069382612ac6565b60606106936001600160a01b03831660145b606060006127f78360026130b9565b6128029060026130e6565b67ffffffffffffffff81111561281a5761281a612b7c565b6040519080825280601f01601f191660200182016040528015612844576020820181803683370190505b509050600360fc1b8160008151811061285f5761285f6130d0565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061288e5761288e6130d0565b60200101906001600160f81b031916908160001a90535060006128b28460026130b9565b6128bd9060016130e6565b90505b6001811115612935576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128f1576128f16130d0565b1a60f81b828281518110612907576129076130d0565b60200101906001600160f81b031916908160001a90535060049490941c9361292e81613216565b90506128c0565b5083156107385760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c8d565b60008181526001830160205260408120546129cb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610693565b506000610693565b60008181526001830160205260408120548015612abc5760006129f760018361318e565b8554909150600090612a0b9060019061318e565b9050818114612a70576000866000018281548110612a2b57612a2b6130d0565b9060005260206000200154905080876000018481548110612a4e57612a4e6130d0565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612a8157612a8161322d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610693565b6000915050610693565b60006001600160e01b03198216637965db0b60e01b148061069357506301ffc9a760e01b6001600160e01b0319831614610693565b600060208284031215612b0d57600080fd5b81356001600160e01b03198116811461073857600080fd5b60005b83811015612b40578181015183820152602001612b28565b50506000910152565b6020815260008251806020840152612b68816040850160208701612b25565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612ba357600080fd5b8135602067ffffffffffffffff80831115612bc057612bc0612b7c565b8260051b604051601f19603f83011681018181108482111715612be557612be5612b7c565b604052938452858101830193838101925087851115612c0357600080fd5b83870191505b84821015612c2257813583529183019190830190612c09565b979650505050505050565b60008060408385031215612c4057600080fd5b82359150602083013567ffffffffffffffff811115612c5e57600080fd5b612c6a85828601612b92565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cae578351151583529284019291840191600101612c90565b50909695505050505050565b80356001600160a01b03811681146109dc57600080fd5b60008060408385031215612ce457600080fd5b612ced83612cba565b946020939093013593505050565b600060208284031215612d0d57600080fd5b5035919050565b600080600060608486031215612d2957600080fd5b612d3284612cba565b9250612d4060208501612cba565b9150604084013590509250925092565b60008060408385031215612d6357600080fd5b82359150612d7360208401612cba565b90509250929050565b60008060408385031215612d8f57600080fd5b50508035926020909101359150565b60008060408385031215612db157600080fd5b612dba83612cba565b9150612d7360208401612cba565b801515811461080057600080fd5b60008060408385031215612de957600080fd5b612df283612cba565b91506020830135612e0281612dc8565b809150509250929050565b600060208284031215612e1f57600080fd5b61073882612cba565b600080600060608486031215612e3d57600080fd5b612e4684612cba565b925060208401359150604084013567ffffffffffffffff811115612e6957600080fd5b612e7586828701612b92565b9150509250925092565b600060208284031215612e9157600080fd5b813567ffffffffffffffff811115612ea857600080fd5b61140a84828501612b92565b600081518084526020808501945080840160005b83811015612ee457815187529582019590820190600101612ec8565b509495945050505050565b6020815260006107386020830184612eb4565b600181811c90821680612f1657607f821691505b602082108103612f3657634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612f4e57600080fd5b815160ff8116811461073857600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561069357610693612f5f565b600181815b80851115612fc9578160001904821115612faf57612faf612f5f565b80851615612fbc57918102915b93841c9390800290612f93565b509250929050565b600082612fe057506001610693565b81612fed57506000610693565b8160018114613003576002811461300d57613029565b6001915050610693565b60ff84111561301e5761301e612f5f565b50506001821b610693565b5060208310610133831016604e8410600b841016171561304c575081810a610693565b6130568383612f8e565b806000190482111561306a5761306a612f5f565b029392505050565b600061073860ff841683612fd1565b634e487b7160e01b600052601260045260246000fd5b6000826130b457634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761069357610693612f5f565b634e487b7160e01b600052603260045260246000fd5b8082018082111561069357610693612f5f565b60006020828403121561310b57600080fd5b815161073881612dc8565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561313e57600080fd5b5051919050565b60006001820161315757613157612f5f565b5060010190565b60018060a01b03841681528260208201526060604082015260006131856060830184612eb4565b95945050505050565b8181038181111561069357610693612f5f565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516131d9816017850160208801612b25565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161320a816028840160208801612b25565b01602801949350505050565b60008161322557613225612f5f565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205f342a878fe3f565613c628ed9f5a9738c32853f2e3f391e586f28bbbc790fb464736f6c63430008140033e1322164d2a9c594e09927ac212ba43210d25e7c9efc459689fb7b6107c895b1000000000000000000000000735d8f3b6a5d2c96d0405230c50eaf96794fbb8800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000007861f80000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000411c1ab1e4ccd16a0b6556c625caf5f556580995000000000000000000000000961359b67142d4fc86b65a50fdc2b006a0439ca600000000000000000000000042fa90abba2acd3b064dd3f29f99123fc68fdde3000000000000000000000000a63fba872931588e70a2cb4aaf94c34b78e17922000000000000000000000000b57ef0d6d4765cebd70222c9c92f0a789174b5e4000000000000000000000000bf2f5179e3159e6860ddbfc6d6ce83c3c586cf500000000000000000000000007a5f2225a501039cedd5cad2ef5e528ab00b67900000000000000000000000005ea0afe9002c76956a3fc70df36ad2e5ccf4e3da000000000000000000000000fecbb287042f57bac758ec606c5aed3a040abef8000000000000000000000000ac1fec2e8be3e2fd053e07780afe77fac3e3bad90000000000000000000000005f64506267dac813d566597403304930a05cb79e000000000000000000000000c59bc469e5d4c99f1946f578dd5de6bda0e20bf60000000000000000000000000751293d7b2209cac5d48eef89ca81f6b7fe0f8d000000000000000000000000992fc98f5761a00a4d4ae63fcd720cdc96dc514f
0xa26469706673582212205f342a878fe3f565613c628ed9f5a9738c32853f2e3f391e586f28bbbc790fb464736f6c63430008140033e1322164d2a9c594e09927ac212ba43210d25e7c9efc459689fb7b6107c895b1000000000000000000000000735d8f3b6a5d2c96d0405230c50eaf96794fbb8800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000007861f80000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000411c1ab1e4ccd16a0b6556c625caf5f556580995000000000000000000000000961359b67142d4fc86b65a50fdc2b006a0439ca600000000000000000000000042fa90abba2acd3b064dd3f29f99123fc68fdde3000000000000000000000000a63fba872931588e70a2cb4aaf94c34b78e17922000000000000000000000000b57ef0d6d4765cebd70222c9c92f0a789174b5e4000000000000000000000000bf2f5179e3159e6860ddbfc6d6ce83c3c586cf500000000000000000000000007a5f2225a501039cedd5cad2ef5e528ab00b67900000000000000000000000005ea0afe9002c76956a3fc70df36ad2e5ccf4e3da000000000000000000000000fecbb287042f57bac758ec606c5aed3a040abef8000000000000000000000000ac1fec2e8be3e2fd053e07780afe77fac3e3bad90000000000000000000000005f64506267dac813d566597403304930a05cb79e000000000000000000000000c59bc469e5d4c99f1946f578dd5de6bda0e20bf60000000000000000000000000751293d7b2209cac5d48eef89ca81f6b7fe0f8d000000000000000000000000992fc98f5761a00a4d4ae63fcd720cdc96dc514f