9 txs
10 calls
constructor
constructor(address _vault, address _router, address _shortsTracker, address _weth, uint256 _depositFee, address _orderBook)
functions
admin
viewfunction admin() view returns (address)
BASIS_POINTS_DIVISOR
viewfunction BASIS_POINTS_DIVISOR() view returns (uint256)
depositFee
viewfunction depositFee() view returns (uint256)
feeReserves
viewfunction feeReserves(address) view returns (uint256)
gov
viewfunction gov() view returns (address)
increasePositionBufferBps
viewfunction increasePositionBufferBps() view returns (uint256)
inLegacyMode
viewfunction inLegacyMode() view returns (bool)
isLiquidator
viewfunction isLiquidator(address) view returns (bool)
isOrderKeeper
viewfunction isOrderKeeper(address) view returns (bool)
isPartner
viewfunction isPartner(address) view returns (bool)
maxGlobalLongSizes
viewfunction maxGlobalLongSizes(address) view returns (uint256)
maxGlobalShortSizes
viewfunction maxGlobalShortSizes(address) view returns (uint256)
orderBook
viewfunction orderBook() view returns (address)
referralStorage
viewfunction referralStorage() view returns (address)
router
viewfunction router() view returns (address)
shortsTracker
viewfunction shortsTracker() view returns (address)
shouldValidateIncreaseOrder
viewfunction shouldValidateIncreaseOrder() view returns (bool)
vault
viewfunction vault() view returns (address)
weth
viewfunction weth() view returns (address)
approve
nonpayablefunction approve(address _token, address _spender, uint256 _amount)
decreasePosition
nonpayablefunction decreasePosition(address _collateralToken, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver, uint256 _price)
decreasePositionAndSwap
nonpayablefunction decreasePositionAndSwap(address[] _path, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver, uint256 _price, uint256 _minOut)
decreasePositionAndSwapETH
nonpayablefunction decreasePositionAndSwapETH(address[] _path, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver, uint256 _price, uint256 _minOut)
decreasePositionETH
nonpayablefunction decreasePositionETH(address _collateralToken, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver, uint256 _price)
executeDecreaseOrder
nonpayablefunction executeDecreaseOrder(address _account, uint256 _orderIndex, address _feeReceiver)
executeIncreaseOrder
nonpayablefunction executeIncreaseOrder(address _account, uint256 _orderIndex, address _feeReceiver)
executeSwapOrder
nonpayablefunction executeSwapOrder(address _account, uint256 _orderIndex, address _feeReceiver)
increasePosition
nonpayablefunction increasePosition(address[] _path, address _indexToken, uint256 _amountIn, uint256 _minOut, uint256 _sizeDelta, bool _isLong, uint256 _price)
increasePositionETH
payablefunction increasePositionETH(address[] _path, address _indexToken, uint256 _minOut, uint256 _sizeDelta, bool _isLong, uint256 _price) payable
liquidatePosition
nonpayablefunction liquidatePosition(address _account, address _collateralToken, address _indexToken, bool _isLong, address _feeReceiver)
sendValue
nonpayablefunction sendValue(address _receiver, uint256 _amount)
setAdmin
nonpayablefunction setAdmin(address _admin)
setDepositFee
nonpayablefunction setDepositFee(uint256 _depositFee)
setGov
nonpayablefunction setGov(address _gov)
setIncreasePositionBufferBps
nonpayablefunction setIncreasePositionBufferBps(uint256 _increasePositionBufferBps)
setInLegacyMode
nonpayablefunction setInLegacyMode(bool _inLegacyMode)
setLiquidator
nonpayablefunction setLiquidator(address _account, bool _isActive)
setMaxGlobalSizes
nonpayablefunction setMaxGlobalSizes(address[] _tokens, uint256[] _longSizes, uint256[] _shortSizes)
setOrderKeeper
nonpayablefunction setOrderKeeper(address _account, bool _isActive)
setPartner
nonpayablefunction setPartner(address _account, bool _isActive)
setReferralStorage
nonpayablefunction setReferralStorage(address _referralStorage)
setShouldValidateIncreaseOrder
nonpayablefunction setShouldValidateIncreaseOrder(bool _shouldValidateIncreaseOrder)
withdrawFees
nonpayablefunction withdrawFees(address _token, address _receiver)
events
DecreasePositionReferral
event DecreasePositionReferral(address account, uint256 sizeDelta, uint256 marginFeeBasisPoints, bytes32 referralCode, address referrer)
IncreasePositionReferral
event IncreasePositionReferral(address account, uint256 sizeDelta, uint256 marginFeeBasisPoints, bytes32 referralCode, address referrer)
SetAdmin
event SetAdmin(address admin)
SetDepositFee
event SetDepositFee(uint256 depositFee)
SetIncreasePositionBufferBps
event SetIncreasePositionBufferBps(uint256 increasePositionBufferBps)
SetInLegacyMode
event SetInLegacyMode(bool inLegacyMode)
SetLiquidator
event SetLiquidator(address indexed account, bool isActive)
SetMaxGlobalSizes
event SetMaxGlobalSizes(address[] tokens, uint256[] longSizes, uint256[] shortSizes)
SetOrderKeeper
event SetOrderKeeper(address indexed account, bool isActive)
SetPartner
event SetPartner(address account, bool isActive)
SetReferralStorage
event SetReferralStorage(address referralStorage)
SetShouldValidateIncreaseOrder
event SetShouldValidateIncreaseOrder(bool shouldValidateIncreaseOrder)
WithdrawFees
event WithdrawFees(address token, address receiver, uint256 amount)
errors
No errors.
creation bytecode
0x60806040526064600855600d805460ff60a81b1916600160a81b1790553480156200002957600080fd5b5060405162004869380380620048698339810160408190526200004c91620000ee565b600160008190558054336001600160a01b031991821681179092556003805482166001600160a01b03998a161790556005805482169789169790971790965560068054871694881694909417909355600791909155600480548516938616939093179092556002805484169091179055600d8054909216921691909117905562000166565b80516001600160a01b0381168114620000e957600080fd5b919050565b60008060008060008060c087890312156200010857600080fd5b6200011387620000d1565b95506200012360208801620000d1565b94506200013360408801620000d1565b93506200014360608801620000d1565b9250608087015191506200015a60a08801620000d1565b90509295509295509295565b6146f380620001766000396000f3fe60806040526004361061025f5760003560e01c8063657bc5d011610144578063b7ddc992116100b6578063e1f21c671161007a578063e1f21c67146107df578063ef12c67e146107ff578063f25552781461081f578063f851a4401461083f578063f887ea401461085f578063fbfa77cf1461087f57600080fd5b8063b7ddc9921461073e578063cfad57a21461075e578063d38ab5191461077e578063d4ca83f91461079e578063de2ea948146107bf57600080fd5b806390205d8c1161010857806390205d8c146106885780639698d25a146106a857806398d1e03a146106d55780639c95332f146106eb578063ae4d7f9a1461070b578063b32755de1461072b57600080fd5b8063657bc5d0146105e257806367a5279314610602578063704b6c0214610618578063776af5ba146106385780638c0f9aac1461065857600080fd5b8063233bfe3b116101dd578063430ed37c116101a1578063430ed37c146105115780634453a374146105315780634584bd4b14610551578063490ae21014610572578063529a356f146105925780635fc8500e146105c257600080fd5b8063233bfe3b1461045157806324a084df146104715780633039e37f146104915780633833f5f5146104b15780633fc8cef3146104f157600080fd5b806312d43a511161022457806312d43a51146103a45780631b904359146103c45780631ce9cb8f146103e45780631e2615381461041157806321acf6591461043157600080fd5b80626cc35e146102d657806307c7edc3146103135780631045c74e1461033357806311d9444a1461036e578063126082cf1461038e57600080fd5b366102d1576006546001600160a01b031633146102cf5760405162461bcd60e51b815260206004820152602360248201527f42617365506f736974696f6e4d616e616765723a20696e76616c69642073656e6044820152623232b960e91b60648201526084015b60405180910390fd5b005b600080fd5b3480156102e257600080fd5b506009546102f6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561031f57600080fd5b506102cf61032e366004613b54565b61089f565b34801561033f57600080fd5b5061036061034e366004613b96565b600b6020526000908152604090205481565b60405190815260200161030a565b34801561037a57600080fd5b506102cf610389366004613b54565b610941565b34801561039a57600080fd5b5061036061271081565b3480156103b057600080fd5b506001546102f6906001600160a01b031681565b3480156103d057600080fd5b506102cf6103df366004613bc1565b610d0c565b3480156103f057600080fd5b506103606103ff366004613b96565b600a6020526000908152604090205481565b34801561041d57600080fd5b506102cf61042c366004613bde565b610d8e565b34801561043d57600080fd5b506102cf61044c366004613bde565b610e18565b34801561045d57600080fd5b506102cf61046c366004613c17565b610ea5565b34801561047d57600080fd5b506102cf61048c366004613c30565b610f04565b34801561049d57600080fd5b506102cf6104ac366004613d3b565b610f45565b3480156104bd57600080fd5b506104e16104cc366004613b96565b600e6020526000908152604090205460ff1681565b604051901515815260200161030a565b3480156104fd57600080fd5b506006546102f6906001600160a01b031681565b34801561051d57600080fd5b506102cf61052c366004613dd7565b6110e8565b34801561053d57600080fd5b506102cf61054c366004613bde565b6111cb565b34801561055d57600080fd5b50600d546104e190600160a81b900460ff1681565b34801561057e57600080fd5b506102cf61058d366004613c17565b61124d565b34801561059e57600080fd5b506104e16105ad366004613b96565b60106020526000908152604090205460ff1681565b3480156105ce57600080fd5b506102cf6105dd366004613d3b565b6112ac565b3480156105ee57600080fd5b506004546102f6906001600160a01b031681565b34801561060e57600080fd5b5061036060075481565b34801561062457600080fd5b506102cf610633366004613b96565b61136b565b34801561064457600080fd5b50600d546102f6906001600160a01b031681565b34801561066457600080fd5b506104e1610673366004613b96565b600f6020526000908152604090205460ff1681565b34801561069457600080fd5b506102cf6106a3366004613dd7565b6113e3565b3480156106b457600080fd5b506103606106c3366004613b96565b600c6020526000908152604090205481565b3480156106e157600080fd5b5061036060085481565b3480156106f757600080fd5b506102cf610706366004613bc1565b61143e565b34801561071757600080fd5b506102cf610726366004613b96565b6114b5565b6102cf610739366004613e52565b61152d565b34801561074a57600080fd5b506102cf610759366004613ed2565b6116fe565b34801561076a57600080fd5b506102cf610779366004613b96565b611956565b34801561078a57600080fd5b506102cf610799366004613b54565b6119a2565b3480156107aa57600080fd5b50600d546104e190600160a01b900460ff1681565b3480156107cb57600080fd5b506102cf6107da366004613f46565b611d62565b3480156107eb57600080fd5b506102cf6107fa366004613fb7565b612128565b34801561080b57600080fd5b506102cf61081a366004614053565b6121cb565b34801561082b57600080fd5b506102cf61083a3660046140db565b6122ed565b34801561084b57600080fd5b506002546102f6906001600160a01b031681565b34801561086b57600080fd5b506005546102f6906001600160a01b031681565b34801561088b57600080fd5b506003546102f6906001600160a01b031681565b336000908152600e602052604090205460ff166108ce5760405162461bcd60e51b81526004016102c690614109565b600d546040516307c7edc360e01b81526001600160a01b038581166004830152602482018590528381166044830152909116906307c7edc390606401600060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b50505050505050565b336000908152600e602052604090205460ff166109705760405162461bcd60e51b81526004016102c690614109565b6109786123a6565b600354604080516312d43a5160e01b815290516001600160a01b039092169160009183916312d43a51916004808201926020929091908290030181865afa1580156109c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190614140565b600d54604051630130197760e11b81526001600160a01b038881166004830152602482018890529293506000928392839283929091169063026032ee9060440161010060405180830381865afa158015610a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6d919061415d565b505050945094509450509350600081610aef57604051637092736960e11b81526001600160a01b03858116600483015288169063e124e6d290602401602060405180830381865afa158015610ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aea91906141e5565b610b59565b6040516340d3096b60e11b81526001600160a01b0385811660048301528816906381a612d690602401602060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5991906141e5565b60048054604051633cc8e33b60e21b81529293506001600160a01b03169163f3238cec91610b96918e918a918a9189918b918a91600091016141fe565b600060405180830381600087803b158015610bb057600080fd5b505af1158015610bc4573d6000803e3d6000fd5b50506040516306d63c1d60e41b81526001600160a01b038a8116600483015289169250636d63c1d09150602401600060405180830381600087803b158015610c0b57600080fd5b505af1158015610c1f573d6000803e3d6000fd5b5050600d546040516308eca22560e11b81526001600160a01b038e81166004830152602482018e90528c8116604483015290911692506311d9444a9150606401600060405180830381600087803b158015610c7957600080fd5b505af1158015610c8d573d6000803e3d6000fd5b505060405163d3c87bbb60e01b81526001600160a01b038a811660048301528916925063d3c87bbb9150602401600060405180830381600087803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b50505050610cf68a84612400565b50505050505050610d076001600055565b505050565b6002546001600160a01b03163314610d365760405162461bcd60e51b81526004016102c69061423f565b600d8054821515600160a81b0260ff60a81b199091161790556040517fa956222e37fe025ff51e5440ac729a9bd417ff91e485e14dcffa2c0ba8894f4090610d8390831515815260200190565b60405180910390a150565b6002546001600160a01b03163314610db85760405162461bcd60e51b81526004016102c69061423f565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f1d5bc0255b943d6a5b5279e8a55d74d620baccbceecb25e87a3558f14c4c118e91015b60405180910390a25050565b6002546001600160a01b03163314610e425760405162461bcd60e51b81526004016102c69061423f565b6001600160a01b0382166000818152600f6020908152604091829020805460ff19168515159081179091558251938452908301527fa4e46c70ff429a91de7d1716d736e877c7cca1c22ac850b23d242530dd95e474910160405180910390a15050565b6002546001600160a01b03163314610ecf5760405162461bcd60e51b81526004016102c69061423f565b60088190556040518181527f21167d0d4661af93817ebce920f18986eed3d75d5e1c03f2aed05efcbafbc45290602001610d83565b6001546001600160a01b03163314610f2e5760405162461bcd60e51b81526004016102c690614276565b610f416001600160a01b0383168261256c565b5050565b610f4d6123a6565b336000908152600f602052604090205460ff1680610f745750600d54600160a01b900460ff165b610f905760405162461bcd60e51b81526004016102c690614109565b8751600214610fb15760405162461bcd60e51b81526004016102c6906142a5565b60065488516001600160a01b03909116908990610fd090600190614300565b81518110610fe057610fe0614317565b60200260200101516001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f506f736974696f6e4d616e616765723a20696e76616c6964205f70617468000060448201526064016102c6565b600061106a338a60008151811061105757611057614317565b60200260200101518a8a8a8a308a612685565b90506110b9600360009054906101000a90046001600160a01b0316828b60008151811061109957611099614317565b60200260200101516001600160a01b0316612a469092919063ffffffff16565b60006110c68a8430612a98565b90506110d28186612b4c565b50506110de6001600055565b5050505050505050565b6110f06123a6565b336000908152600f602052604090205460ff16806111175750600d54600160a01b900460ff165b6111335760405162461bcd60e51b81526004016102c690614109565b6006546001600160a01b038881169116146111a25760405162461bcd60e51b815260206004820152602960248201527f506f736974696f6e4d616e616765723a20696e76616c6964205f636f6c6c617460448201526832b930b62a37b5b2b760b91b60648201526084016102c6565b60006111b43389898989893089612685565b90506111c08184612b4c565b506109386001600055565b6002546001600160a01b031633146111f55760405162461bcd60e51b81526004016102c69061423f565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f8c0d56805c3b43d441481229dc64bee168253ffe4305f37ab7cfe63b1c4268c69101610e0c565b6002546001600160a01b031633146112775760405162461bcd60e51b81526004016102c69061423f565b60078190556040518181527f974fd3c1fcb4653dfc4fb740c4c692cd212d55c28f163f310128cb64d830067590602001610d83565b6112b46123a6565b336000908152600f602052604090205460ff16806112db5750600d54600160a01b900460ff165b6112f75760405162461bcd60e51b81526004016102c690614109565b87516002146113185760405162461bcd60e51b81526004016102c6906142a5565b6000611331338a60008151811061105757611057614317565b9050611360600360009054906101000a90046001600160a01b0316828b60008151811061109957611099614317565b6110d2898386612a98565b6001546001600160a01b031633146113955760405162461bcd60e51b81526004016102c690614276565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190602001610d83565b6113eb6123a6565b336000908152600f602052604090205460ff16806114125750600d54600160a01b900460ff165b61142e5760405162461bcd60e51b81526004016102c690614109565b6111c03388888888888888612685565b6002546001600160a01b031633146114685760405162461bcd60e51b81526004016102c69061423f565b600d8054821515600160a01b0260ff60a01b199091161790556040517feac6b3611e79ff0d8ea5daa8439f6b1ab7eea4ebf95f1dd360417f712c3fc30490610d8390831515815260200190565b6002546001600160a01b031633146114df5760405162461bcd60e51b81526004016102c69061423f565b600980546001600160a01b0319166001600160a01b0383169081179091556040519081527f828abcccea18192c21d645e575652c49e20b986dab777906fc473d056b01b6a890602001610d83565b6115356123a6565b336000908152600f602052604090205460ff168061155c5750600d54600160a01b900460ff165b6115785760405162461bcd60e51b81526004016102c690614109565b855160011480611589575085516002145b6115a55760405162461bcd60e51b81526004016102c6906142a5565b60065486516001600160a01b039091169087906000906115c7576115c7614317565b60200260200101516001600160a01b0316146116255760405162461bcd60e51b815260206004820152601e60248201527f506f736974696f6e4d616e616765723a20696e76616c6964205f70617468000060448201526064016102c6565b34156116b857611633612be0565b855134906001101561166a5760035460065461165c916001600160a01b03918216911634612a46565b611667878630612a98565b90505b600061167a3389848a888a612c4c565b90506116b5600360009054906101000a90046001600160a01b0316828a60018c516116a59190614300565b8151811061109957611099614317565b50505b6116ec3387600189516116cb9190614300565b815181106116db576116db614317565b602002602001015187868686612d3a565b6116f66001600055565b505050505050565b6117066123a6565b336000908152600f602052604090205460ff168061172d5750600d54600160a01b900460ff165b6117495760405162461bcd60e51b81526004016102c690614109565b86516001148061175a575086516002145b6117765760405162461bcd60e51b81526004016102c6906142a5565b84156119185786516001141561182a5760055487516001600160a01b0390911690631b8278789089906000906117ae576117ae614317565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b03909116600482015233602482015230604482015260648101889052608401600060405180830381600087803b15801561180d57600080fd5b505af1158015611821573d6000803e3d6000fd5b505050506118db565b60055487516001600160a01b0390911690631b82787890899060009061185257611852614317565b60209081029190910101516003546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201523360248201529116604482015260648101889052608401600060405180830381600087803b1580156118b557600080fd5b505af11580156118c9573d6000803e3d6000fd5b505050506118d8878530612a98565b94505b60006118eb3389888a8789612c4c565b9050611916600360009054906101000a90046001600160a01b0316828a60018c516116a59190614300565b505b61194c338860018a5161192b9190614300565b8151811061193b5761193b614317565b602002602001015188868686612d3a565b6109386001600055565b6001546001600160a01b031633146119805760405162461bcd60e51b81526004016102c690614276565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600e602052604090205460ff166119d15760405162461bcd60e51b81526004016102c690614109565b6119d96123a6565b6119e3838361309a565b600354604080516312d43a5160e01b815290516001600160a01b039092169160009183916312d43a51916004808201926020929091908290030181865afa158015611a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a569190614140565b600d5460405163d3bab1d160e01b81526001600160a01b038881166004830152602482018890529293506000928392839283929091169063d3bab1d19060440161012060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad8919061432d565b50505095509550955095505050600081611b5b576040516340d3096b60e11b81526001600160a01b0385811660048301528816906381a612d690602401602060405180830381865afa158015611b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5691906141e5565b611bc5565b604051637092736960e11b81526001600160a01b03858116600483015288169063e124e6d290602401602060405180830381865afa158015611ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc591906141e5565b60048054604051633cc8e33b60e21b81529293506001600160a01b03169163f3238cec91611c02918e918a918a9189918b918a91600191016141fe565b600060405180830381600087803b158015611c1c57600080fd5b505af1158015611c30573d6000803e3d6000fd5b50506040516306d63c1d60e41b81526001600160a01b038a8116600483015289169250636d63c1d09150602401600060405180830381600087803b158015611c7757600080fd5b505af1158015611c8b573d6000803e3d6000fd5b5050600d5460405163d38ab51960e01b81526001600160a01b038e81166004830152602482018e90528c81166044830152909116925063d38ab5199150606401600060405180830381600087803b158015611ce557600080fd5b505af1158015611cf9573d6000803e3d6000fd5b505060405163d3c87bbb60e01b81526001600160a01b038a811660048301528916925063d3c87bbb9150602401600060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b50505050610cf68a8461338b565b611d6a6123a6565b3360009081526010602052604090205460ff16611d995760405162461bcd60e51b81526004016102c690614109565b600354604080516312d43a5160e01b815290516001600160a01b039092169160009183916312d43a51916004808201926020929091908290030181865afa158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190614140565b600354604051634a3f088d60e01b81529192506000916001600160a01b0390911690634a3f088d90611e48908b908b908b908b906004016143c9565b61010060405180830381865afa158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906143f3565b505050505050509050600085611f0957604051637092736960e11b81526001600160a01b03888116600483015285169063e124e6d290602401602060405180830381865afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0491906141e5565b611f73565b6040516340d3096b60e11b81526001600160a01b0388811660048301528516906381a612d690602401602060405180830381865afa158015611f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7391906141e5565b60048054604051633cc8e33b60e21b81529293506001600160a01b03169163f3238cec91611fb0918d918d918d918d918a918a91600091016141fe565b600060405180830381600087803b158015611fca57600080fd5b505af1158015611fde573d6000803e3d6000fd5b50506040516306d63c1d60e41b81526001600160a01b03878116600483015286169250636d63c1d09150602401600060405180830381600087803b15801561202557600080fd5b505af1158015612039573d6000803e3d6000fd5b5050604051631bc5d52960e31b81526001600160a01b038c811660048301528b811660248301528a81166044830152891515606483015288811660848301528716925063de2ea948915060a401600060405180830381600087803b1580156120a057600080fd5b505af11580156120b4573d6000803e3d6000fd5b505060405163d3c87bbb60e01b81526001600160a01b0387811660048301528616925063d3c87bbb9150602401600060405180830381600087803b1580156120fb57600080fd5b505af115801561210f573d6000803e3d6000fd5b50505050505050506121216001600055565b5050505050565b6001546001600160a01b031633146121525760405162461bcd60e51b81526004016102c690614276565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af11580156121a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c59190614445565b50505050565b6002546001600160a01b031633146121f55760405162461bcd60e51b81526004016102c69061423f565b60005b83518110156122ac57600084828151811061221557612215614317565b6020026020010151905083828151811061223157612231614317565b6020026020010151600b6000836001600160a01b03166001600160a01b031681526020019081526020016000208190555082828151811061227457612274614317565b6020908102919091018101516001600160a01b039092166000908152600c9091526040902055806122a481614462565b9150506121f8565b507fae32d569b058895b9620d6552b09aaffedc9a6f396be4d595a224ad09f8b21398383836040516122e0939291906144b8565b60405180910390a1505050565b6002546001600160a01b031633146123175760405162461bcd60e51b81526004016102c69061423f565b6001600160a01b0382166000908152600a60205260409020548061233a57505050565b6001600160a01b0383166000818152600a602052604081205561235e908383612a46565b604080516001600160a01b038086168252841660208201529081018290527f4f1b51dd7a2fcb861aa2670f668be66835c4ee12b4bbbf037e4d0018f39819e4906060016122e0565b600260005414156123f95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c6565b6002600055565b6009546001600160a01b03168061241657505050565b60405163534ef88360e01b81526001600160a01b038481166004830152600091829184169063534ef883906024016040805180830381865afa158015612460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124849190614523565b909250905081612495575050505050565b7f474c763ff84bf2c2039a6d9fea955ecd0f724030e3c365b91169c6a16fe751b78585600360009054906101000a90046001600160a01b03166001600160a01b031663318bc6896040518163ffffffff1660e01b8152600401602060405180830381865afa15801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f91906141e5565b604080516001600160a01b039485168152602081019390935282015260608101859052908316608082015260a00160405180910390a15050505050565b804710156125bc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102c6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612609576040519150601f19603f3d011682016040523d82523d6000602084013e61260e565b606091505b5050905080610d075760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102c6565b6003546000906001600160a01b0316818561270957604051637092736960e11b81526001600160a01b038a8116600483015283169063e124e6d290602401602060405180830381865afa1580156126e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270491906141e5565b612773565b6040516340d3096b60e11b81526001600160a01b038a811660048301528316906381a612d690602401602060405180830381865afa15801561274f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277391906141e5565b905085156127a0578381101561279b5760405162461bcd60e51b81526004016102c690614548565b6127c0565b838111156127c05760405162461bcd60e51b81526004016102c690614598565b6000826001600160a01b03166312d43a516040518163ffffffff1660e01b8152600401602060405180830381865afa158015612800573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128249190614140565b9050600460009054906101000a90046001600160a01b03166001600160a01b031663f3238cec8d8d8d8b8d8860006040518863ffffffff1660e01b815260040161287497969594939291906141fe565b600060405180830381600087803b15801561288e57600080fd5b505af11580156128a2573d6000803e3d6000fd5b50506040516306d63c1d60e41b81526001600160a01b03868116600483015284169250636d63c1d09150602401600060405180830381600087803b1580156128e957600080fd5b505af11580156128fd573d6000803e3d6000fd5b505050506000600560009054906101000a90046001600160a01b03166001600160a01b0316632662166b8e8e8e8e8e8e8e6040518863ffffffff1660e01b815260040161298a97969594939291906001600160a01b0397881681529587166020870152938616604086015260608501929092526080840152151560a083015290911660c082015260e00190565b6020604051808303816000875af11580156129a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cd91906141e5565b60405163d3c87bbb60e01b81526001600160a01b0386811660048301529192509083169063d3c87bbb90602401600060405180830381600087803b158015612a1457600080fd5b505af1158015612a28573d6000803e3d6000fd5b50505050612a368d8a612400565b9c9b505050505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610d07908490613489565b6000835160021415612aeb57612ae484600081518110612aba57612aba614317565b602002602001015185600181518110612ad557612ad5614317565b6020026020010151858561355e565b9050612b45565b60405162461bcd60e51b815260206004820152602960248201527f42617365506f736974696f6e4d616e616765723a20696e76616c6964205f70616044820152680e8d05cd8cadccee8d60bb1b60648201526084016102c6565b9392505050565b600654604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015612b9257600080fd5b505af1158015612ba6573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f19350505050158015610d07573d6000803e3d6000fd5b3415612c4a57600660009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015612c3657600080fd5b505af1158015612121573d6000803e3d6000fd5b565b600080612c5d888888888888613653565b90508015612d2b576000612c94612710612c8e612c8760075461271061381290919063ffffffff16565b8a9061381e565b9061382a565b90506000612ca28883613812565b905060008960018b51612cb59190614300565b81518110612cc557612cc5614317565b60200260200101519050612d0782600a6000846001600160a01b03166001600160a01b031681526020019081526020016000205461383690919063ffffffff16565b6001600160a01b039091166000908152600a6020526040902055509150612d309050565b859150505b9695505050505050565b6003546001600160a01b0316600083612dbc576040516340d3096b60e11b81526001600160a01b0387811660048301528316906381a612d690602401602060405180830381865afa158015612d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db791906141e5565b612e26565b604051637092736960e11b81526001600160a01b03878116600483015283169063e124e6d290602401602060405180830381865afa158015612e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2691906141e5565b90508315612e535782811115612e4e5760405162461bcd60e51b81526004016102c690614598565b612e73565b82811015612e735760405162461bcd60e51b81526004016102c690614548565b612e7e868587613842565b6000826001600160a01b03166312d43a516040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee29190614140565b60048054604051633cc8e33b60e21b81529293506001600160a01b03169163f3238cec91612f1f918d918d918d918c918e918b91600191016141fe565b600060405180830381600087803b158015612f3957600080fd5b505af1158015612f4d573d6000803e3d6000fd5b50506040516306d63c1d60e41b81526001600160a01b03868116600483015284169250636d63c1d09150602401600060405180830381600087803b158015612f9457600080fd5b505af1158015612fa8573d6000803e3d6000fd5b5050600554604051630f8ee8bb60e11b81526001600160a01b038d811660048301528c811660248301528b81166044830152606482018b905289151560848301529091169250631f1dd176915060a401600060405180830381600087803b15801561301257600080fd5b505af1158015613026573d6000803e3d6000fd5b505060405163d3c87bbb60e01b81526001600160a01b0386811660048301528416925063d3c87bbb9150602401600060405180830381600087803b15801561306d57600080fd5b505af1158015613081573d6000803e3d6000fd5b5050505061308f898761338b565b505050505050505050565b600d5460405163d3bab1d160e01b81526001600160a01b03848116600483015260248201849052600092839283928392839283929091169063d3bab1d19060440161012060405180830381865afa1580156130f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311d919061432d565b505050955095509550955095509550613137838284613842565b600d54600160a81b900460ff16613152575050505050505050565b80613161575050505050505050565b600082116131b15760405162461bcd60e51b815260206004820152601d60248201527f506f736974696f6e4d616e616765723a206c6f6e67206465706f73697400000060448201526064016102c6565b600354604051634a3f088d60e01b81526001600160a01b039091169060009081908390634a3f088d906131ee908e908b908b908a906004016143c9565b61010060405180830381865afa15801561320c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323091906143f3565b505050505050915091508160001415613250575050505050505050505050565b600061325c8387613836565b604051630a48d5a960e01b81526001600160a01b038c81166004830152602482018c9052919250600091861690630a48d5a990604401602060405180830381865afa1580156132af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d391906141e5565b905060006132e18483613836565b905060006132f585612c8e8861271061381e565b9050600061331783612c8e60085461271061331091906145e9565b889061381e565b9050818110156133795760405162461bcd60e51b815260206004820152602760248201527f506f736974696f6e4d616e616765723a206c6f6e67206c6576657261676520646044820152666563726561736560c81b60648201526084016102c6565b50505050505050505050505050505050565b6009546001600160a01b0316806133a157505050565b60405163534ef88360e01b81526001600160a01b038481166004830152600091829184169063534ef883906024016040805180830381865afa1580156133eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061340f9190614523565b915091507fc2414023ce7002ee98557d1e7be21e5559073336f2217ee5f9b2e50fd85f71ee8585600360009054906101000a90046001600160a01b03166001600160a01b031663318bc6896040518163ffffffff1660e01b8152600401602060405180830381865afa15801561250b573d6000803e3d6000fd5b60006134de826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a1c9092919063ffffffff16565b90508051600014806134ff5750808060200190518101906134ff9190614445565b610d075760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102c6565b600354604051634998b10960e11b81526001600160a01b0386811660048301528581166024830152838116604483015260009283929116906393316212906064016020604051808303816000875af11580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e291906141e5565b9050838110156136485760405162461bcd60e51b815260206004820152602b60248201527f42617365506f736974696f6e4d616e616765723a20696e73756666696369656e60448201526a1d08185b5bdd5b9d13dd5d60aa1b60648201526084016102c6565b90505b949350505050565b60008261366257506000612d30565b8161366f57506001612d30565b600086600188516136809190614300565b8151811061369057613690614317565b6020908102919091010151600354604051634a3f088d60e01b81529192506001600160a01b03169060009081908390634a3f088d906136d9908e9088908d908d906004016143c9565b61010060405180830381865afa1580156136f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371b91906143f3565b50505050505091509150816000141561373b576000945050505050612d30565b60006137478388613836565b604051630a48d5a960e01b81526001600160a01b038781166004830152602482018d9052919250600091861690630a48d5a990604401602060405180830381865afa15801561379a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137be91906141e5565b905060006137cc8483613836565b905060006137e085612c8e8861271061381e565b905060006137fb83612c8e60085461271061331091906145e9565b919091109f9e505050505050505050505050505050565b6000612b458284614300565b6000612b458284614601565b6000612b458284614620565b6000612b4582846145e9565b8061384c57505050565b8115613958576001600160a01b0383166000908152600b602052604090205480158015906138f4575060035460405163783a2b6760e11b81526001600160a01b03868116600483015283926138f29286929091169063f07456ce906024015b602060405180830381865afa1580156138c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ec91906141e5565b90613836565b115b156121c55760405162461bcd60e51b815260206004820152602e60248201527f42617365506f736974696f6e4d616e616765723a206d617820676c6f62616c2060448201526d1b1bdb99dcc8195e18d95959195960921b60648201526084016102c6565b6001600160a01b0383166000908152600c602052604090205480158015906139b7575060035460405163114f1b5560e31b81526001600160a01b03868116600483015283926139b592869290911690638a78daa8906024016138ab565b115b156121c55760405162461bcd60e51b815260206004820152602f60248201527f42617365506f736974696f6e4d616e616765723a206d617820676c6f62616c2060448201526e1cda1bdc9d1cc8195e18d959591959608a1b60648201526084016102c6565b606061364b848460008585600080866001600160a01b03168587604051613a43919061466e565b60006040518083038185875af1925050503d8060008114613a80576040519150601f19603f3d011682016040523d82523d6000602084013e613a85565b606091505b5091509150613a9687838387613aa1565b979650505050505050565b60608315613b0d578251613b06576001600160a01b0385163b613b065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c6565b508161364b565b61364b8383815115613b225781518083602001fd5b8060405162461bcd60e51b81526004016102c6919061468a565b6001600160a01b0381168114613b5157600080fd5b50565b600080600060608486031215613b6957600080fd5b8335613b7481613b3c565b9250602084013591506040840135613b8b81613b3c565b809150509250925092565b600060208284031215613ba857600080fd5b8135612b4581613b3c565b8015158114613b5157600080fd5b600060208284031215613bd357600080fd5b8135612b4581613bb3565b60008060408385031215613bf157600080fd5b8235613bfc81613b3c565b91506020830135613c0c81613bb3565b809150509250929050565b600060208284031215613c2957600080fd5b5035919050565b60008060408385031215613c4357600080fd5b8235613c4e81613b3c565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613c9b57613c9b613c5c565b604052919050565b600067ffffffffffffffff821115613cbd57613cbd613c5c565b5060051b60200190565b600082601f830112613cd857600080fd5b81356020613ced613ce883613ca3565b613c72565b82815260059290921b84018101918181019086841115613d0c57600080fd5b8286015b84811015613d30578035613d2381613b3c565b8352918301918301613d10565b509695505050505050565b600080600080600080600080610100898b031215613d5857600080fd5b883567ffffffffffffffff811115613d6f57600080fd5b613d7b8b828c01613cc7565b9850506020890135613d8c81613b3c565b965060408901359550606089013594506080890135613daa81613bb3565b935060a0890135613dba81613b3c565b979a969950949793969295929450505060c08201359160e0013590565b600080600080600080600060e0888a031215613df257600080fd5b8735613dfd81613b3c565b96506020880135613e0d81613b3c565b955060408801359450606088013593506080880135613e2b81613bb3565b925060a0880135613e3b81613b3c565b8092505060c0880135905092959891949750929550565b60008060008060008060c08789031215613e6b57600080fd5b863567ffffffffffffffff811115613e8257600080fd5b613e8e89828a01613cc7565b9650506020870135613e9f81613b3c565b945060408701359350606087013592506080870135613ebd81613bb3565b8092505060a087013590509295509295509295565b600080600080600080600060e0888a031215613eed57600080fd5b873567ffffffffffffffff811115613f0457600080fd5b613f108a828b01613cc7565b9750506020880135613f2181613b3c565b955060408801359450606088013593506080880135925060a0880135613e3b81613bb3565b600080600080600060a08688031215613f5e57600080fd5b8535613f6981613b3c565b94506020860135613f7981613b3c565b93506040860135613f8981613b3c565b92506060860135613f9981613bb3565b91506080860135613fa981613b3c565b809150509295509295909350565b600080600060608486031215613fcc57600080fd5b8335613fd781613b3c565b92506020840135613fe781613b3c565b929592945050506040919091013590565b600082601f83011261400957600080fd5b81356020614019613ce883613ca3565b82815260059290921b8401810191818101908684111561403857600080fd5b8286015b84811015613d30578035835291830191830161403c565b60008060006060848603121561406857600080fd5b833567ffffffffffffffff8082111561408057600080fd5b61408c87838801613cc7565b945060208601359150808211156140a257600080fd5b6140ae87838801613ff8565b935060408601359150808211156140c457600080fd5b506140d186828701613ff8565b9150509250925092565b600080604083850312156140ee57600080fd5b82356140f981613b3c565b91506020830135613c0c81613b3c565b6020808252601a908201527f506f736974696f6e4d616e616765723a20666f7262696464656e000000000000604082015260600190565b60006020828403121561415257600080fd5b8151612b4581613b3c565b600080600080600080600080610100898b03121561417a57600080fd5b885161418581613b3c565b60208a015160408b0151919950975061419d81613b3c565b60608a015160808b015191975095506141b581613bb3565b60a08a015160c08b015191955093506141cd81613bb3565b8092505060e089015190509295985092959890939650565b6000602082840312156141f757600080fd5b5051919050565b6001600160a01b03978816815295871660208701529390951660408501529015156060840152608083015260a082019290925290151560c082015260e00190565b6020808252601e908201527f42617365506f736974696f6e4d616e616765723a20666f7262696464656e0000604082015260600190565b60208082526015908201527423b7bb32b93730b136329d103337b93134b23232b760591b604082015260600190565b60208082526025908201527f506f736974696f6e4d616e616765723a20696e76616c6964205f706174682e6c6040820152640cadccee8d60db1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015614312576143126142ea565b500390565b634e487b7160e01b600052603260045260246000fd5b60008060008060008060008060006101208a8c03121561434c57600080fd5b895161435781613b3c565b60208b015160408c0151919a50985061436f81613b3c565b60608b015190975061438081613b3c565b60808b015160a08c0151919750955061439881613bb3565b60c08b015160e08c015191955093506143b081613bb3565b809250506101008a015190509295985092959850929598565b6001600160a01b039485168152928416602084015292166040820152901515606082015260800190565b600080600080600080600080610100898b03121561441057600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c08901516141cd81613bb3565b60006020828403121561445757600080fd5b8151612b4581613bb3565b6000600019821415614476576144766142ea565b5060010190565b600081518084526020808501945080840160005b838110156144ad57815187529582019590820190600101614491565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156144fa5781516001600160a01b0316845292840192908401906001016144d5565b5050508381038285015261450e818761447d565b9150508281036040840152612d30818561447d565b6000806040838503121561453657600080fd5b825191506020830151613c0c81613b3c565b60208082526030908201527f42617365506f736974696f6e4d616e616765723a206d61726b2070726963652060408201526f1b1bddd95c881d1a185b881b1a5b5a5d60821b606082015260800190565b60208082526031908201527f42617365506f736974696f6e4d616e616765723a206d61726b207072696365206040820152701a1a59da195c881d1a185b881b1a5b5a5d607a1b606082015260800190565b600082198211156145fc576145fc6142ea565b500190565b600081600019048311821515161561461b5761461b6142ea565b500290565b60008261463d57634e487b7160e01b600052601260045260246000fd5b500490565b60005b8381101561465d578181015183820152602001614645565b838111156121c55750506000910152565b60008251614680818460208701614642565b9190910192915050565b60208152600082518060208401526146a9816040850160208701614642565b601f01601f1916919091016040019291505056fea2646970667358221220710f368ee785444fc5597dd57dd409fa1fe1713f41996335c2b0f797bb41138764736f6c634300080c0033000000000000000000000000eb0e5e1a8500317a1b8fdd195097d5509ef861de000000000000000000000000301018daa6788775b4a500ef3228db14e0d6a5a70000000000000000000000008881ebb9a995cffcd196efd55bbf0aa8c1c5e392000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000006b448df5a0e6bca35e76e50d9cd53bea3caa7efa