0 txs
198 calls
constructor
constructor()
functions
_validateMarketPrice
viewfunction _validateMarketPrice(address _expectedToken) view returns (uint256 _marketPrice)
controller
viewfunction controller() view returns (address)
DEFAULT_SLIPPAGE
viewfunction DEFAULT_SLIPPAGE() view returns (uint256)
disabled
viewfunction disabled() view returns (bool)
getPrice
viewfunction getPrice(address _expectedToken) view returns (uint256)
implementation
viewfunction implementation() view returns (address)
lastOfferID
viewfunction lastOfferID() view returns (uint256)
merkleRoot
viewfunction merkleRoot() view returns (bytes32)
offers
viewfunction offers(uint256) view returns (uint256 id, address creator, uint256 amount, uint256 remainingAmount, address offeredToken, uint256 expectedPrice, address expectedToken, uint256 createdAt)
paired
viewfunction paired() view returns (address)
pool
viewfunction pool() view returns (address)
premium
viewfunction premium() view returns (uint256)
token
viewfunction token() view returns (address)
version
viewfunction version() view returns (uint8)
whitelistEnabled
viewfunction whitelistEnabled() view returns (bool)
wrapped
viewfunction wrapped() view returns (address)
cancelOffer
nonpayablefunction cancelOffer(uint256 _offerID)
contribute
payablefunction contribute(uint256[] offerIDs, uint256 amount, uint256 expectedPrice, uint256 slippage, bytes32[] proof) payable
createOffer
payablefunction createOffer(uint256 _amount, address _expectedToken, uint256 _expectedPrice, uint256 _slippage, bytes32[] proof) payable
disable
nonpayablefunction disable()
disableWhitelist
nonpayablefunction disableWhitelist()
initialize
nonpayablefunction initialize(address _controller, address _wrappedNative, address _pool, address _token, address _paired, uint8 _version, bytes32 _merkleRoot, uint256 _premium)
setPremium
nonpayablefunction setPremium(uint256 _premium)
updateWhitelist
nonpayablefunction updateWhitelist(bytes32 _merkleRoot, string _ipfsHash)
events
ContributionEvent
event ContributionEvent(uint256 id, address contributor, uint256 amountIn, address contributedToken, uint256 amountOut, uint256 premium, uint256 contributorFee, uint256 creatorFee, address receivedToken, uint256 timestamp, string eventType)
Disabled
event Disabled()
Initialized
event Initialized(uint64 version)
OfferEvent
event OfferEvent(uint256 id, address creator, uint256 amount, address offeredToken, uint256 expectedPrice, address expectedToken, uint256 timestamp, string eventType)
PremiumUpdated
event PremiumUpdated(uint256 newPremium)
PrivateSwitchInitialized
event PrivateSwitchInitialized(address controller, address wrappedNative, address pool, address token, address paired, uint8 version, bytes32 merkleRoot, uint256 premium, bool whitelistEnabled, uint256 defaultSlippage)
WhitelistDisabled
event WhitelistDisabled()
WhitelistUpdated
event WhitelistUpdated(bytes32 newMerkleRoot, string ipfsHash)
errors
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613eac806100d65f395ff3fe608060405260043610610147575f3560e01c80639030ab40116100b3578063e0a73a931161006d578063e0a73a9314610412578063e96fa66d14610427578063ee0708051461043a578063ef706adf14610453578063f77c479114610472578063fc0c546a14610490575f5ffd5b80639030ab4014610383578063a8798510146103a2578063ab2f21a9146103b7578063cf880331146103cc578063d6b0f484146103eb578063def2d738146103ff575f5ffd5b80634f74ab67116101045780634f74ab671461021d57806350e70d481461023c57806351fb012d1461025b57806354fd4d50146102895780635c60da1b146102bb5780638a72ea6a146102cf575f5ffd5b806310ec214f1461014b57806316f0115b1461016c5780632925df83146101a85780632eb4a7ab146101c75780632f2770db146101ea57806341976e09146101fe575b5f5ffd5b348015610156575f5ffd5b5061016a610165366004613693565b6104af565b005b348015610177575f5ffd5b5060065461018b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101b3575f5ffd5b5061016a6101c23660046136cc565b61059f565b3480156101d2575f5ffd5b506101dc60095481565b60405190815260200161019f565b3480156101f5575f5ffd5b5061016a610937565b348015610209575f5ffd5b506101dc61021836600461375c565b610a25565b348015610228575f5ffd5b5061016a6102373660046137bc565b610a35565b348015610247575f5ffd5b5060055461018b906001600160a01b031681565b348015610266575f5ffd5b50600a5461027990610100900460ff1681565b604051901515815260200161019f565b348015610294575f5ffd5b506008546102a990600160a01b900460ff1681565b60405160ff909116815260200161019f565b3480156102c6575f5ffd5b5061018b610b1b565b3480156102da575f5ffd5b5061033b6102e9366004613693565b600160208190525f9182526040909120805491810154600282015460038301546004840154600585015460068601546007909601546001600160a01b0395861696949593949284169391929091169088565b604080519889526001600160a01b0397881660208a01528801959095526060870193909352908416608086015260a085015290911660c083015260e08201526101000161019f565b34801561038e575f5ffd5b506101dc61039d36600461375c565b610bbd565b3480156103ad575f5ffd5b506101dc60025481565b3480156103c2575f5ffd5b506101dc60045481565b3480156103d7575f5ffd5b5060085461018b906001600160a01b031681565b3480156103f6575f5ffd5b5061016a610e2d565b61016a61040d3660046138da565b610f0a565b34801561041d575f5ffd5b506101dc60035481565b61016a610435366004613942565b611582565b348015610445575f5ffd5b50600a546102799060ff1681565b34801561045e575f5ffd5b5061016a61046d366004613693565b6119d9565b34801561047d575f5ffd5b505f5461018b906001600160a01b031681565b34801561049b575f5ffd5b5060075461018b906001600160a01b031681565b5f5f9054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104fe573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052291906139f5565b6001600160a01b0316336001600160a01b03161461055b5760405162461bcd60e51b815260040161055290613a10565b60405180910390fd5b61056481611cd2565b60038190556040518181527f0b6bb76339f9f2471be7cc41c6d0b2f8ae50afbc0f32e5e5ecadb3a95d788fad9060200160405180910390a150565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156105e45750825b90505f8267ffffffffffffffff1660011480156106005750303b155b90508115801561060e575080155b1561062c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561065657845460ff60401b1916600160401b1785555b6001600160a01b038d1661067c5760405162461bcd60e51b815260040161055290613a47565b6001600160a01b038c166106a25760405162461bcd60e51b815260040161055290613a47565b6001600160a01b038b166106c85760405162461bcd60e51b815260040161055290613a47565b6001600160a01b038a166106ee5760405162461bcd60e51b815260040161055290613a47565b6001600160a01b0389166107145760405162461bcd60e51b815260040161055290613a47565b61071c611d23565b8c5f5f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508b60055f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508a60065f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508960075f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508860085f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555087600860146101000a81548160ff021916908360ff1602179055508660098190555061080486611cd2565b856003819055506001600a60016101000a81548160ff02191690831515021790555060c86002819055507f63acbc78bfb8c951f24cdbfcc487496a1b0e9c1188fdfd37b5b2f6265976a2188d8d8d8d8d8d8d8d600a60019054906101000a900460ff166002546040516108da9a999897969594939291906001600160a01b039a8b168152988a1660208a01529689166040890152948816606088015292909616608086015260ff1660a085015260c084019490945260e08301939093529115156101008201526101208101919091526101400190565b60405180910390a1831561092857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f546001600160a01b03163314806109d257505f5f9054906101000a90046001600160a01b03166001600160a01b0316635f17669f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610999573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bd91906139f5565b6001600160a01b0316336001600160a01b0316145b6109ee5760405162461bcd60e51b815260040161055290613a10565b600a805460ff191660011790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e1905f90a1565b5f610a2f82610bbd565b92915050565b5f5f9054906101000a90046001600160a01b03166001600160a01b031663aaa46ddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a84573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa891906139f5565b6001600160a01b0316336001600160a01b031614610ad85760405162461bcd60e51b815260040161055290613a10565b60098290556040517f75078ba3468553e61a92ecd8e7ad522e4341db903a24a4d4e3cd266a5c9811ba90610b0f9084908490613ac1565b60405180910390a15050565b5f80610b4860017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51613af5565b5f1b90505f815490505f819050806001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb591906139f5565b935050505090565b6005546008545f9182916001600160a01b03908116911614610ca3575f54600854604051636028be4d60e11b81526001600160a01b039283169263c0517c9a92610c19928892821691600160a01b900460ff1690600401613b08565b602060405180830381865afa158015610c34573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5891906139f5565b600854909150600160a01b900460ff16600303610c8057610c798184611d35565b9150610e27565b600854600160a01b900460ff16600203610c9e57610c798184611e2a565b610e27565b6007546001600160a01b0384811691161480610ccc57506005546001600160a01b038481169116145b15610d60575f54600754600554600854604051636028be4d60e11b81526001600160a01b039485169463c0517c9a94610d1a9490821693911691600160a01b90910460ff1690600401613b08565b602060405180830381865afa158015610d35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5991906139f5565b9050610de8565b5f54600554600854604051636028be4d60e11b81526001600160a01b039384169363c0517c9a93610da6938993919092169160ff600160a01b9091041690600401613b08565b602060405180830381865afa158015610dc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de591906139f5565b90505b600854600160a01b900460ff16600303610e0657610c798184611d35565b600854600160a01b900460ff16600203610e2757610e248184611e2a565b91505b50919050565b5f5f9054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea091906139f5565b6001600160a01b0316336001600160a01b031614610ed05760405162461bcd60e51b815260040161055290613a10565b600a805461ff00191690555f60038190556040517f212c6e1d3045c9581ef0adf2504dbb1d137f52f38162ccf77a16c69d14eba5c39190a1565b610f143382611f59565b612710821115610f665760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a20496e76616c696420736c697070616765006044820152606401610552565b600a5460ff16158015610f8157505f851180610f8157505f34115b8015610f9557506001600160a01b03841615155b8015610fa057505f83115b610fec5760405162461bcd60e51b815260206004820152601c60248201527f507269766174655377697463683a20496e76616c696420696e707574000000006044820152606401610552565b3415611025576005546001600160a01b03908116908516036110205760405162461bcd60e51b815260040161055290613b2e565b611053565b6007546001600160a01b03908116908516036110535760405162461bcd60e51b815260040161055290613b2e565b6005546001600160a01b03858116911614611209575f5f9054906101000a90046001600160a01b03166001600160a01b031663e7f92e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110db9190613b73565b5f54604051633ac295ff60e11b81526001600160a01b038781166004830152909116906375852bfe90602401602060405180830381865afa158015611122573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111469190613b73565b111580156111bd57505f8054604051633ac295ff60e11b81526001600160a01b038781166004830152909116906375852bfe90602401602060405180830381865afa158015611197573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bb9190613b73565b115b6112095760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a20537769746368206e6f7420666f756e64006044820152606401610552565b5f5f3411611222576007546001600160a01b031661122f565b6005546001600160a01b03165b90505f5f341161123f5786611241565b345b90505f61124d87610bbd565b90505f61125d8787612710611ffc565b90506112698188613af5565b8210156112885760405162461bcd60e51b815260040161055290613b8a565b6007546001600160a01b03908116908516036113a5576007546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112e4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113089190613b73565b905061132d60075f9054906101000a90046001600160a01b031633308d6002546120a7565b6007546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015611373573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113979190613b73565b6113a19190613af5565b9350505b60048054905f6113b483613bc1565b91905055506040518061010001604052806004548152602001336001600160a01b03168152602001848152602001848152602001856001600160a01b03168152602001838152602001896001600160a01b031681526020014281525060015f60045481526020019081526020015f205f820151815f01556020820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0820151816005015560c0820151816006015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e082015181600701559050507f10501261b12a42e5acd224d150a1c2a0ecde5df58a569b56de13df8e385c71f7600454338587868d4260405161156f97969594939291909687526001600160a01b03958616602088015260408701949094529184166060860152608085015290911660a083015260c082015261010060e082018190526007908201526610dc99585d195960ca1b6101208201526101400190565b60405180910390a1505050505050505050565b61158a61221a565b6115943382611f59565b600a5460ff161580156115a657508415155b80156115ba57505f8411806115ba57505f34115b6116065760405162461bcd60e51b815260206004820152601c60248201527f507269766174655377697463683a20496e76616c696420696e707574000000006044820152606401610552565b3415155f611612613675565b5f836116415761163c8a8a5f81811061162d5761162d613bd9565b9050602002013589888a612251565b611665565b6116658a8a5f81811061165657611656613bd9565b9050602002013534888a61252a565b945090925090506116778a8a8561265c565b5f5f6116938c8c88611689578c61168b565b345b86888b6127dd565b5f8054604051631711922960e31b8152336004820152939550919350916117149185916001600160a01b039091169063b88c9148906024015b602060405180830381865afa1580156116e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170b9190613b73565b620f4240612ada565b9050861561183e5760075461174b906001600160a01b0316336117378487613af5565b8c15611743578c612b16565b600254612b16565b6007545f546040805163011a412160e61b815290516117c7936001600160a01b0390811693169163469048409160048083019260209291908290030181865afa15801561179a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117be91906139f5565b83600254612b16565b5f546040805163011a412160e61b81529051611839926001600160a01b03169163469048409160048083019260209291908290030181865afa15801561180f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183391906139f5565b83612c7f565b6119b4565b60055485516001600160a01b039182169116036118df57611868336118638386613af5565b612c7f565b5f546040805163011a412160e61b815290516118da926001600160a01b03169163469048409160048083019260209291908290030181865afa1580156118b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d491906139f5565b82612c7f565b61193b565b84516118f090336117378487613af5565b84515f546040805163011a412160e61b8152905161193b93926001600160a01b03169163469048409160048083019260209291908290030181865afa15801561179a573d5f5f3e3d5ffd5b6020808601515f546040805163011a412160e61b815290516119b49433936001600160a01b031692634690484092600480830193928290030181865afa158015611987573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ab91906139f5565b856002546120a7565b505050505050506119d160015f516020613e575f395f51905f5255565b505050505050565b6119e161221a565b5f811180156119f257506004548111155b611a3e5760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a20496e76616c6964206f66666572204944006044820152606401610552565b5f818152600160205260409020805415801590611a67575060018101546001600160a01b031633145b611ac75760405162461bcd60e51b815260206004820152602b60248201527f507269766174655377697463683a20496e76616c6964206f66666572206f722060448201526a3737ba1031b932b0ba37b960a91b6064820152608401610552565b60055460048201546001600160a01b03918216911603611b9b57600181015460038201546040515f926001600160a01b031691908381818185875af1925050503d805f8114611b31576040519150601f19603f3d011682016040523d82523d5f602084013e611b36565b606091505b5050905080611b955760405162461bcd60e51b815260206004820152602560248201527f507269766174655377697463683a204e6174697665207472616e736665722066604482015264185a5b195960da1b6064820152608401610552565b50611bc1565b600481015460018201546003830154611bc1926001600160a01b03908116921690612d2f565b60018101546002820154600483015460058401546006850154604080518881526001600160a01b03968716602082015290810194909452918416606084015260808301529190911660a08201524260c082015261010060e082018190526008908201526710d85b98d95b195960c21b6101208201527f10501261b12a42e5acd224d150a1c2a0ecde5df58a569b56de13df8e385c71f7906101400160405180910390a1505f818152600160208190526040822082815590810180546001600160a01b031990811690915560028201839055600382018390556004820180548216905560058201839055600682018054909116905560070155611ccf60015f516020613e575f395f51905f5255565b50565b601e811115611ccf5760405162461bcd60e51b815260206004820152601e60248201527f507269766174655377697463683a20496e76616c6964207072656d69756d00006044820152606401610552565b611d2b612d8e565b611d33612dd7565b565b5f5f836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611d73573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d979190613c03565b50505050505090505f836001600160a01b0316856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0a91906139f5565b6001600160a01b031614159050611e218282612ddf565b95945050505050565b5f5f8390505f5f826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e919190613cb0565b506001600160701b031691506001600160701b03169150846001600160a01b0316836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1291906139f5565b6001600160a01b031614611f3a57611f3381670de0b6b3a764000084611ffc565b9350611f50565b611f4d82670de0b6b3a764000083611ffc565b93505b50505092915050565b600a54610100900460ff1615611ff8576009546040516bffffffffffffffffffffffff19606085901b166020820152611fac91839160340160405160208183030381529060405280519060200120612df3565b611ff85760405162461bcd60e51b815260206004820152601e60248201527f507269766174655377697463683a204e6f742077686974656c697374656400006044820152606401610552565b5050565b5f80805f19858709858702925082811083820303915050805f03612030575f8411612025575f5ffd5b5082900490506120a0565b80841161203b575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6040516370a0823160e01b81526001600160a01b0384811660048301525f91908716906370a0823190602401602060405180830381865afa1580156120ee573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121129190613b73565b905061212086868686612e08565b6040516370a0823160e01b81526001600160a01b0385811660048301525f9183918916906370a0823190602401602060405180830381865afa158015612168573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061218c9190613b73565b6121969190613af5565b905083811015612211576121ac836103e8613af5565b846121b9836103e8613cfc565b6121c39190613d27565b10156122115760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a2042616c616e636520736c697070616765006044820152606401610552565b50505050505050565b5f516020613e575f395f51905f5280546001190161224b57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b612259613675565b5f85815260016020526040812080548291901580159061228c575060055460068201546001600160a01b03908116911614155b6122d85760405162461bcd60e51b815260206004820152601c60248201527f507269766174655377697463683a20496e76616c6964206f66666572000000006044820152606401610552565b6006810154604051636eb1769f60e11b815233600482015230602482015288916001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015612326573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061234a9190613b73565b10156123a65760405162461bcd60e51b815260206004820152602560248201527f507269766174655377697463683a20496e73756666696369656e7420616c6c6f60448201526477616e636560d81b6064820152608401610552565b60068101546123bd906001600160a01b0316610bbd565b91505f6123cd8688612710611ffc565b90506123d98187613d46565b8311156123f85760405162461bcd60e51b815260040161055290613b8a565b60048201546001600160a01b03908116808752600684015482166020880152600554909116146124315761242c8289612e41565b6124b8565b5f80546006840154600854604051630f5b58d760e41b81526001600160a01b039384169463f5b58d7094612479948f94911692600160a01b90910460ff169190600401613d59565b602060405180830381865afa158015612494573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b89190613b73565b93505f841161251e5760405162461bcd60e51b815260206004820152602c60248201527f507269766174655377697463683a20496e73756666696369656e74207377617060448201526b1031b0b631bab630ba34b7b760a11b6064820152608401610552565b50509450945094915050565b612532613675565b5f858152600160205260408120805482919015801590612564575060055460068201546001600160a01b039081169116145b6125b05760405162461bcd60e51b815260206004820152601c60248201527f507269766174655377697463683a20496e76616c6964206f66666572000000006044820152606401610552565b60068101546125c7906001600160a01b0316610bbd565b91505f6125d78688612710611ffc565b90506125e38187613d46565b8311156126025760405162461bcd60e51b815260040161055290613b8a565b6004828101546001600160a01b039081168752600554811660208801525f54600754600854604051630f5b58d760e41b81529284169463f5b58d7094612479948f9490911692600160a01b900460ff169160019101613d59565b5f5b828110156127d7575f60015f86868581811061267c5761267c613bd9565b9050602002013581526020019081526020015f20905061277381600501545f5f9054906101000a90046001600160a01b03166001600160a01b0316635f17669f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061270d91906139f5565b6001600160a01b03166361fc83716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612748573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276c9190613b73565b6064611ffc565b8310156127ce5760405162461bcd60e51b815260206004820152602360248201527f507269766174655377697463683a204d61726b657420507269636520746f6f206044820152626c6f7760e81b6064820152608401610552565b5060010161265e565b50505050565b5f8080805b88811015612918575f60015f8c8c8581811061280057612800613bd9565b9050602002013581526020019081526020015f209050805f01545f036128685760405162461bcd60e51b815260206004820152601e60248201527f507269766174655377697463683a204f66666572206e6f7420666f756e6400006044820152606401610552565b81156128fe57865160048201546001600160a01b0391821691161480156128a35750602087015160068201546001600160a01b039182169116145b6128fe5760405162461bcd60e51b815260206004820152602660248201527f507269766174655377697463683a20496e636f6e73697374656e74206f66666560448201526539103830b4b960d11b6064820152608401610552565b600381015461290d9084613d46565b9250506001016127e2565b50865f5b89811015612ab1575f60015f8d8d8581811061293a5761293a613bd9565b9050602002013581526020019081526020015f2090505f6129608b836003015487611ffc565b90505f6129728b846003015488611ffc565b90505f5f5f6129838686868f6131b7565b9250925092508a838c0110156129e65760405162461bcd60e51b815260206004820152602260248201527f507269766174655377697463683a204f766572666c6f773a20616d6f756e744f6044820152611d5d60f21b6064820152608401610552565b828b019a5089818b011015612a345760405162461bcd60e51b81526020600482015260146024820152734f766572666c6f773a2063726561746f7246656560601b6044820152606401610552565b9889019881881015612a9c5760405162461bcd60e51b815260206004820152602b60248201527f507269766174655377697463683a20556e646572666c6f773a2072656d61696e60448201526a34b733a0b6b7bab73a24b760a91b6064820152608401610552565b509095039450506001909201915061291c9050565b50848015612abe57505f81115b15612acd57612acd3382612c7f565b5050965096945050505050565b5f612ae6848484611ffc565b90505f8280612af757612af7613d13565b84860911156120a0575f198110612b0c575f5ffd5b6001019392505050565b6040516370a0823160e01b81526001600160a01b0384811660048301525f91908616906370a0823190602401602060405180830381865afa158015612b5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b819190613b73565b9050612b8e858585612d2f565b6040516370a0823160e01b81526001600160a01b0385811660048301525f9183918816906370a0823190602401602060405180830381865afa158015612bd6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bfa9190613b73565b612c049190613af5565b9050838110156119d157612c1a836103e8613af5565b84612c27836103e8613cfc565b612c319190613d27565b10156119d15760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a2042616c616e636520736c697070616765006044820152606401610552565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612cc8576040519150601f19603f3d011682016040523d82523d5f602084013e612ccd565b606091505b5050905080612d175760405162461bcd60e51b815260206004820152601660248201527513985d1a5d99481d1c985b9cd9995c8819985a5b195960521b6044820152606401610552565b505050565b60015f516020613e575f395f51905f5255565b6040516001600160a01b03838116602483015260448201839052612d1791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613388565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611d3357604051631afcd79f60e31b815260040160405180910390fd5b612d1c612d8e565b5f6120a083670de0b6b3a7640000846133f4565b5f82612dff85846134bb565b14949350505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526127d79186918216906323b872dd90608401612d5c565b5f805460068401546008546040516351e8602d60e01b81526001600160a01b03928316600482015290821660248201528392839283929116906351e8602d90604401602060405180830381865afa158015612e9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec29190613b73565b5f8054604051631d9fe28360e31b8152600481018490529293509091829182916001600160a01b039091169063ecff141890602401608060405180830381865afa158015612f12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f369190613d82565b6008549396509094509250506001600160a01b03808416911603613078575f5460068a0154604051637d8577e160e11b8152600481018b90526001600160a01b039182166024820152858216604482015260ff8416606482015291169063fb0aefc290608401602060405180830381865afa158015612fb7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fdb9190613b73565b5f5460048b810154600654600854604051637d8577e160e11b81529384018e90526001600160a01b0392831660248501529082166044840152600160a01b900460ff16606483015292985091169063fb0aefc290608401602060405180830381865afa15801561304d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130719190613b73565b945061319f565b5f805460068b0154604051630f5b58d760e41b81526001600160a01b039283169363f5b58d70936130b2938e939116918791600401613d59565b602060405180830381865afa1580156130cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130f19190613b73565b95505f5f9054906101000a90046001600160a01b03166001600160a01b031663f5b58d70898b6004015f9054906101000a90046001600160a01b0316600860149054906101000a900460ff165f6040518563ffffffff1660e01b815260040161315d9493929190613d59565b602060405180830381865afa158015613178573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061319c9190613b73565b94505b6131aa868987611ffc565b9998505050505050505050565b5f5f5f6131c88760030154866134fd565b60038801549093505f90158015906131e157505f600354115b1561323f576131f4846003546064611ffc565b60038901549091506132068286613d46565b111561323f5761322a8860030154606460035460646132259190613d46565b611ffc565b935083886003015461323c9190613af5565b90505b61324a878588611ffc565b5f5460018a0154604051631711922960e31b81526001600160a01b03918216600482015292955061328a928692919091169063b88c9148906024016116cc565b9150846132c557600688015460018901546132c0916001600160a01b03908116913391166132b88688613af5565b6002546120a7565b6132e1565b60018801546132e1906001600160a01b03166118638486613af5565b6132eb8185613d46565b886003015f8282546132fd9190613af5565b9091555061330f90508884868461350c565b87600301545f036133715787545f908152600160208190526040822082815590810180546001600160a01b0319908116909155600282018390556003820183905560048201805482169055600582018390556006820180549091169055600701555b61337b8185613d46565b9350509450945094915050565b5f5f60205f8451602086015f885af1806133a7576040513d5f823e3d81fd5b50505f513d915081156133be5780600114156133cb565b6001600160a01b0384163b155b156127d757604051635274afe760e01b81526001600160a01b0385166004820152602401610552565b5f6001600160801b036001600160a01b03851611613465575f6134206001600160a01b03861680613cfc565b9050821561344557613440600160c01b856001600160801b031683611ffc565b61345d565b61345d81856001600160801b0316600160c01b611ffc565b9150506120a0565b5f61347e6001600160a01b03861680600160401b611ffc565b905082156134a35761349e600160801b856001600160801b031683611ffc565b611e21565b611e2181856001600160801b0316600160801b611ffc565b5f81815b84518110156134f5576134eb828683815181106134de576134de613bd9565b6020026020010151613649565b91506001016134bf565b509392505050565b5f8282188284100282186120a0565b835460068501547f7b1b1ba164ace98683b510c9ef5ca6066b2f02cfceaeda9c52455cf4c12b83b79190339086906001600160a01b031686866135816135528284613d46565b5f54604051631711922960e31b81523360048201526001600160a01b039091169063b88c9148906024016116cc565b5f5460018d0154604051631711922960e31b81526001600160a01b0391821660048201526135bb928e92169063b88c9148906024016116cc565b60048d015460038e01546001600160a01b0390911690429015613601576040518060400160405280600b81526020016a10dbdb9d1c9a589d5d195960aa1b815250613624565b60405180604001604052806009815260200168119d5b199a5b1b195960ba1b8152505b60405161363b9b9a99989796959493929190613dde565b60405180910390a150505050565b5f818310613663575f8281526020849052604090206120a0565b5f8381526020839052604090206120a0565b60405180604001604052806002906020820280368337509192915050565b5f602082840312156136a3575f5ffd5b5035919050565b6001600160a01b0381168114611ccf575f5ffd5b60ff81168114611ccf575f5ffd5b5f5f5f5f5f5f5f5f610100898b0312156136e4575f5ffd5b88356136ef816136aa565b975060208901356136ff816136aa565b9650604089013561370f816136aa565b9550606089013561371f816136aa565b9450608089013561372f816136aa565b935060a089013561373f816136be565b979a969950949793969295929450505060c08201359160e0013590565b5f6020828403121561376c575f5ffd5b81356120a0816136aa565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156137b4576137b4613777565b604052919050565b5f5f604083850312156137cd575f5ffd5b82359150602083013567ffffffffffffffff8111156137ea575f5ffd5b8301601f810185136137fa575f5ffd5b803567ffffffffffffffff81111561381457613814613777565b613827601f8201601f191660200161378b565b81815286602083850101111561383b575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82601f830112613869575f5ffd5b813567ffffffffffffffff81111561388357613883613777565b8060051b6138936020820161378b565b918252602081850181019290810190868411156138ae575f5ffd5b6020860192505b838310156138d05782358252602092830192909101906138b5565b9695505050505050565b5f5f5f5f5f60a086880312156138ee575f5ffd5b853594506020860135613900816136aa565b93506040860135925060608601359150608086013567ffffffffffffffff811115613929575f5ffd5b6139358882890161385a565b9150509295509295909350565b5f5f5f5f5f5f60a08789031215613957575f5ffd5b863567ffffffffffffffff81111561396d575f5ffd5b8701601f8101891361397d575f5ffd5b803567ffffffffffffffff811115613993575f5ffd5b8960208260051b84010111156139a7575f5ffd5b60209182019750955087013593506040870135925060608701359150608087013567ffffffffffffffff8111156139dc575f5ffd5b6139e889828a0161385a565b9150509295509295509295565b5f60208284031215613a05575f5ffd5b81516120a0816136aa565b6020808252601d908201527f507269766174655377697463683a204e6f7420617574686f72697a6564000000604082015260600190565b6020808252601b908201527f507269766174655377697463683a2041646472657373205a65726f0000000000604082015260600190565b5f81518084525f5b81811015613aa257602081850181015186830182015201613a86565b505f602082860101526020601f19601f83011685010191505092915050565b828152604060208201525f613ad96040830184613a7e565b949350505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a2f57610a2f613ae1565b6001600160a01b03938416815291909216602082015260ff909116604082015260600190565b60208082526025908201527f507269766174655377697463683a20496e76616c6964206578706563746564206040820152643a37b5b2b760d91b606082015260800190565b5f60208284031215613b83575f5ffd5b5051919050565b60208082526017908201527f507269766174655377697463683a20536c697070616765000000000000000000604082015260600190565b5f60018201613bd257613bd2613ae1565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b805161ffff81168114613bfe575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a031215613c19575f5ffd5b8751613c24816136aa565b8097505060208801518060020b8114613c3b575f5ffd5b9550613c4960408901613bed565b9450613c5760608901613bed565b9350613c6560808901613bed565b925060a0880151613c75816136be565b60c08901519092508015158114613c8a575f5ffd5b8091505092959891949750929550565b80516001600160701b0381168114613bfe575f5ffd5b5f5f5f60608486031215613cc2575f5ffd5b613ccb84613c9a565b9250613cd960208501613c9a565b9150604084015163ffffffff81168114613cf1575f5ffd5b809150509250925092565b8082028115828204841417610a2f57610a2f613ae1565b634e487b7160e01b5f52601260045260245ffd5b5f82613d4157634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a2f57610a2f613ae1565b9384526001600160a01b0392909216602084015260ff1660408301521515606082015260800190565b5f5f5f5f60808587031215613d95575f5ffd5b8451613da0816136aa565b6020860151909450613db1816136aa565b6040860151909350613dc2816136aa565b6060860151909250613dd3816136be565b939692955090935050565b8b81526001600160a01b038b81166020830152604082018b905289811660608301526080820189905260a0820188905260c0820187905260e082018690528416610100820152610120810183905261016061014082018190525f90613e4590830184613a7e565b9d9c5050505050505050505050505056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122045fd04881bb4db7fd4de2bfed5532d8a7f49401d4ddfd1af65e0c29ef0f66e4564736f6c634300081b0033