0 txs
172 calls
constructor
constructor()
functions
crossChainDispatcher
viewfunction crossChainDispatcher() view returns (address _crossChainDispatcher)
crossChainFlashRepays
viewfunction crossChainFlashRepays(uint256) view returns (uint16 dstChainId, address syntheticToken, uint256 repayAmountMin, address account, bool finished)
crossChainLeverages
viewfunction crossChainLeverages(uint256) view returns (uint16 dstChainId, address bridgeToken, address depositToken, address syntheticToken, uint256 amountIn, uint256 debtAmount, uint256 depositAmountMin, address account, bool finished, address tokenIn)
crossChainRequestsLength
viewfunction crossChainRequestsLength() view returns (uint256)
governor
viewfunction governor() view returns (address _governor)
pool
viewfunction pool() view returns (address)
swapper
viewfunction swapper() view returns (address _swapper)
VERSION
viewfunction VERSION() view returns (string)
crossChainFlashRepay
payablefunction crossChainFlashRepay(address syntheticToken_, address depositToken_, uint256 withdrawAmount_, address bridgeToken_, uint256 bridgeTokenAmountMin_, uint256 swapAmountOutMin_, uint256 repayAmountMin_, bytes lzArgs_) payable
crossChainFlashRepayCallback
nonpayablefunction crossChainFlashRepayCallback(uint256 id_, uint256 swapAmountOut_) returns (uint256 _repaid)
crossChainLeverage
payablefunction crossChainLeverage(address tokenIn_, address syntheticToken_, address bridgeToken_, address depositToken_, uint256 amountIn_, uint256 leverage_, uint256 swapAmountOutMin_, uint256 depositAmountMin_, bytes lzArgs_) payable
crossChainLeverage
payablefunction crossChainLeverage(address, address, address, uint256, uint256, uint256, uint256, bytes) payable
crossChainLeverageCallback
nonpayablefunction crossChainLeverageCallback(uint256 id_, uint256 swapAmountOut_) returns (uint256 _deposited)
flashRepay
nonpayablefunction flashRepay(address syntheticToken_, address depositToken_, uint256 withdrawAmount_, uint256 swapAmountOutMin_) returns (uint256 _withdrawn, uint256 _repaid)
initialize
nonpayablefunction initialize(address pool_)
leverage
nonpayablefunction leverage(address tokenIn_, address depositToken_, address syntheticToken_, uint256 amountIn_, uint256 leverage_, uint256 depositAmountMin_) returns (uint256 _deposited, uint256 _issued)
retryCrossChainFlashRepayCallback
nonpayablefunction retryCrossChainFlashRepayCallback(uint16 srcChainId_, bytes srcAddress_, uint64 nonce_, uint256 amount_, bytes payload_, uint256 newRepayAmountMin_)
retryCrossChainLeverageCallback
nonpayablefunction retryCrossChainLeverageCallback(uint16 srcChainId_, bytes srcAddress_, uint64 nonce_, address token_, uint256 amount_, bytes payload_, uint256 newDepositAmountMin_)
events
CrossChainFlashRepayFinished
event CrossChainFlashRepayFinished(uint256 indexed id)
CrossChainFlashRepayStarted
event CrossChainFlashRepayStarted(uint256 indexed id)
CrossChainLeverageFinished
event CrossChainLeverageFinished(uint256 indexed id)
CrossChainLeverageStarted
event CrossChainLeverageStarted(uint256 indexed id)
FlashRepaid
event FlashRepaid(address indexed syntheticToken, address indexed depositToken, uint256 withdrawn, uint256 repaid)
Initialized
event Initialized(uint8 version)
Leveraged
event Leveraged(address indexed tokenIn, address indexed depositToken, address indexed syntheticToken, uint256 leverage, uint256 amountIn, uint256 issued, uint256 deposited)
errors
AmountIsTooHigh
error AmountIsTooHigh()
AmountIsZero
error AmountIsZero()
BridgeTokenIsNull
error BridgeTokenIsNull()
CrossChainFlashRepayInactive
error CrossChainFlashRepayInactive()
CrossChainRequestCompletedAlready
error CrossChainRequestCompletedAlready()
CrossChainRequestInvalidKey
error CrossChainRequestInvalidKey()
DepositTokenDoesNotExist
error DepositTokenDoesNotExist()
FlashRepaySlippageTooHigh
error FlashRepaySlippageTooHigh()
IsShutdown
error IsShutdown()
LeverageSlippageTooHigh
error LeverageSlippageTooHigh()
LeverageTooHigh
error LeverageTooHigh()
LeverageTooLow
error LeverageTooLow()
PoolAddressIsNull
error PoolAddressIsNull()
PoolIsNull
error PoolIsNull()
PositionIsNotHealthy
error PositionIsNotHealthy()
SenderIsNotCrossChainDispatcher
error SenderIsNotCrossChainDispatcher()
SyntheticDoesNotExist
error SyntheticDoesNotExist()
TokenInIsNull
error TokenInIsNull()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b62000152565b6200002e60ff62000031565b50565b60008054610100900460ff1615620000ca578160ff1660011480156200006a575062000068306200014360201b62002eb81760201c565b155b620000c25760405162461bcd60e51b815260206004820152602e602482015260008051602062004beb83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff808416911610620001295760405162461bcd60e51b815260206004820152602e602482015260008051602062004beb83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000b9565b506000805460ff191660ff92909216919091179055600190565b6001600160a01b03163b151590565b614a8980620001626000396000f3fe6080604052600436106101095760003560e01c8063583bfe761161009557806399e5e6551161006457806399e5e6551461037b5780639b6623d814610416578063c35576911461042c578063c4d66de81461043f578063ffa1ad741461045f57600080fd5b8063583bfe76146102275780636455bf6f146102475780638056777414610275578063823185611461029557600080fd5b806332c615b4116100dc57806332c615b41461018a578063364fda001461019f57806339c9a98e146101d45780633bb1f3d0146101e75780634d7e9a761461020757600080fd5b80630c340a241461010e57806316f0115b14610140578063196e7f51146101605780632b3297f914610175575b600080fd5b34801561011a57600080fd5b5061012361049d565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014c57600080fd5b50600254610123906001600160a01b031681565b61017361016e366004613f80565b61051f565b005b34801561018157600080fd5b5061012361098d565b34801561019657600080fd5b50610123610a42565b3480156101ab57600080fd5b506101bf6101ba366004614039565b610af7565b60408051928352602083019190915201610137565b6101736101e236600461407f565b61124d565b3480156101f357600080fd5b5061017361020236600461414a565b611282565b34801561021357600080fd5b506101bf6102223660046141f2565b61155a565b34801561023357600080fd5b50610173610242366004614257565b611bee565b34801561025357600080fd5b50610267610262366004614314565b611f4d565b604051908152602001610137565b34801561028157600080fd5b50610267610290366004614314565b6123d1565b3480156102a157600080fd5b506103196102b0366004614336565b6035602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460079097015461ffff871697620100009097046001600160a01b0390811697968116969581169581811692600160a01b90910460ff1691168a565b6040805161ffff909b168b526001600160a01b03998a1660208c0152978916978a01979097529487166060890152608088019390935260a087019190915260c0860152831660e085015215156101008401521661012082015261014001610137565b34801561038757600080fd5b506103dc610396366004614336565b60366020526000908152604090208054600182015460029092015461ffff821692620100009092046001600160a01b03908116929190811690600160a01b900460ff1685565b6040805161ffff90961686526001600160a01b0394851660208701528501929092529190911660608301521515608082015260a001610137565b34801561042257600080fd5b5061026760345481565b61017361043a36600461434f565b612947565b34801561044b57600080fd5b5061017361045a3660046143d1565b612e12565b34801561046b57600080fd5b5061049060405180604001604052806005815260200164312e332e3160d81b81525081565b6040516101379190614446565b6002546040805163030d028960e21b815290516000926001600160a01b031691630c340a24916004808301926020929190829003018186803b1580156104e257600080fd5b505afa1580156104f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051a9190614459565b905090565b6002600154141561054b5760405162461bcd60e51b815260040161054290614476565b60405180910390fd5b6002600181905554604051633e25dee160e21b81526001600160a01b03808a1660048301528992169063f8977b849060240160206040518083038186803b15801561059557600080fd5b505afa1580156105a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cd91906144bd565b6105ea5760405163a67d528360e01b815260040160405180910390fd5b600254604051631a0dd00b60e01b81526001600160a01b03808d1660048301528c921690631a0dd00b9060240160206040518083038186803b15801561062f57600080fd5b505afa158015610643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066791906144bd565b6106845760405163a596698b60e01b815260040160405180910390fd5b8b886106a3576040516310eb483f60e21b815260040160405180910390fd5b670de0b6b3a764000088116106cb57604051631907e1ff60e21b815260040160405180910390fd5b6107608a6001600160a01b031663df011c416040518163ffffffff1660e01b815260040160206040518083038186803b15801561070757600080fd5b505afa15801561071b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f91906144d8565b61075190670de0b6b3a7640000614507565b670de0b6b3a764000090612ec7565b88111561078057604051630a4f5a0760e01b815260040160405180910390fd5b6001600160a01b0381166107a757604051634f70ad6b60e01b815260040160405180910390fd5b6001600160a01b038b166107ce57604051633a8b51a760e01b815260040160405180910390fd5b6000806107dc83338d612f04565b9a506107ea838f8d8d613025565b9150600260009054906101000a90046001600160a01b03166001600160a01b0316639f8f0fa88f6040518263ffffffff1660e01b815260040161083c91906001600160a01b0391909116815260200190565b60206040518083038186803b15801561085457600080fd5b505afa158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c9190614459565b6001600160a01b031663bfa176566108a2610a42565b846040518363ffffffff1660e01b81526004016108c092919061451e565b6040805180830381600087803b1580156108d957600080fd5b505af11580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190614537565b508091505060008e8e838c60405160200161095394939291906001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60408051601f1981840301815291905290508c610976858e8685858f8f8f61315c565b505060018055505050505050505050505050505050565b6002546040805163afcff50f60e01b815290516000926001600160a01b03169163afcff50f916004808301926020929190829003018186803b1580156109d257600080fd5b505afa1580156109e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0a9190614459565b6001600160a01b0316632b3297f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e257600080fd5b6002546040805163afcff50f60e01b815290516000926001600160a01b03169163afcff50f916004808301926020929190829003018186803b158015610a8757600080fd5b505afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190614459565b6001600160a01b03166332c615b46040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e257600080fd5b600080600260009054906101000a90046001600160a01b03166001600160a01b031663ecf3a3f96040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8091906144bd565b15610b9e57604051631b0e923f60e11b815260040160405180910390fd5b60026001541415610bc15760405162461bcd60e51b815260040161054290614476565b6002600181905554604051633e25dee160e21b81526001600160a01b0380881660048301528792169063f8977b849060240160206040518083038186803b158015610c0b57600080fd5b505afa158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4391906144bd565b610c605760405163a67d528360e01b815260040160405180910390fd5b600254604051631a0dd00b60e01b81526001600160a01b03808a16600483015289921690631a0dd00b9060240160206040518083038186803b158015610ca557600080fd5b505afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd91906144bd565b610cfa5760405163a596698b60e01b815260040160405180910390fd5b85610d18576040516310eb483f60e21b815260040160405180910390fd5b6040516370a0823160e01b81523360048201526001600160a01b038816906370a082319060240160206040518083038186803b158015610d5757600080fd5b505afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f91906144d8565b861115610daf57604051635de1e54160e01b815260040160405180910390fd5b6002546040516313f1e1f560e31b81526001600160a01b038a81166004830152909116906000908290639f8f0fa89060240160206040518083038186803b158015610df957600080fd5b505afa158015610e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e319190614459565b6040516370a0823160e01b81523360048201529091506001600160a01b038216906370a082319060240160206040518083038186803b158015610e7357600080fd5b505afa158015610e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eab91906144d8565b871115610ecb57604051635de1e54160e01b815260040160405180910390fd5b6040516336e1668760e11b81526001600160a01b038a1690636dc2cd0e90610ef99033908c9060040161451e565b6040805180830381600087803b158015610f1257600080fd5b505af1158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a9190614537565b5095506000610f6c610f5a61098d565b610f638c613452565b8d8a60006134c5565b905087811015610f8f57604051634394bddf60e11b815260040160405180910390fd5b6040516370a0823160e01b81523360048201526000906001600160a01b0384169063c9dc4b4d9082906370a082319060240160206040518083038186803b158015610fd957600080fd5b505afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101191906144d8565b6040518263ffffffff1660e01b815260040161102f91815260200190565b604080518083038186803b15801561104657600080fd5b505afa15801561105a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107e9190614537565b509050600061108d83836134df565b604051630450cfaf60e31b81529091506001600160a01b038516906322867d78906110be903390859060040161451e565b6040805180830381600087803b1580156110d757600080fd5b505af11580156110eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110f9190614537565b5097508083111561114157611141336111288386614507565b8f6001600160a01b03166134f59092919063ffffffff16565b60405163dde3ab9560e01b81523360048201526000906001600160a01b0387169063dde3ab959060240160a06040518083038186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb919061455b565b505050509050806111df5760405163cfd3600360e01b815260040160405180910390fd5b8c6001600160a01b03168e6001600160a01b03167f70e2337c0939e469d0c3d069c581bc0b72c541a70c592cdd46087d24e5e980d28c8c60405161122d929190918252602082015260400190565b60405180910390a350505050505050506001808190555094509492505050565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152606401610542565b60006112c384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061355092505050565b600081815260366020908152604091829020825160a081018452815461ffff811682526201000090046001600160a01b03908116938201939093526001820154938101939093526002015490811660608301819052600160a01b90910460ff1615156080830152919450925015159050611350576040516311bf899560e21b815260040160405180910390fd5b80608001511561137357604051630814de4560e11b815260040160405180910390fd5b80606001516001600160a01b0316336001600160a01b031614156113a65760008281526036602052604090206001018390555b60006113b0610a42565b60405163dfda255f60e01b815261ffff8d1660048201529091506000906001600160a01b0383169063dfda255f9060240160206040518083038186803b1580156113f957600080fd5b505afa15801561140d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114319190614459565b604051602001611459919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052905082602001516001600160a01b0316636d1bb8f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114df9190614459565b6001600160a01b031663cfd6528e8d8d8d8d86888f8f8f6040518a63ffffffff1660e01b815260040161151a999897969594939291906145cb565b600060405180830381600087803b15801561153457600080fd5b505af1158015611548573d6000803e3d6000fd5b50505050505050505050505050505050565b600080600260009054906101000a90046001600160a01b03166001600160a01b031663ecf3a3f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ab57600080fd5b505afa1580156115bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e391906144bd565b1561160157604051631b0e923f60e11b815260040160405180910390fd5b600260015414156116245760405162461bcd60e51b815260040161054290614476565b6002600181905554604051633e25dee160e21b81526001600160a01b03808a1660048301528992169063f8977b849060240160206040518083038186803b15801561166e57600080fd5b505afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a691906144bd565b6116c35760405163a67d528360e01b815260040160405180910390fd5b600254604051631a0dd00b60e01b81526001600160a01b03808a16600483015289921690631a0dd00b9060240160206040518083038186803b15801561170857600080fd5b505afa15801561171c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174091906144bd565b61175d5760405163a596698b60e01b815260040160405180910390fd5b8661177b576040516310eb483f60e21b815260040160405180910390fd5b670de0b6b3a764000086116117a357604051631907e1ff60e21b815260040160405180910390fd5b6117df896001600160a01b031663df011c416040518163ffffffff1660e01b815260040160206040518083038186803b15801561070757600080fd5b8611156117ff57604051630a4f5a0760e01b815260040160405180910390fd5b600061180961098d565b905060006118168b613452565b90506001600160a01b038c1661182a57809b505b6118358c338b612f04565b9850806001600160a01b03168c6001600160a01b0316146118615761185e828d838c60006134c5565b98505b600061186f828c8c8c613025565b6002546040516313f1e1f560e31b81526001600160a01b038e8116600483015292935060009290911690639f8f0fa89060240160206040518083038186803b1580156118ba57600080fd5b505afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f29190614459565b604051635fd0bb2b60e11b81529091506001600160a01b0382169063bfa1765690611923903090869060040161451e565b6040805180830381600087803b15801561193c57600080fd5b505af1158015611950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119749190614537565b506040516340c10f1960e01b81529097506001600160a01b038216906340c10f19906119a6903390869060040161451e565b600060405180830381600087803b1580156119c057600080fd5b505af11580156119d4573d6000803e3d6000fd5b50505050505060006119ea838c848960006134c5565b6119f4908b614646565b905087811015611a175760405163c724afdf60e01b815260040160405180910390fd5b611a2c6001600160a01b0383168d600061358f565b611a406001600160a01b0383168d8361358f565b604051636e553f6560e01b8152600481018290523360248201526001600160a01b038d1690636e553f65906044016040805180830381600087803b158015611a8757600080fd5b505af1158015611a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abf9190614537565b5060025460405163dde3ab9560e01b81523360048201529198506000916001600160a01b039091169063dde3ab959060240160a06040518083038186803b158015611b0957600080fd5b505afa158015611b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b41919061455b565b50505050905080611b655760405163cfd3600360e01b815260040160405180910390fd5b8b6001600160a01b03168d6001600160a01b03168f6001600160a01b03167fd82c156e929db20771fc8413cc0789925f6c666a3e5076d5844765ee28bb3a958d8f8c8e604051611bce949392919093845260208401929092526040830152606082015260800190565b60405180910390a450505050505060018081905550965096945050505050565b6000611c2f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136a292505050565b600081815260356020908152604091829020825161014081018452815461ffff811682526201000090046001600160a01b0390811693820193909352600182015483169381019390935260028101548216606084015260038101546080840152600481015460a0840152600581015460c0840152600681015480831660e08501819052600160a01b90910460ff1615156101008501526007909101549091166101208301529193509150611cf6576040516311bf899560e21b815260040160405180910390fd5b80610100015115611d1a57604051630814de4560e11b815260040160405180910390fd5b8060e001516001600160a01b0316336001600160a01b03161415611d4d5760008281526035602052604090206005018390555b6000611d57610a42565b60405163dfda255f60e01b815261ffff8e1660048201529091506000906001600160a01b0383169063dfda255f9060240160206040518083038186803b158015611da057600080fd5b505afa158015611db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd89190614459565b6040516bffffffffffffffffffffffff19606083901b16602082015290915060009063ab8236f360e01b908f9060340160408051601f1981840301815290829052611e3092918f908f908f908f908f9060240161465e565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050826001600160a01b0316633352b6086040518163ffffffff1660e01b815260040160206040518083038186803b158015611e9e57600080fd5b505afa158015611eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed69190614459565b6001600160a01b031663c0e6ac6c8f8f8f8f88876040518763ffffffff1660e01b8152600401611f0b969594939291906146c2565b600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b505050505050505050505050505050505050565b6002546040805163ecf3a3f960e01b815290516000926001600160a01b03169163ecf3a3f9916004808301926020929190829003018186803b158015611f9257600080fd5b505afa158015611fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fca91906144bd565b15611fe857604051631b0e923f60e11b815260040160405180910390fd5b6002600154141561200b5760405162461bcd60e51b815260040161054290614476565b6002600155612018610a42565b6001600160a01b0316336001600160a01b03161461204957604051632b78ce1b60e11b815260040160405180910390fd5b600083815260366020908152604091829020825160a081018452815461ffff811682526201000090046001600160a01b03908116938201939093526001820154938101939093526002015490811660608301819052600160a01b90910460ff16151560808301526120cd576040516311bf899560e21b815260040160405180910390fd5b8060800151156120f057604051630814de4560e11b815260040160405180910390fd5b6000848152603660209081526040909120600201805460ff60a01b1916600160a01b179055810151612123903385612f04565b60025460208301516040516313f1e1f560e31b81526001600160a01b039182166004820152929550600092911690639f8f0fa89060240160206040518083038186803b15801561217257600080fd5b505afa158015612186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121aa9190614459565b60608301516040516370a0823160e01b81526001600160a01b0391821660048201529192506000919083169063c9dc4b4d9082906370a082319060240160206040518083038186803b1580156121ff57600080fd5b505afa158015612213573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223791906144d8565b6040518263ffffffff1660e01b815260040161225591815260200190565b604080518083038186803b15801561226c57600080fd5b505afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a49190614537565b50905060006122b386836134df565b90508015612342576060840151604051630450cfaf60e31b81526001600160a01b038516916322867d78916122ed9190859060040161451e565b6040805180830381600087803b15801561230657600080fd5b505af115801561231a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233e9190614537565b5094505b836040015185101561236757604051634394bddf60e11b815260040160405180910390fd5b80861115612397576060840151612397906123828389614507565b60208701516001600160a01b031691906134f5565b60405187907f46da7fdc7ceed834de258df19d8f9ebd7082810a4eb45732d1401df31e5aaa1390600090a250506001805550909392505050565b6002546040805163ecf3a3f960e01b815290516000926001600160a01b03169163ecf3a3f9916004808301926020929190829003018186803b15801561241657600080fd5b505afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e91906144bd565b1561246c57604051631b0e923f60e11b815260040160405180910390fd5b6002600154141561248f5760405162461bcd60e51b815260040161054290614476565b600260015561249c610a42565b6001600160a01b0316336001600160a01b0316146124cd57604051632b78ce1b60e11b815260040160405180910390fd5b600083815260356020908152604091829020825161014081018452815461ffff811682526201000090046001600160a01b0390811693820193909352600182015483169381019390935260028101548216606084015260038101546080840152600481015460a0840152600581015460c0840152600681015480831660e08501819052600160a01b90910460ff16151561010085015260079091015490911661012083015261258f576040516311bf899560e21b815260040160405180910390fd5b806101000151156125b357604051630814de4560e11b815260040160405180910390fd5b60006125c28260400151613452565b6000868152603560209081526040909120600601805460ff60a01b1916600160a01b1790558301519091506125f8903386612f04565b9350600082602001516001600160a01b03168361012001516001600160a01b0316141561264f5761264861262a61098d565b846101200151848887608001516126419190614646565b60006134c5565b9050612695565b61266d61265a61098d565b84610120015184866080015160006134c5565b905061268861267a61098d565b8460200151848860006134c5565b6126929082614646565b90505b8260c001518110156126ba5760405163c724afdf60e01b815260040160405180910390fd5b60408301516126d5906001600160a01b03841690600061358f565b60408301516126ef906001600160a01b038416908361358f565b60408084015160e08501519151636e553f6560e01b8152600481018490526001600160a01b039283166024820152911690636e553f65906044016040805180830381600087803b15801561274257600080fd5b505af1158015612756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277a9190614537565b5060025460608501516040516313f1e1f560e31b81526001600160a01b03918216600482015292965016908190639f8f0fa89060240160206040518083038186803b1580156127c857600080fd5b505afa1580156127dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128009190614459565b6001600160a01b03166340c10f198560e001518660a001516040518363ffffffff1660e01b815260040161283592919061451e565b600060405180830381600087803b15801561284f57600080fd5b505af1158015612863573d6000803e3d6000fd5b5050505060e084015160405163dde3ab9560e01b81526001600160a01b03918216600482015260009183169063dde3ab959060240160a06040518083038186803b1580156128b057600080fd5b505afa1580156128c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e8919061455b565b5050505090508061290c5760405163cfd3600360e01b815260040160405180910390fd5b60405188907f8e4ff8e32fb3b90b184bdac5bf0d9b2a0fe19baa9dfea95c0fcd7d8e3842e80e90600090a25050600180555091949350505050565b6002600154141561296a5760405162461bcd60e51b815260040161054290614476565b6002600181905554604051633e25dee160e21b81526001600160a01b03808b1660048301528a92169063f8977b849060240160206040518083038186803b1580156129b457600080fd5b505afa1580156129c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ec91906144bd565b612a095760405163a67d528360e01b815260040160405180910390fd5b600254604051631a0dd00b60e01b81526001600160a01b03808d1660048301528c921690631a0dd00b9060240160206040518083038186803b158015612a4e57600080fd5b505afa158015612a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8691906144bd565b612aa35760405163a596698b60e01b815260040160405180910390fd5b88612ac1576040516310eb483f60e21b815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663afcff50f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b0f57600080fd5b505afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190614459565b6001600160a01b031663995031cd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7f57600080fd5b505afa158015612b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb791906144bd565b612bd457604051639e0d93d560e01b815260040160405180910390fd5b6002546040516313f1e1f560e31b81526001600160a01b038d811660048301526000928392911690639f8f0fa89060240160206040518083038186803b158015612c1d57600080fd5b505afa158015612c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c559190614459565b9050806001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612c9257600080fd5b505af1158015612ca6573d6000803e3d6000fd5b50506040516370a0823160e01b81523360048201526001600160a01b03841692506370a08231915060240160206040518083038186803b158015612ce957600080fd5b505afa158015612cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2191906144d8565b871115612d4157604051635de1e54160e01b815260040160405180910390fd5b612d49610a42565b91505060008b6001600160a01b0316639470b0bd338d6040518363ffffffff1660e01b8152600401612d7c92919061451e565b6040805180830381600087803b158015612d9557600080fd5b505af1158015612da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dcd9190614537565b509050612ded612ddb61098d565b612de48e613452565b8c848d876136db565b9050612dff828b8f848c8c8c8c6138f7565b5050600180555050505050505050505050565b6000612e1e6001613a80565b90508015612e36576000805461ff0019166101001790555b6001600160a01b038216612e5d57604051633cb1fb1f60e11b815260040160405180910390fd5b612e65613b0d565b612e6e82613b3e565b8015612eb4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600081612ed560028261471e565b612ee7670de0b6b3a764000086614740565b612ef19190614646565b612efb919061471e565b90505b92915050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038616906370a082319060240160206040518083038186803b158015612f4857600080fd5b505afa158015612f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8091906144d8565b9050612f976001600160a01b038616853086613bae565b6040516370a0823160e01b815230600482015281906001600160a01b038716906370a082319060240160206040518083038186803b158015612fd857600080fd5b505afa158015612fec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301091906144d8565b61301a9190614507565b9150505b9392505050565b60025460408051637556d1c160e11b815290516000926001600160a01b03169163eaada382916004808301926020929190829003018186803b15801561306a57600080fd5b505afa15801561307e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a29190614459565b6001600160a01b031663b646638486866130ce876130c8670de0b6b3a764000089614507565b90613bec565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152604482015260640160206040518083038186803b15801561311b57600080fd5b505afa15801561312f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315391906144d8565b95945050505050565b6000613166613c24565b905060008060008089806020019051810190613182919061475f565b935093509350935060006131cb88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613c8692505050565b505090506040518061014001604052808261ffff168152602001856001600160a01b031681526020018b6001600160a01b03168152602001866001600160a01b031681526020018e81526020018d81526020018a8152602001336001600160a01b031681526020016000151581526020018f6001600160a01b03168152506035600088815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506080820151816003015560a0820151816004015560c0820151816005015560e08201518160060160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160060160146101000a81548160ff0219169083151502179055506101208201518160070160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050506133ac610a42565b6001600160a01b03166339f648bf348733888888888f8f6040518a63ffffffff1660e01b81526004016133e69897969594939291906147a7565b6000604051808303818588803b1580156133ff57600080fd5b505af1158015613413573d6000803e3d6000fd5b50506040518893507f46a791deaa2c43990d6e3b60a320fbebef9a6677379f326b308fb9efc8128619925060009150a250505050505050505050505050565b6000816001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561348d57600080fd5b505afa1580156134a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efe9190614459565b60006134d58686868686306136db565b9695505050505050565b60008183106134ee5781612efb565b5090919050565b61354b8363a9059cbb60e01b848460405160240161351492919061451e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613c9f565b505050565b6000806000838060200190518101906135699190614806565b80519095506135829150850160209081019086016148cf565b9250925092509193909250565b8015806136185750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156135de57600080fd5b505afa1580156135f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061361691906144d8565b155b6136835760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610542565b61354b8363095ea7b360e01b848460405160240161351492919061451e565b600080828060200190518101906136b99190614806565b80519094506136d2915084016020908101908501614912565b91509150915091565b6000846001600160a01b0316866001600160a01b0316146138c85761370b6001600160a01b03871688600061358f565b61371f6001600160a01b038716888661358f565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908716906370a082319060240160206040518083038186803b15801561376457600080fd5b505afa158015613778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379c91906144d8565b604051636ccb2b0160e01b81526001600160a01b03898116600483015288811660248301526044820188905260648201879052858116608483015291925090891690636ccb2b019060a401602060405180830381600087803b15801561380157600080fd5b505af1158015613815573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061383991906144d8565b506040516370a0823160e01b81526001600160a01b0384811660048301528291908816906370a082319060240160206040518083038186803b15801561387e57600080fd5b505afa158015613892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b691906144d8565b6138c09190614507565b9150506134d5565b6001600160a01b03821630146138ec576138ec6001600160a01b03871683866134f5565b509195945050505050565b6000613901613c24565b9050600061394484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613c8692505050565b50506040805160a08101825261ffff80841682526001600160a01b03808d1660208085019182528486018c815233606087018181526000608089018181528d82526036909552899020975188549551871662010000026001600160b01b031990961697169690961793909317865551600186015592516002909401805493511515600160a01b026001600160a81b03199094169483169490941792909217909255915162bc9db960e01b81529293508c169162bc9db9913491613a179187918f908f908f908f908e908e906004016147a7565b6000604051808303818588803b158015613a3057600080fd5b505af1158015613a44573d6000803e3d6000fd5b50506040518593507ff83a8331f3e68a894879f051738cb73cdced1709a214e49f6dc1d541a0415e8b925060009150a250505050505050505050565b60008054610100900460ff1615613ac7578160ff166001148015613aa35750303b155b613abf5760405162461bcd60e51b815260040161054290614940565b506000919050565b60005460ff808416911610613aee5760405162461bcd60e51b815260040161054290614940565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff16613b345760405162461bcd60e51b81526004016105429061498e565b613b3c613d71565b565b600054610100900460ff16613b655760405162461bcd60e51b81526004016105429061498e565b6001600160a01b038116613b8c5760405163724f500960e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b0380851660248301528316604482015260648101829052613be69085906323b872dd60e01b90608401613514565b50505050565b6000821580613bf9575081155b15613c0657506000612efe565b670de0b6b3a7640000613c1a60028261471e565b612ee78486614740565b60004630603460008154613c37906149d9565b9182905550604051613c68939291906020019283526001600160a01b03919091166020830152604082015260600190565b6040516020818303038152906040528051906020012060001c905090565b60008060008380602001905181019061358291906149f4565b6000613cf4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613d9e9092919063ffffffff16565b80519091501561354b5780806020019051810190613d1291906144bd565b61354b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610542565b600054610100900460ff16613d985760405162461bcd60e51b81526004016105429061498e565b60018055565b6060613dad8484600085613db5565b949350505050565b606082471015613e165760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610542565b6001600160a01b0385163b613e6d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610542565b600080866001600160a01b03168587604051613e899190614a37565b60006040518083038185875af1925050503d8060008114613ec6576040519150601f19603f3d011682016040523d82523d6000602084013e613ecb565b606091505b5091509150613edb828286613ee6565b979650505050505050565b60608315613ef557508161301e565b825115613f055782518084602001fd5b8160405162461bcd60e51b81526004016105429190614446565b6001600160a01b0381168114613f3457600080fd5b50565b60008083601f840112613f4957600080fd5b50813567ffffffffffffffff811115613f6157600080fd5b602083019150836020828501011115613f7957600080fd5b9250929050565b6000806000806000806000806000806101208b8d031215613fa057600080fd5b8a35613fab81613f1f565b995060208b0135613fbb81613f1f565b985060408b0135613fcb81613f1f565b975060608b0135613fdb81613f1f565b965060808b0135955060a08b0135945060c08b0135935060e08b013592506101008b013567ffffffffffffffff81111561401457600080fd5b6140208d828e01613f37565b915080935050809150509295989b9194979a5092959850565b6000806000806080858703121561404f57600080fd5b843561405a81613f1f565b9350602085013561406a81613f1f565b93969395505050506040820135916060013590565b60008060008060008060008060006101008a8c03121561409e57600080fd5b89356140a981613f1f565b985060208a01356140b981613f1f565b975060408a01356140c981613f1f565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff81111561410157600080fd5b61410d8c828d01613f37565b915080935050809150509295985092959850929598565b61ffff81168114613f3457600080fd5b67ffffffffffffffff81168114613f3457600080fd5b60008060008060008060008060c0898b03121561416657600080fd5b883561417181614124565b9750602089013567ffffffffffffffff8082111561418e57600080fd5b61419a8c838d01613f37565b909950975060408b013591506141af82614134565b90955060608a0135945060808a013590808211156141cc57600080fd5b506141d98b828c01613f37565b999c989b50969995989497949560a00135949350505050565b60008060008060008060c0878903121561420b57600080fd5b863561421681613f1f565b9550602087013561422681613f1f565b9450604087013561423681613f1f565b959894975094956060810135955060808101359460a0909101359350915050565b600080600080600080600080600060e08a8c03121561427557600080fd5b893561428081614124565b985060208a013567ffffffffffffffff8082111561429d57600080fd5b6142a98d838e01613f37565b909a50985060408c013591506142be82614134565b90965060608b0135906142d082613f1f565b90955060808b0135945060a08b013590808211156142ed57600080fd5b506142fa8c828d01613f37565b9a9d999c50979a9699959894979660c00135949350505050565b6000806040838503121561432757600080fd5b50508035926020909101359150565b60006020828403121561434857600080fd5b5035919050565b60008060008060008060008060006101008a8c03121561436e57600080fd5b893561437981613f1f565b985060208a013561438981613f1f565b975060408a0135965060608a01356143a081613f1f565b955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff81111561410157600080fd5b6000602082840312156143e357600080fd5b813561301e81613f1f565b60005b838110156144095781810151838201526020016143f1565b83811115613be65750506000910152565b600081518084526144328160208601602086016143ee565b601f01601f19169290920160200192915050565b602081526000612efb602083018461441a565b60006020828403121561446b57600080fd5b815161301e81613f1f565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b80518015158114613b0857600080fd5b6000602082840312156144cf57600080fd5b612efb826144ad565b6000602082840312156144ea57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082821015614519576145196144f1565b500390565b6001600160a01b03929092168252602082015260400190565b6000806040838503121561454a57600080fd5b505080516020909101519092909150565b600080600080600060a0868803121561457357600080fd5b61457c866144ad565b602087015160408801516060890151608090990151929a91995097965090945092505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff8a16815260e0602082015260006145e960e083018a8c6145a2565b67ffffffffffffffff89166040840152828103606084015261460b818961441a565b6001600160a01b038816608085015260a0840187905283810360c085015290506146368185876145a2565b9c9b505050505050505050505050565b60008219821115614659576146596144f1565b500190565b61ffff8816815260c06020820152600061467b60c083018961441a565b67ffffffffffffffff881660408401526001600160a01b03871660608401526080830186905282810360a08401526146b48185876145a2565b9a9950505050505050505050565b61ffff8716815260a0602082015260006146e060a0830187896145a2565b67ffffffffffffffff861660408401526001600160a01b03851660608401528281036080840152614711818561441a565b9998505050505050505050565b60008261473b57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561475a5761475a6144f1565b500290565b6000806000806080858703121561477557600080fd5b845161478081613f1f565b602086015190945061479181613f1f565b6040860151606090960151949790965092505050565b8881526001600160a01b0388811660208301528781166040830152861660608201526080810185905260a0810184905260e060c082018190526000906146b490830184866145a2565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561481957600080fd5b825160ff8116811461482a57600080fd5b602084015190925067ffffffffffffffff8082111561484857600080fd5b818501915085601f83011261485c57600080fd5b81518181111561486e5761486e6147f0565b604051601f8201601f19908116603f01168101908382118183101715614896576148966147f0565b816040528281528860208487010111156148af57600080fd5b6148c08360208301602088016143ee565b80955050505050509250929050565b6000806000606084860312156148e457600080fd5b83516148ef81613f1f565b602085015190935061490081613f1f565b80925050604084015190509250925092565b6000806040838503121561492557600080fd5b825161493081613f1f565b6020939093015192949293505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006000198214156149ed576149ed6144f1565b5060010190565b600080600060608486031215614a0957600080fd5b8351614a1481614124565b602085015160408601519194509250614a2c81614134565b809150509250925092565b60008251614a498184602087016143ee565b919091019291505056fea2646970667358221220882aa86ae1b37607684a238539e6fc4bff886de3f1cb478050d78b45f5ec82e864736f6c63430008090033496e697469616c697a61626c653a20636f6e747261637420697320616c726561