More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 75 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Redeem | 19723406 | 347 days ago | IN | 0 ETH | 0.00056366 | ||||
Redeem | 19719110 | 347 days ago | IN | 0 ETH | 0.00690475 | ||||
Redeem | 19717221 | 348 days ago | IN | 0 ETH | 0.00102334 | ||||
Redeem | 19701205 | 350 days ago | IN | 0 ETH | 0.00366862 | ||||
Redeem | 19658560 | 356 days ago | IN | 0 ETH | 0.00093314 | ||||
Redeem | 19617360 | 362 days ago | IN | 0 ETH | 0.0098585 | ||||
Refund Cbridge | 19594792 | 365 days ago | IN | 0 ETH | 0.00045369 | ||||
Redeem | 19588832 | 366 days ago | IN | 0 ETH | 0.00585982 | ||||
Refund Cbridge | 19566460 | 369 days ago | IN | 0 ETH | 0.00114086 | ||||
Refund Cbridge | 19566454 | 369 days ago | IN | 0 ETH | 0.00157799 | ||||
Redeem | 19545300 | 372 days ago | IN | 0 ETH | 0.01016717 | ||||
Redeem | 19529204 | 374 days ago | IN | 0 ETH | 0.0026913 | ||||
Redeem | 19527300 | 374 days ago | IN | 0 ETH | 0.00388347 | ||||
Redeem | 19522428 | 375 days ago | IN | 0 ETH | 0.01103842 | ||||
Redeem | 19518556 | 376 days ago | IN | 0 ETH | 0.00215143 | ||||
Redeem | 19514671 | 376 days ago | IN | 0 ETH | 0.00220446 | ||||
Redeem | 19513354 | 376 days ago | IN | 0 ETH | 0.00355945 | ||||
Redeem | 19513284 | 376 days ago | IN | 0 ETH | 0.0032187 | ||||
Redeem | 19513192 | 376 days ago | IN | 0 ETH | 0.00309179 | ||||
Redeem | 19513112 | 376 days ago | IN | 0 ETH | 0.00340824 | ||||
Redeem | 19513036 | 376 days ago | IN | 0 ETH | 0.00349115 | ||||
Redeem | 19512958 | 376 days ago | IN | 0 ETH | 0.00308295 | ||||
Redeem | 19512882 | 376 days ago | IN | 0 ETH | 0.00357335 | ||||
Redeem | 19511886 | 377 days ago | IN | 0 ETH | 0.00185067 | ||||
Redeem | 19511882 | 377 days ago | IN | 0 ETH | 0.00213311 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 19719110 | 347 days ago | 0.00214881 ETH | ||||
Transfer | 19719110 | 347 days ago | 0.00214881 ETH | ||||
Deposit | 19669574 | 354 days ago | 0.24939 ETH | ||||
Swap | 19669574 | 354 days ago | 0.24939 ETH | ||||
Deposit | 19664703 | 355 days ago | 0.315186 ETH | ||||
Swap | 19664703 | 355 days ago | 0.315186 ETH | ||||
Deposit | 19643880 | 358 days ago | 0.171 ETH | ||||
Swap | 19643880 | 358 days ago | 0.171 ETH | ||||
Deposit | 19621858 | 361 days ago | 0.1441449 ETH | ||||
Swap | 19621858 | 361 days ago | 0.1441449 ETH | ||||
Deposit | 19617972 | 362 days ago | 0.3 ETH | ||||
Swap | 19617972 | 362 days ago | 0.3 ETH | ||||
Deposit | 19599897 | 364 days ago | 0.01008762 ETH | ||||
Swap | 19599897 | 364 days ago | 0.01008762 ETH | ||||
Deposit | 19596938 | 365 days ago | 0.14879776 ETH | ||||
Swap | 19596938 | 365 days ago | 0.14879776 ETH | ||||
Transfer | 19594792 | 365 days ago | 0.03018464 ETH | ||||
Transfer | 19588832 | 366 days ago | 0.01454812 ETH | ||||
Transfer | 19588832 | 366 days ago | 0.01454812 ETH | ||||
Transfer* | 19586232 | 366 days ago | 0.2991 ETH | ||||
Transfer | 19586232 | 366 days ago | 0.0009 ETH | ||||
Swap | 19586232 | 366 days ago | 0.33018464 ETH | ||||
Swap | 19574440 | 368 days ago | 0.00064536 ETH | ||||
Swap | 19574440 | 368 days ago | 0.00064536 ETH | ||||
Deposit | 19539636 | 373 days ago | 0.03 ETH |
Loading...
Loading
Contract Name:
BridgePlus
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0 <0.9.0; interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); } interface IWETH is IERC20 { function deposit() external payable; function withdraw(uint amount) external; } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } interface IERC20Permit { function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function nonces(address owner) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } interface ISwapPlusv1 { struct swapRouter { string platform; address tokenIn; address tokenOut; uint256 amountOutMin; uint256 meta; // fee, flag(stable), 0=v2 uint256 percent; } struct swapLine { swapRouter[] swaps; } struct swapBlock { swapLine[] lines; } function swap(address tokenIn, uint256 amount, address tokenOut, address recipient, swapBlock[] calldata swBlocks) external payable returns(uint256, uint256); } interface ILCBridgev2 { function swap(address _to, address _refund, uint256 _outChainID) external payable returns(uint256); function redeem(address account, uint256 amount, uint256 srcChainId, uint256 _swapIndex, uint256 operatorFee) external returns(uint256); function refund(uint256 _index, uint256 _fee) external returns(uint256); } interface ILCBridgev2Token { function swap(address _to, uint256 _amount, address _refund, uint256 _outChainID) external payable returns(uint256); function redeem(address account, uint256 amount, uint256 srcChainId, uint256 _swapIndex, uint256 operatorFee) external returns(uint256); function refund(uint256 _index) external returns(uint256); } interface IBridge { function addNativeLiquidity(uint256 _amount) external payable; function send( address _receiver, address _token, uint256 _amount, uint64 _dstChainId, uint64 _nonce, uint32 _maxSlippage // slippage * 1M, eg. 0.5% -> 5000 ) external; function sendNative( address _receiver, uint256 _amount, uint64 _dstChainId, uint64 _nonce, uint32 _maxSlippage ) external payable; function withdraw( bytes calldata _wdmsg, bytes[] calldata _sigs, address[] calldata _signers, uint256[] calldata _powers ) external; } interface IStargateRouter { struct lzTxObj { uint256 dstGasForCall; uint256 dstNativeAmount; bytes dstNativeAddr; } function addLiquidity(uint256 _poolId, uint256 _amountLD, address to) external payable; function instantRedeemLocal(uint16 _srcPoolId, uint256 _amountLD, address to) external payable; function swap( uint16 _dstChainId, uint256 _srcPoolId, uint256 _dstPoolId, address payable _refundAddress, uint256 _amountLD, uint256 _minAmountLD, lzTxObj memory _lzTxParams, bytes calldata _to, bytes calldata _payload ) external payable; function quoteLayerZeroFee( uint16 _dstChainId, uint8 _functionType, bytes calldata _toAddress, bytes calldata _transferAndCallPayload, lzTxObj memory _lzTxParams ) external view returns (uint256, uint256); } contract BridgePlus is Ownable, ReentrancyGuard { using SafeERC20 for IERC20; uint256 public chainId; address public WETH; address public treasury; address public swapRouter; address public debridgeRouter; uint256 public swapFee = 3000; uint256 public coreDecimal = 1000000; uint256 public stargateSwapFeeMultipler = 1400000; uint256 public stargateSwapFeeDivider = 1000000; mapping (address => bool) public noFeeWallets; mapping (address => bool) public managers; mapping (address => bool) public operators; mapping (address => bool) public whiteListContracts; mapping (uint256 => address) public approverContracts; struct Operator { address bridge; address inToken; address token; uint256 amount; address dstAddress; address receiver; address refund; uint256 desChainId; address dstToken; address receiveToken; uint256 bridgeType; uint256 basketId; bytes param; } struct swapPath { ISwapPlusv1.swapBlock[] path; } error DelegatecallFailed(); event BridgePlusFee(address token, uint256 fee, address treasury); event BridgePlusSwap(address dstAddress, address receiver, uint256 srcChainId, address srcToken, uint256 amount, uint256 dstChainId, address dstToken, address receiveToken, uint256 bridgeType, uint256 basketId); event BridgePlusRedeem(address receiver, address dstToken, uint256 receiveToken); constructor( uint256 _chainId, address _swapRouter, address _WETH, address _treasury ) { require(_swapRouter != address(0), "BridgePlus: swap router"); require(_WETH != address(0), "BridgePlus: WETH"); require(_treasury != address(0), "BridgePlus: Treasury"); chainId = _chainId; swapRouter = _swapRouter; WETH = _WETH; treasury = _treasury; whiteListContracts[0xeF4fB24aD0916217251F553c0596F8Edc630EB66] = true; whiteListContracts[0x663DC15D3C1aC63ff12E45Ab68FeA3F0a883C251] = true; whiteListContracts[0xf621Fb08BBE51aF70e7E0F4EA63496894166Ff7F] = true; approverContracts[510] = 0xfCEF2Fe72413b65d3F393d278A714caD87512bcd; managers[msg.sender] = true; } modifier onlyManager() { require(managers[msg.sender], "BridgePlus: !manager"); _; } modifier onlyOperator() { require(operators[msg.sender], "BridgePlus: !operator"); _; } receive() external payable { } function swap(Operator calldata info, swapPath calldata paths, uint256[] calldata metadata) public payable nonReentrant { uint256 amount = info.amount; if (info.inToken != address(0)) { amount = IERC20(info.inToken).balanceOf(address(this)); IERC20(info.inToken).safeTransferFrom(msg.sender, address(this), info.amount); amount = IERC20(info.inToken).balanceOf(address(this)) - amount; } else if (info.bridgeType == 2) { uint256 fee = getStgSwapFee(info.bridge, uint16(info.desChainId)); amount -= fee; } if (noFeeWallets[msg.sender] == false && info.bridgeType != 0 && info.bridgeType != 4) { amount = _cutFee(info.inToken, amount); } if (paths.path.length > 0) { address tokenI = info.inToken; address tokenO = info.token == address(0) ? WETH : info.token; if (tokenI == address(0)) { tokenI = WETH; IWETH(WETH).deposit{value: amount}(); } _approveTokenIfNeeded(tokenI, swapRouter, amount); (, amount) = ISwapPlusv1(swapRouter).swap(tokenI, amount, tokenO, address(this), paths.path); if (info.token == address(0)) { IWETH(WETH).withdraw(amount); } } if (info.bridgeType == 0) { // LC bridge if (info.token != address(0)) { IWETH(WETH).withdraw(amount); } ILCBridgev2(info.bridge).swap{value: amount}(info.dstAddress, info.refund, info.desChainId); } else { _approveTokenIfNeeded(info.token, info.bridge, amount); if (info.bridgeType == 1) { // CBridge uint64 nonce = uint64(block.timestamp); IBridge(info.bridge).send(info.dstAddress, info.token, amount, uint64(info.desChainId), nonce, 1000000); } else if (info.bridgeType == 2) { // Stargate uint256 fee = getStgSwapFee(info.bridge, uint16(info.desChainId)); IStargateRouter(info.bridge).swap{value: fee}( uint16(info.desChainId), metadata[0], metadata[1], payable(msg.sender), amount, 0, IStargateRouter.lzTxObj(0, 0, "0x"), abi.encodePacked(info.dstAddress), bytes("") ); } else if (info.bridgeType == 4) { ILCBridgev2Token(info.bridge).swap{value: 0}(info.dstAddress, amount, info.refund, info.desChainId); } else if (info.bridgeType == 5 || info.bridgeType >= 100) { require(whiteListContracts[info.bridge], "BridgePlus: !wrong bridge"); if (approverContracts[info.bridgeType] != address(0)) { _approveTokenIfNeeded(info.token, approverContracts[info.bridgeType], amount); } (bool ok, ) = address(info.bridge).call{value: metadata[0]}(info.param); if (!ok) { revert DelegatecallFailed(); } } } emit BridgePlusSwap(info.dstAddress, info.receiver, chainId, info.token, amount, info.desChainId, info.dstToken, info.receiveToken, info.bridgeType, info.basketId); } function redeem(address bridge, address receiver, address tokenO, address tokenR, uint256 amount, uint256 bridgeType, swapPath[2] calldata paths, uint256[] memory metadata) public payable onlyOperator nonReentrant returns(uint256) { if (bridgeType == 0 || bridgeType == 4) { // LC bridge amount = ILCBridgev2(bridge).redeem(address(this), amount, metadata[0], metadata[1], metadata[2]); if (metadata[2] > 0) { (bool success, ) = payable(msg.sender).call{value: metadata[2]}(""); require(success, "BridgePlus: Failed refund oeprator fee"); } } if (metadata[3] > 0) { // operator fee amount -= metadata[3]; if (paths[1].path.length > 0) { _approveTokenIfNeeded(tokenO, swapRouter, metadata[3]); (, metadata[3]) = ISwapPlusv1(swapRouter).swap(tokenO, metadata[3], WETH, address(this), paths[1].path); } if (tokenO != address(0)) { IWETH(WETH).withdraw(metadata[3]); } (bool success, ) = payable(msg.sender).call{value: metadata[3]}(""); require(success, "BridgePlus: Failed operator fee"); } if (paths[0].path.length > 0) { address tokenI = tokenO; address tokenSO = tokenR == address(0) ? WETH : tokenR; if (tokenI == address(0)) { tokenI = WETH; IWETH(WETH).deposit{value: amount}(); } _approveTokenIfNeeded(tokenI, swapRouter, amount); (, amount) = ISwapPlusv1(swapRouter).swap(tokenI, amount, tokenSO, address(this), paths[0].path); } if (tokenR == address(0)) { if (tokenO != address(0)) { IWETH(WETH).withdraw(amount); } (bool success, ) = payable(receiver).call{value: amount}(""); require(success, "BridgePlus: Failed redeem"); } else { IERC20(tokenR).safeTransfer(receiver, amount); } emit BridgePlusRedeem(receiver, tokenR, amount); return amount; } function refundCbridge( address cbridge, bytes calldata _wdmsg, bytes[] calldata _sigs, address[] calldata _signers, uint256[] calldata _powers, address account, address _token ) public nonReentrant { IBridge(cbridge).withdraw(_wdmsg, _sigs, _signers, _powers); if (_token == address(0)) { (bool success, ) = payable(account).call{value: address(this).balance}(""); require(success, "BridgePlus: refund cbrdige"); } else { IERC20(_token).safeTransfer(account, IERC20(_token).balanceOf(address(this))); } } function getStgSwapFee(address bridge, uint16 _desChain) public view returns(uint256) { (uint256 swFee, ) = IStargateRouter(bridge).quoteLayerZeroFee( _desChain, 1, bytes("0x"), bytes("0x"), IStargateRouter.lzTxObj(0, 0, "0x") ); return swFee * stargateSwapFeeMultipler / stargateSwapFeeDivider; } function setManager(address account, bool access) public onlyOwner { managers[account] = access; } function setOperator(address account, bool access) public onlyOwner { operators[account] = access; } function setSwapRouter(address _swapRouter) public onlyOwner { swapRouter = _swapRouter; } function setDebridgeRouter(address _debridgeRouter) public onlyOwner { debridgeRouter = _debridgeRouter; } function setNoFeeWallets(address account, bool access) public onlyManager { noFeeWallets[account] = access; } function setWhiteListContracts(address account, bool access) public onlyManager { whiteListContracts[account] = access; } function setApproverContracts(uint256 id, address bridge) public onlyManager { approverContracts[id] = bridge; } function setSwapFee(uint256 _swapFee) public onlyManager { swapFee = _swapFee; } function setTreasury(address _treasury) public onlyManager { treasury = _treasury; } function _approveTokenIfNeeded(address token, address spender, uint256 amount) private { if (token != address(0)) { uint256 oldAllowance = IERC20(token).allowance(address(this), spender); if (oldAllowance < amount) { if (oldAllowance > 0) { IERC20(token).safeApprove(spender, 0); } IERC20(token).safeApprove(spender, amount); } } } function _cutFee(address _token, uint256 _amount) internal returns(uint256) { if (_amount > 0) { uint256 fee = _amount * swapFee / coreDecimal; if (fee > 0) { if (_token == address(0)) { (bool success, ) = payable(treasury).call{value: fee}(""); require(success, "BridgePlus: Failed cut fee"); } else { IERC20(_token).safeTransfer(treasury, fee); } emit BridgePlusFee(_token, fee, treasury); } return _amount - fee; } return 0; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"address","name":"_swapRouter","type":"address"},{"internalType":"address","name":"_WETH","type":"address"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DelegatecallFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"address","name":"treasury","type":"address"}],"name":"BridgePlusFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"address","name":"dstToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"receiveToken","type":"uint256"}],"name":"BridgePlusRedeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"dstAddress","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"srcChainId","type":"uint256"},{"indexed":false,"internalType":"address","name":"srcToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dstChainId","type":"uint256"},{"indexed":false,"internalType":"address","name":"dstToken","type":"address"},{"indexed":false,"internalType":"address","name":"receiveToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"bridgeType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"basketId","type":"uint256"}],"name":"BridgePlusSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"approverContracts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coreDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"debridgeRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"},{"internalType":"uint16","name":"_desChain","type":"uint16"}],"name":"getStgSwapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noFeeWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"operators","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"tokenO","type":"address"},{"internalType":"address","name":"tokenR","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"bridgeType","type":"uint256"},{"components":[{"components":[{"components":[{"components":[{"internalType":"string","name":"platform","type":"string"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"meta","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"internalType":"struct ISwapPlusv1.swapRouter[]","name":"swaps","type":"tuple[]"}],"internalType":"struct ISwapPlusv1.swapLine[]","name":"lines","type":"tuple[]"}],"internalType":"struct ISwapPlusv1.swapBlock[]","name":"path","type":"tuple[]"}],"internalType":"struct BridgePlus.swapPath[2]","name":"paths","type":"tuple[2]"},{"internalType":"uint256[]","name":"metadata","type":"uint256[]"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"cbridge","type":"address"},{"internalType":"bytes","name":"_wdmsg","type":"bytes"},{"internalType":"bytes[]","name":"_sigs","type":"bytes[]"},{"internalType":"address[]","name":"_signers","type":"address[]"},{"internalType":"uint256[]","name":"_powers","type":"uint256[]"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"refundCbridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"bridge","type":"address"}],"name":"setApproverContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_debridgeRouter","type":"address"}],"name":"setDebridgeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setNoFeeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapFee","type":"uint256"}],"name":"setSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapRouter","type":"address"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setWhiteListContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stargateSwapFeeDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stargateSwapFeeMultipler","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"bridge","type":"address"},{"internalType":"address","name":"inToken","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"dstAddress","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"refund","type":"address"},{"internalType":"uint256","name":"desChainId","type":"uint256"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"receiveToken","type":"address"},{"internalType":"uint256","name":"bridgeType","type":"uint256"},{"internalType":"uint256","name":"basketId","type":"uint256"},{"internalType":"bytes","name":"param","type":"bytes"}],"internalType":"struct BridgePlus.Operator","name":"info","type":"tuple"},{"components":[{"components":[{"components":[{"components":[{"internalType":"string","name":"platform","type":"string"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"meta","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"internalType":"struct ISwapPlusv1.swapRouter[]","name":"swaps","type":"tuple[]"}],"internalType":"struct ISwapPlusv1.swapLine[]","name":"lines","type":"tuple[]"}],"internalType":"struct ISwapPlusv1.swapBlock[]","name":"path","type":"tuple[]"}],"internalType":"struct BridgePlus.swapPath","name":"paths","type":"tuple"},{"internalType":"uint256[]","name":"metadata","type":"uint256[]"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteListContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052610bb8600755620f424060085562155cc0600955620f4240600a553480156200002c57600080fd5b50604051620034c3380380620034c38339810160408190526200004f91620002f0565b6200005a3362000283565b600180556001600160a01b038316620000ba5760405162461bcd60e51b815260206004820152601760248201527f427269646765506c75733a207377617020726f7574657200000000000000000060448201526064015b60405180910390fd5b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601060248201526f084e4d2c8cecaa0d8eae67440ae8aa8960831b6044820152606401620000b1565b6001600160a01b0381166200015d5760405162461bcd60e51b815260206004820152601460248201527f427269646765506c75733a2054726561737572790000000000000000000000006044820152606401620000b1565b600293909355600580546001600160a01b039384166001600160a01b031991821617909155600380549284169282169290921790915560048054939092169281169290921790557f7c51f1bd22379b31d095700af3930b8b11d7de6812c36a616c472cf9cd1f6b36805460ff1990811660019081179092557ff09c1e71c276cc13f4a4ac2fc965616793893b99301dcd905fe953b0f21ed87a80548216831790557f0e29bbf744c2f867e4149d4d1bdd9263368a929006107fdc7b3e1413ace15f1f80548216831790557f6b97a3cc96cabe43d20499fdd45923893fa25726f714eb7084e3520943678cb9805490931673fcef2fe72413b65d3f393d278a714cad87512bcd17909255336000908152600c60205260409020805490921617905562000344565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620002eb57600080fd5b919050565b600080600080608085870312156200030757600080fd5b845193506200031960208601620002d3565b92506200032960408601620002d3565b91506200033960608601620002d3565b905092959194509250565b61316f80620003546000396000f3fe6080604052600436106101d15760003560e01c80639a8a0592116100f7578063e5e3ef5711610095578063f2fde38b11610064578063f2fde38b1461055e578063f361b0001461057e578063f8d2750914610594578063fdff9b4d146105a757600080fd5b8063e5e3ef57146104de578063e6c789f5146104fe578063e9d27b261461051e578063f0f442601461053e57600080fd5b8063ba9045e9116100d1578063ba9045e91461044e578063c31c9c071461046e578063d8d1d5071461048e578063e3e715b4146104be57600080fd5b80639a8a0592146103f8578063a5e90eee1461040e578063ad5c46481461042e57600080fd5b8063412736571161016f578063715018a61161013e578063715018a61461036f57806371d215bd1461038457806375207f67146103a45780638da5cb5b146103da57600080fd5b806341273657146102e157806354cf2aeb14610301578063558a72971461031757806361d027b31461033757600080fd5b8063224cfb89116101ab578063224cfb89146102685780632df28dac1461027e57806331eac68f146102ae57806334e19907146102c157600080fd5b80631020396e146101dd57806313e7c9d8146101ff5780631b2107141461024457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612656565b6105d7565b005b34801561020b57600080fd5b5061022f61021a366004612750565b600d6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561025057600080fd5b5061025a60085481565b60405190815260200161023b565b34801561027457600080fd5b5061025a60095481565b34801561028a57600080fd5b5061022f610299366004612750565b600b6020526000908152604090205460ff1681565b6101fd6102bc366004612772565b6107bb565b3480156102cd57600080fd5b506101fd6102dc36600461280e565b61129d565b3480156102ed57600080fd5b506101fd6102fc366004612750565b6112d1565b34801561030d57600080fd5b5061025a60075481565b34801561032357600080fd5b506101fd610332366004612835565b6112fb565b34801561034357600080fd5b50600454610357906001600160a01b031681565b6040516001600160a01b03909116815260200161023b565b34801561037b57600080fd5b506101fd61132e565b34801561039057600080fd5b506101fd61039f366004612835565b611342565b3480156103b057600080fd5b506103576103bf36600461280e565b600f602052600090815260409020546001600160a01b031681565b3480156103e657600080fd5b506000546001600160a01b0316610357565b34801561040457600080fd5b5061025a60025481565b34801561041a57600080fd5b506101fd610429366004612835565b61139c565b34801561043a57600080fd5b50600354610357906001600160a01b031681565b34801561045a57600080fd5b50600654610357906001600160a01b031681565b34801561047a57600080fd5b50600554610357906001600160a01b031681565b34801561049a57600080fd5b5061022f6104a9366004612750565b600e6020526000908152604090205460ff1681565b3480156104ca57600080fd5b506101fd6104d9366004612835565b6113cf565b3480156104ea57600080fd5b506101fd6104f9366004612750565b611429565b34801561050a57600080fd5b5061025a61051936600461286c565b611453565b34801561052a57600080fd5b506101fd61053936600461289f565b61155d565b34801561054a57600080fd5b506101fd610559366004612750565b6115ba565b34801561056a57600080fd5b506101fd610579366004612750565b61160b565b34801561058a57600080fd5b5061025a600a5481565b61025a6105a23660046128e1565b611684565b3480156105b357600080fd5b5061022f6105c2366004612750565b600c6020526000908152604090205460ff1681565b6002600154036106025760405162461bcd60e51b81526004016105f990612a25565b60405180910390fd5b6002600155604051630144352560e71b81526001600160a01b038c169063a21a928090610641908d908d908d908d908d908d908d908d90600401612afd565b600060405180830381600087803b15801561065b57600080fd5b505af115801561066f573d6000803e3d6000fd5b5050506001600160a01b038216905061072b576000826001600160a01b03164760405160006040518083038185875af1925050503d80600081146106cf576040519150601f19603f3d011682016040523d82523d6000602084013e6106d4565b606091505b50509050806107255760405162461bcd60e51b815260206004820152601a60248201527f427269646765506c75733a20726566756e64206362726469676500000000000060448201526064016105f9565b506107aa565b6040516370a0823160e01b81523060048201526107aa9083906001600160a01b038416906370a0823190602401602060405180830381865afa158015610775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107999190612bd1565b6001600160a01b0384169190611ec2565b505060018055505050505050505050565b6002600154036107dd5760405162461bcd60e51b81526004016105f990612a25565b6002600155606084013560006107f96040870160208801612750565b6001600160a01b03161461093a576108176040860160208701612750565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190612bd1565b90506108ae3330606088013561089d60408a0160208b01612750565b6001600160a01b0316929190611f2a565b806108bf6040870160208801612750565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109299190612bd1565b6109339190612c00565b9050610973565b8461014001356002036109735760006109636109596020880188612750565b8760e00135611453565b905061096f8183612c00565b9150505b336000908152600b602052604090205460ff16158015610997575061014085013515155b80156109a95750846101400135600414155b156109ca576109c76109c16040870160208801612750565b82611f68565b90505b60006109d68580612c13565b90501115610bc95760006109f06040870160208801612750565b9050600080610a056060890160408a01612750565b6001600160a01b031614610a2857610a236060880160408901612750565b610a35565b6003546001600160a01b03165b90506001600160a01b038216610aa95760035460408051630d0e30db60e41b815290516001600160a01b039092169350839163d0e30db0918691600480830192600092919082900301818588803b158015610a8f57600080fd5b505af1158015610aa3573d6000803e3d6000fd5b50505050505b600554610ac19083906001600160a01b0316856120cf565b6005546001600160a01b031663c42ce32a83858430610ae08c80612c13565b6040518763ffffffff1660e01b8152600401610b0196959493929190612cc5565b60408051808303816000875af1158015610b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b439190612e91565b935060009050610b596060890160408a01612750565b6001600160a01b031603610bc657600354604051632e1a7d4d60e01b8152600481018590526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610bad57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b505050505b50505b846101400135600003610d13576000610be86060870160408801612750565b6001600160a01b031614610c5557600354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610c3c57600080fd5b505af1158015610c50573d6000803e3d6000fd5b505050505b610c626020860186612750565b6001600160a01b031663df791e5082610c8160a0890160808a01612750565b610c9160e08a0160c08b01612750565b60405160e085811b6001600160e01b03191682526001600160a01b03938416600483015291909216602483015289013560448201526064015b60206040518083038185885af1158015610ce8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d0d9190612bd1565b506111af565b610d39610d266060870160408801612750565b610d336020880188612750565b836120cf565b846101400135600103610e155742610d546020870187612750565b6001600160a01b031663a5977fbb610d7260a0890160808a01612750565b610d8260608a0160408b01612750565b60405160e084811b6001600160e01b03191682526001600160a01b0393841660048301529190921660248301526044820186905289013567ffffffffffffffff908116606483015284166084820152620f424060a482015260c401600060405180830381600087803b158015610df757600080fd5b505af1158015610e0b573d6000803e3d6000fd5b50505050506111af565b846101400135600203610f77576000610e346109596020880188612750565b9050610e436020870187612750565b6001600160a01b0316639fbf10fc828860e0013587876000818110610e6a57610e6a612eb5565b9050602002013588886001818110610e8457610e84612eb5565b90506020020135338860006040518060600160405280600081526020016000815260200160405180604001604052806002815260200161060f60f31b8152508152508f6080016020810190610ed99190612750565b604051602001610f01919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181526020830182526000835290516001600160e01b031960e08d901b168152610f3f999897969594939290600401612f44565b6000604051808303818588803b158015610f5857600080fd5b505af1158015610f6c573d6000803e3d6000fd5b5050505050506111af565b84610140013560040361100557610f916020860186612750565b6001600160a01b0316638a0ccd566000610fb160a0890160808a01612750565b84610fc260e08b0160c08c01612750565b60405160e086811b6001600160e01b03191682526001600160a01b0394851660048301526024820193909352921660448301528901356064820152608401610cca565b8461014001356005148061101f5750606485610140013510155b156111af57600e60006110356020880188612750565b6001600160a01b0316815260208101919091526040016000205460ff1661109e5760405162461bcd60e51b815260206004820152601960248201527f427269646765506c75733a202177726f6e67206272696467650000000000000060448201526064016105f9565b6101408501356000908152600f60205260409020546001600160a01b0316156110f8576110f86110d46060870160408801612750565b6101408701356000908152600f60205260409020546001600160a01b0316836120cf565b60006111076020870187612750565b6001600160a01b03168484600081811061112357611123612eb5565b905060200201358780610180019061113b9190612fc1565b604051611149929190613008565b60006040518083038185875af1925050503d8060008114611186576040519150601f19603f3d011682016040523d82523d6000602084013e61118b565b606091505b50509050806111ad576040516341af4c7f60e11b815260040160405180910390fd5b505b7f192fb59228259e289b6e28112a97b7cd53c3bec85c650d44bc931c8c16b667c36111e060a0870160808801612750565b6111f060c0880160a08901612750565b60025461120360608a0160408b01612750565b8560e08b013561121b6101208d016101008e01612750565b61122d6101408e016101208f01612750565b604080516001600160a01b03998a16815297891660208901528701959095529286166060860152608085019190915260a0840152831660c083015290911660e0820152610140878101356101008301526101608801356101208301520160405180910390a1505060018055505050565b336000908152600c602052604090205460ff166112cc5760405162461bcd60e51b81526004016105f990613018565b600755565b6112d961218b565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b61130361218b565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b61133661218b565b61134060006121e5565b565b336000908152600c602052604090205460ff166113715760405162461bcd60e51b81526004016105f990613018565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6113a461218b565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b336000908152600c602052604090205460ff166113fe5760405162461bcd60e51b81526004016105f990613018565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b61143161218b565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600080836001600160a01b0316630a51236984600160405180604001604052806002815260200161060f60f31b81525060405180604001604052806002815260200161060f60f31b8152506040518060600160405280600081526020016000815260200160405180604001604052806002815260200161060f60f31b8152508152506040518663ffffffff1660e01b81526004016114f5959493929190613046565b6040805180830381865afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115359190612e91565b509050600a5460095482611549919061309e565b61155391906130b5565b9150505b92915050565b336000908152600c602052604090205460ff1661158c5760405162461bcd60e51b81526004016105f990613018565b6000918252600f602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b336000908152600c602052604090205460ff166115e95760405162461bcd60e51b81526004016105f990613018565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b61161361218b565b6001600160a01b0381166116785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f9565b611681816121e5565b50565b336000908152600d602052604081205460ff166116db5760405162461bcd60e51b8152602060048201526015602482015274213934b233b2a8363ab99d1010b7b832b930ba37b960591b60448201526064016105f9565b6002600154036116fd5760405162461bcd60e51b81526004016105f990612a25565b600260015583158061170f5750836004145b156118f057886001600160a01b031663a49fdb4930878560008151811061173857611738612eb5565b60200260200101518660018151811061175357611753612eb5565b60200260200101518760028151811061176e5761176e612eb5565b60209081029190910101516040516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482015260a4016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fd9190612bd1565b945060008260028151811061181457611814612eb5565b602002602001015111156118f0576000336001600160a01b03168360028151811061184157611841612eb5565b602002602001015160405160006040518083038185875af1925050503d8060008114611889576040519150601f19603f3d011682016040523d82523d6000602084013e61188e565b606091505b50509050806118ee5760405162461bcd60e51b815260206004820152602660248201527f427269646765506c75733a204661696c656420726566756e64206f65707261746044820152656f722066656560d01b60648201526084016105f9565b505b60008260038151811061190557611905612eb5565b60200260200101511115611bcc578160038151811061192657611926612eb5565b6020026020010151856119399190612c00565b9450600061194a60208501856130d7565b6119549080612c13565b90501115611a7c5761199687600560009054906101000a90046001600160a01b03168460038151811061198957611989612eb5565b60200260200101516120cf565b60055482516001600160a01b039091169063c42ce32a908990859060039081106119c2576119c2612eb5565b60209081029190910101516003546001600160a01b0316308860016020028101906119ed91906130d7565b6119f79080612c13565b6040518763ffffffff1660e01b8152600401611a1896959493929190612cc5565b60408051808303816000875af1158015611a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5a9190612e91565b905082600381518110611a6f57611a6f612eb5565b6020026020010181815250505b6001600160a01b03871615611b0d576003805483516001600160a01b0390911691632e1a7d4d918591908110611ab457611ab4612eb5565b60200260200101516040518263ffffffff1660e01b8152600401611ada91815260200190565b600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b505050505b6000336001600160a01b031683600381518110611b2c57611b2c612eb5565b602002602001015160405160006040518083038185875af1925050503d8060008114611b74576040519150601f19603f3d011682016040523d82523d6000602084013e611b79565b606091505b5050905080611bca5760405162461bcd60e51b815260206004820152601f60248201527f427269646765506c75733a204661696c6564206f70657261746f72206665650060448201526064016105f9565b505b6000611bd884806130d7565b611be29080612c13565b90501115611d2d578660006001600160a01b03881615611c025787611c0f565b6003546001600160a01b03165b90506001600160a01b038216611c835760035460408051630d0e30db60e41b815290516001600160a01b039092169350839163d0e30db0918a91600480830192600092919082900301818588803b158015611c6957600080fd5b505af1158015611c7d573d6000803e3d6000fd5b50505050505b600554611c9b9083906001600160a01b0316896120cf565b6005546001600160a01b031663c42ce32a83898430611cba8b806130d7565b611cc49080612c13565b6040518763ffffffff1660e01b8152600401611ce596959493929190612cc5565b60408051808303816000875af1158015611d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d279190612e91565b97505050505b6001600160a01b038616611e52576001600160a01b03871615611da957600354604051632e1a7d4d60e01b8152600481018790526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611d9057600080fd5b505af1158015611da4573d6000803e3d6000fd5b505050505b6000886001600160a01b03168660405160006040518083038185875af1925050503d8060008114611df6576040519150601f19603f3d011682016040523d82523d6000602084013e611dfb565b606091505b5050905080611e4c5760405162461bcd60e51b815260206004820152601960248201527f427269646765506c75733a204661696c65642072656465656d0000000000000060448201526064016105f9565b50611e66565b611e666001600160a01b0387168987611ec2565b604080516001600160a01b03808b168252881660208201529081018690527f7ab32d8a8e636b699dc3a5d925cc5c4f3e21cbed45013025d8093cbd730895f99060600160405180910390a1505060018055509095945050505050565b6040516001600160a01b038316602482015260448101829052611f2590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612235565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611f629085906323b872dd60e01b90608401611eee565b50505050565b600081156120c657600060085460075484611f83919061309e565b611f8d91906130b5565b905080156120b4576001600160a01b03841661204c576004546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611ff0576040519150601f19603f3d011682016040523d82523d6000602084013e611ff5565b606091505b50509050806120465760405162461bcd60e51b815260206004820152601a60248201527f427269646765506c75733a204661696c6564206375742066656500000000000060448201526064016105f9565b50612066565b600454612066906001600160a01b03868116911683611ec2565b600454604080516001600160a01b0387811682526020820185905290921682820152517f1c43309dc80f2b318f2f53e1ef233ca88699fed61cfa9100027b05fb8cbf9b4c9181900360600190a15b6120be8184612c00565b915050611557565b50600092915050565b6001600160a01b03831615611f2557604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561212e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121529190612bd1565b905081811015611f62578015612177576121776001600160a01b038516846000612307565b611f626001600160a01b0385168484612307565b6000546001600160a01b031633146113405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061228a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661241c9092919063ffffffff16565b805190915015611f2557808060200190518101906122a891906130f7565b611f255760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105f9565b8015806123815750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561235b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237f9190612bd1565b155b6123ec5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016105f9565b6040516001600160a01b038316602482015260448101829052611f2590849063095ea7b360e01b90606401611eee565b606061242b8484600085612433565b949350505050565b6060824710156124945760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105f9565b600080866001600160a01b031685876040516124b09190613114565b60006040518083038185875af1925050503d80600081146124ed576040519150601f19603f3d011682016040523d82523d6000602084013e6124f2565b606091505b50915091506125038783838761250e565b979650505050505050565b6060831561257d578251600003612576576001600160a01b0385163b6125765760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105f9565b508161242b565b61242b83838151156125925781518083602001fd5b8060405162461bcd60e51b81526004016105f99190613126565b80356001600160a01b03811681146125c357600080fd5b919050565b60008083601f8401126125da57600080fd5b50813567ffffffffffffffff8111156125f257600080fd5b60208301915083602082850101111561260a57600080fd5b9250929050565b60008083601f84011261262357600080fd5b50813567ffffffffffffffff81111561263b57600080fd5b6020830191508360208260051b850101111561260a57600080fd5b600080600080600080600080600080600060e08c8e03121561267757600080fd5b6126808c6125ac565b9a5067ffffffffffffffff8060208e0135111561269c57600080fd5b6126ac8e60208f01358f016125c8565b909b50995060408d01358110156126c257600080fd5b6126d28e60408f01358f01612611565b909950975060608d01358110156126e857600080fd5b6126f88e60608f01358f01612611565b909750955060808d013581101561270e57600080fd5b5061271f8d60808e01358e01612611565b909450925061273060a08d016125ac565b915061273e60c08d016125ac565b90509295989b509295989b9093969950565b60006020828403121561276257600080fd5b61276b826125ac565b9392505050565b6000806000806060858703121561278857600080fd5b843567ffffffffffffffff808211156127a057600080fd5b908601906101a082890312156127b557600080fd5b909450602086013590808211156127cb57600080fd5b90860190602082890312156127df57600080fd5b909350604086013590808211156127f557600080fd5b5061280287828801612611565b95989497509550505050565b60006020828403121561282057600080fd5b5035919050565b801515811461168157600080fd5b6000806040838503121561284857600080fd5b612851836125ac565b9150602083013561286181612827565b809150509250929050565b6000806040838503121561287f57600080fd5b612888836125ac565b9150602083013561ffff8116811461286157600080fd5b600080604083850312156128b257600080fd5b823591506128c2602084016125ac565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600080610100898b0312156128fe57600080fd5b612907896125ac565b97506020612916818b016125ac565b975061292460408b016125ac565b965061293260608b016125ac565b955060808a0135945060a08a0135935060c08a013567ffffffffffffffff8082111561295d57600080fd5b818c0191508c60408301111561297257600080fd5b90935060e08b0135908082111561298857600080fd5b818c0191508c601f83011261299c57600080fd5b8135818111156129ae576129ae6128cb565b8060051b604051601f19603f830116810181811085821117156129d3576129d36128cb565b60405291825284820192508381018501918f8311156129f157600080fd5b938501935b82851015612a0f578435845293850193928501926129f6565b8096505050505050509295985092959890939650565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e19843603018112612a9c57600080fd5b830160208101925035905067ffffffffffffffff811115612abc57600080fd5b80360382131561260a57600080fd5b81835260006001600160fb1b03831115612ae457600080fd5b8260051b80836020870137939093016020019392505050565b608081526000612b11608083018a8c612a5c565b602083820381850152818983528183019050818a60051b8401018b60005b8c811015612b6957858303601f19018452612b4a828f612a85565b612b55858284612a5c565b958701959450505090840190600101612b2f565b505085810360408701528881528201925088905060005b88811015612bac576001600160a01b03612b99836125ac565b1684529282019290820190600101612b80565b5050508281036060840152612bc2818587612acb565b9b9a5050505050505050505050565b600060208284031215612be357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561155757611557612bea565b6000808335601e19843603018112612c2a57600080fd5b83018035915067ffffffffffffffff821115612c4557600080fd5b6020019150600581901b360382131561260a57600080fd5b6000808335601e19843603018112612c7457600080fd5b830160208101925035905067ffffffffffffffff811115612c9457600080fd5b8060051b360382131561260a57600080fd5b60008235601e19833603018112612cbc57600080fd5b90910192915050565b6001600160a01b0387811682526020820187905285811660408301528416606082015260a0608082018190528101829052600060c080830190600585901b84010185835b86811015612e815785830360bf19018452612d248289612ca6565b612d2e8182612c5d565b9150602085526020850182815260408601905060408360051b8701018260005b85811015612e6657888303603f19018452612d698286612ca6565b612d738182612c5d565b9150602085526020850182815260408601905060408360051b8701018260005b85811015612e4b57888303603f190184523685900360be1901823512612db857600080fd5b612dc58235860180612a85565b60c08552612dd760c086018284612a5c565b91506001600160a01b039050612df2843588016020016125ac565b1660208501526001600160a01b03612e0f843588016040016125ac565b16604085015282358601606081810135908601526080808201359086015260a09081013594019390935260209384019390910190600101612d93565b50506020978801979096509490940193505050600101612d4e565b50506020978801979096509490940193505050600101612d09565b50909a9950505050505050505050565b60008060408385031215612ea457600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b60005b83811015612ee6578181015183820152602001612ece565b50506000910152565b60008151808452612f07816020860160208601612ecb565b601f01601f19169290920160200192915050565b805182526020810151602083015260006040820151606060408501526115536060850182612eef565b600061012061ffff8c1683528a602084015289604084015260018060a01b03891660608401528760808401528660a08401528060c0840152612f8881840187612f1b565b905082810360e0840152612f9c8186612eef565b9050828103610100840152612fb18185612eef565b9c9b505050505050505050505050565b6000808335601e19843603018112612fd857600080fd5b83018035915067ffffffffffffffff821115612ff357600080fd5b60200191503681900382131561260a57600080fd5b8183823760009101908152919050565b602080825260149082015273213934b233b2a8363ab99d1010b6b0b730b3b2b960611b604082015260600190565b61ffff8616815260ff8516602082015260a06040820152600061306c60a0830186612eef565b828103606084015261307e8186612eef565b905082810360808401526130928185612f1b565b98975050505050505050565b808202811582820484141761155757611557612bea565b6000826130d257634e487b7160e01b600052601260045260246000fd5b500490565b60008235601e198336030181126130ed57600080fd5b9190910192915050565b60006020828403121561310957600080fd5b815161276b81612827565b600082516130ed818460208701612ecb565b60208152600061276b6020830184612eef56fea264697066735822122082c9ae80c0210895cd580d36dc3e4f846ac9472175aae7734875a0042e03db4064736f6c63430008130033000000000000000000000000000000000000000000000000000000000000000100000000000000000000000091f6aa43c190e317e4d02698127aa7a629cf4b23000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000b65f101f856b9036ec5e0521501d4d0c5146eaf4
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80639a8a0592116100f7578063e5e3ef5711610095578063f2fde38b11610064578063f2fde38b1461055e578063f361b0001461057e578063f8d2750914610594578063fdff9b4d146105a757600080fd5b8063e5e3ef57146104de578063e6c789f5146104fe578063e9d27b261461051e578063f0f442601461053e57600080fd5b8063ba9045e9116100d1578063ba9045e91461044e578063c31c9c071461046e578063d8d1d5071461048e578063e3e715b4146104be57600080fd5b80639a8a0592146103f8578063a5e90eee1461040e578063ad5c46481461042e57600080fd5b8063412736571161016f578063715018a61161013e578063715018a61461036f57806371d215bd1461038457806375207f67146103a45780638da5cb5b146103da57600080fd5b806341273657146102e157806354cf2aeb14610301578063558a72971461031757806361d027b31461033757600080fd5b8063224cfb89116101ab578063224cfb89146102685780632df28dac1461027e57806331eac68f146102ae57806334e19907146102c157600080fd5b80631020396e146101dd57806313e7c9d8146101ff5780631b2107141461024457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612656565b6105d7565b005b34801561020b57600080fd5b5061022f61021a366004612750565b600d6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561025057600080fd5b5061025a60085481565b60405190815260200161023b565b34801561027457600080fd5b5061025a60095481565b34801561028a57600080fd5b5061022f610299366004612750565b600b6020526000908152604090205460ff1681565b6101fd6102bc366004612772565b6107bb565b3480156102cd57600080fd5b506101fd6102dc36600461280e565b61129d565b3480156102ed57600080fd5b506101fd6102fc366004612750565b6112d1565b34801561030d57600080fd5b5061025a60075481565b34801561032357600080fd5b506101fd610332366004612835565b6112fb565b34801561034357600080fd5b50600454610357906001600160a01b031681565b6040516001600160a01b03909116815260200161023b565b34801561037b57600080fd5b506101fd61132e565b34801561039057600080fd5b506101fd61039f366004612835565b611342565b3480156103b057600080fd5b506103576103bf36600461280e565b600f602052600090815260409020546001600160a01b031681565b3480156103e657600080fd5b506000546001600160a01b0316610357565b34801561040457600080fd5b5061025a60025481565b34801561041a57600080fd5b506101fd610429366004612835565b61139c565b34801561043a57600080fd5b50600354610357906001600160a01b031681565b34801561045a57600080fd5b50600654610357906001600160a01b031681565b34801561047a57600080fd5b50600554610357906001600160a01b031681565b34801561049a57600080fd5b5061022f6104a9366004612750565b600e6020526000908152604090205460ff1681565b3480156104ca57600080fd5b506101fd6104d9366004612835565b6113cf565b3480156104ea57600080fd5b506101fd6104f9366004612750565b611429565b34801561050a57600080fd5b5061025a61051936600461286c565b611453565b34801561052a57600080fd5b506101fd61053936600461289f565b61155d565b34801561054a57600080fd5b506101fd610559366004612750565b6115ba565b34801561056a57600080fd5b506101fd610579366004612750565b61160b565b34801561058a57600080fd5b5061025a600a5481565b61025a6105a23660046128e1565b611684565b3480156105b357600080fd5b5061022f6105c2366004612750565b600c6020526000908152604090205460ff1681565b6002600154036106025760405162461bcd60e51b81526004016105f990612a25565b60405180910390fd5b6002600155604051630144352560e71b81526001600160a01b038c169063a21a928090610641908d908d908d908d908d908d908d908d90600401612afd565b600060405180830381600087803b15801561065b57600080fd5b505af115801561066f573d6000803e3d6000fd5b5050506001600160a01b038216905061072b576000826001600160a01b03164760405160006040518083038185875af1925050503d80600081146106cf576040519150601f19603f3d011682016040523d82523d6000602084013e6106d4565b606091505b50509050806107255760405162461bcd60e51b815260206004820152601a60248201527f427269646765506c75733a20726566756e64206362726469676500000000000060448201526064016105f9565b506107aa565b6040516370a0823160e01b81523060048201526107aa9083906001600160a01b038416906370a0823190602401602060405180830381865afa158015610775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107999190612bd1565b6001600160a01b0384169190611ec2565b505060018055505050505050505050565b6002600154036107dd5760405162461bcd60e51b81526004016105f990612a25565b6002600155606084013560006107f96040870160208801612750565b6001600160a01b03161461093a576108176040860160208701612750565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190612bd1565b90506108ae3330606088013561089d60408a0160208b01612750565b6001600160a01b0316929190611f2a565b806108bf6040870160208801612750565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109299190612bd1565b6109339190612c00565b9050610973565b8461014001356002036109735760006109636109596020880188612750565b8760e00135611453565b905061096f8183612c00565b9150505b336000908152600b602052604090205460ff16158015610997575061014085013515155b80156109a95750846101400135600414155b156109ca576109c76109c16040870160208801612750565b82611f68565b90505b60006109d68580612c13565b90501115610bc95760006109f06040870160208801612750565b9050600080610a056060890160408a01612750565b6001600160a01b031614610a2857610a236060880160408901612750565b610a35565b6003546001600160a01b03165b90506001600160a01b038216610aa95760035460408051630d0e30db60e41b815290516001600160a01b039092169350839163d0e30db0918691600480830192600092919082900301818588803b158015610a8f57600080fd5b505af1158015610aa3573d6000803e3d6000fd5b50505050505b600554610ac19083906001600160a01b0316856120cf565b6005546001600160a01b031663c42ce32a83858430610ae08c80612c13565b6040518763ffffffff1660e01b8152600401610b0196959493929190612cc5565b60408051808303816000875af1158015610b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b439190612e91565b935060009050610b596060890160408a01612750565b6001600160a01b031603610bc657600354604051632e1a7d4d60e01b8152600481018590526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610bad57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b505050505b50505b846101400135600003610d13576000610be86060870160408801612750565b6001600160a01b031614610c5557600354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610c3c57600080fd5b505af1158015610c50573d6000803e3d6000fd5b505050505b610c626020860186612750565b6001600160a01b031663df791e5082610c8160a0890160808a01612750565b610c9160e08a0160c08b01612750565b60405160e085811b6001600160e01b03191682526001600160a01b03938416600483015291909216602483015289013560448201526064015b60206040518083038185885af1158015610ce8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d0d9190612bd1565b506111af565b610d39610d266060870160408801612750565b610d336020880188612750565b836120cf565b846101400135600103610e155742610d546020870187612750565b6001600160a01b031663a5977fbb610d7260a0890160808a01612750565b610d8260608a0160408b01612750565b60405160e084811b6001600160e01b03191682526001600160a01b0393841660048301529190921660248301526044820186905289013567ffffffffffffffff908116606483015284166084820152620f424060a482015260c401600060405180830381600087803b158015610df757600080fd5b505af1158015610e0b573d6000803e3d6000fd5b50505050506111af565b846101400135600203610f77576000610e346109596020880188612750565b9050610e436020870187612750565b6001600160a01b0316639fbf10fc828860e0013587876000818110610e6a57610e6a612eb5565b9050602002013588886001818110610e8457610e84612eb5565b90506020020135338860006040518060600160405280600081526020016000815260200160405180604001604052806002815260200161060f60f31b8152508152508f6080016020810190610ed99190612750565b604051602001610f01919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181526020830182526000835290516001600160e01b031960e08d901b168152610f3f999897969594939290600401612f44565b6000604051808303818588803b158015610f5857600080fd5b505af1158015610f6c573d6000803e3d6000fd5b5050505050506111af565b84610140013560040361100557610f916020860186612750565b6001600160a01b0316638a0ccd566000610fb160a0890160808a01612750565b84610fc260e08b0160c08c01612750565b60405160e086811b6001600160e01b03191682526001600160a01b0394851660048301526024820193909352921660448301528901356064820152608401610cca565b8461014001356005148061101f5750606485610140013510155b156111af57600e60006110356020880188612750565b6001600160a01b0316815260208101919091526040016000205460ff1661109e5760405162461bcd60e51b815260206004820152601960248201527f427269646765506c75733a202177726f6e67206272696467650000000000000060448201526064016105f9565b6101408501356000908152600f60205260409020546001600160a01b0316156110f8576110f86110d46060870160408801612750565b6101408701356000908152600f60205260409020546001600160a01b0316836120cf565b60006111076020870187612750565b6001600160a01b03168484600081811061112357611123612eb5565b905060200201358780610180019061113b9190612fc1565b604051611149929190613008565b60006040518083038185875af1925050503d8060008114611186576040519150601f19603f3d011682016040523d82523d6000602084013e61118b565b606091505b50509050806111ad576040516341af4c7f60e11b815260040160405180910390fd5b505b7f192fb59228259e289b6e28112a97b7cd53c3bec85c650d44bc931c8c16b667c36111e060a0870160808801612750565b6111f060c0880160a08901612750565b60025461120360608a0160408b01612750565b8560e08b013561121b6101208d016101008e01612750565b61122d6101408e016101208f01612750565b604080516001600160a01b03998a16815297891660208901528701959095529286166060860152608085019190915260a0840152831660c083015290911660e0820152610140878101356101008301526101608801356101208301520160405180910390a1505060018055505050565b336000908152600c602052604090205460ff166112cc5760405162461bcd60e51b81526004016105f990613018565b600755565b6112d961218b565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b61130361218b565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b61133661218b565b61134060006121e5565b565b336000908152600c602052604090205460ff166113715760405162461bcd60e51b81526004016105f990613018565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6113a461218b565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b336000908152600c602052604090205460ff166113fe5760405162461bcd60e51b81526004016105f990613018565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b61143161218b565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600080836001600160a01b0316630a51236984600160405180604001604052806002815260200161060f60f31b81525060405180604001604052806002815260200161060f60f31b8152506040518060600160405280600081526020016000815260200160405180604001604052806002815260200161060f60f31b8152508152506040518663ffffffff1660e01b81526004016114f5959493929190613046565b6040805180830381865afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115359190612e91565b509050600a5460095482611549919061309e565b61155391906130b5565b9150505b92915050565b336000908152600c602052604090205460ff1661158c5760405162461bcd60e51b81526004016105f990613018565b6000918252600f602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b336000908152600c602052604090205460ff166115e95760405162461bcd60e51b81526004016105f990613018565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b61161361218b565b6001600160a01b0381166116785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f9565b611681816121e5565b50565b336000908152600d602052604081205460ff166116db5760405162461bcd60e51b8152602060048201526015602482015274213934b233b2a8363ab99d1010b7b832b930ba37b960591b60448201526064016105f9565b6002600154036116fd5760405162461bcd60e51b81526004016105f990612a25565b600260015583158061170f5750836004145b156118f057886001600160a01b031663a49fdb4930878560008151811061173857611738612eb5565b60200260200101518660018151811061175357611753612eb5565b60200260200101518760028151811061176e5761176e612eb5565b60209081029190910101516040516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482015260a4016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fd9190612bd1565b945060008260028151811061181457611814612eb5565b602002602001015111156118f0576000336001600160a01b03168360028151811061184157611841612eb5565b602002602001015160405160006040518083038185875af1925050503d8060008114611889576040519150601f19603f3d011682016040523d82523d6000602084013e61188e565b606091505b50509050806118ee5760405162461bcd60e51b815260206004820152602660248201527f427269646765506c75733a204661696c656420726566756e64206f65707261746044820152656f722066656560d01b60648201526084016105f9565b505b60008260038151811061190557611905612eb5565b60200260200101511115611bcc578160038151811061192657611926612eb5565b6020026020010151856119399190612c00565b9450600061194a60208501856130d7565b6119549080612c13565b90501115611a7c5761199687600560009054906101000a90046001600160a01b03168460038151811061198957611989612eb5565b60200260200101516120cf565b60055482516001600160a01b039091169063c42ce32a908990859060039081106119c2576119c2612eb5565b60209081029190910101516003546001600160a01b0316308860016020028101906119ed91906130d7565b6119f79080612c13565b6040518763ffffffff1660e01b8152600401611a1896959493929190612cc5565b60408051808303816000875af1158015611a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5a9190612e91565b905082600381518110611a6f57611a6f612eb5565b6020026020010181815250505b6001600160a01b03871615611b0d576003805483516001600160a01b0390911691632e1a7d4d918591908110611ab457611ab4612eb5565b60200260200101516040518263ffffffff1660e01b8152600401611ada91815260200190565b600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b505050505b6000336001600160a01b031683600381518110611b2c57611b2c612eb5565b602002602001015160405160006040518083038185875af1925050503d8060008114611b74576040519150601f19603f3d011682016040523d82523d6000602084013e611b79565b606091505b5050905080611bca5760405162461bcd60e51b815260206004820152601f60248201527f427269646765506c75733a204661696c6564206f70657261746f72206665650060448201526064016105f9565b505b6000611bd884806130d7565b611be29080612c13565b90501115611d2d578660006001600160a01b03881615611c025787611c0f565b6003546001600160a01b03165b90506001600160a01b038216611c835760035460408051630d0e30db60e41b815290516001600160a01b039092169350839163d0e30db0918a91600480830192600092919082900301818588803b158015611c6957600080fd5b505af1158015611c7d573d6000803e3d6000fd5b50505050505b600554611c9b9083906001600160a01b0316896120cf565b6005546001600160a01b031663c42ce32a83898430611cba8b806130d7565b611cc49080612c13565b6040518763ffffffff1660e01b8152600401611ce596959493929190612cc5565b60408051808303816000875af1158015611d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d279190612e91565b97505050505b6001600160a01b038616611e52576001600160a01b03871615611da957600354604051632e1a7d4d60e01b8152600481018790526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611d9057600080fd5b505af1158015611da4573d6000803e3d6000fd5b505050505b6000886001600160a01b03168660405160006040518083038185875af1925050503d8060008114611df6576040519150601f19603f3d011682016040523d82523d6000602084013e611dfb565b606091505b5050905080611e4c5760405162461bcd60e51b815260206004820152601960248201527f427269646765506c75733a204661696c65642072656465656d0000000000000060448201526064016105f9565b50611e66565b611e666001600160a01b0387168987611ec2565b604080516001600160a01b03808b168252881660208201529081018690527f7ab32d8a8e636b699dc3a5d925cc5c4f3e21cbed45013025d8093cbd730895f99060600160405180910390a1505060018055509095945050505050565b6040516001600160a01b038316602482015260448101829052611f2590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612235565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611f629085906323b872dd60e01b90608401611eee565b50505050565b600081156120c657600060085460075484611f83919061309e565b611f8d91906130b5565b905080156120b4576001600160a01b03841661204c576004546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611ff0576040519150601f19603f3d011682016040523d82523d6000602084013e611ff5565b606091505b50509050806120465760405162461bcd60e51b815260206004820152601a60248201527f427269646765506c75733a204661696c6564206375742066656500000000000060448201526064016105f9565b50612066565b600454612066906001600160a01b03868116911683611ec2565b600454604080516001600160a01b0387811682526020820185905290921682820152517f1c43309dc80f2b318f2f53e1ef233ca88699fed61cfa9100027b05fb8cbf9b4c9181900360600190a15b6120be8184612c00565b915050611557565b50600092915050565b6001600160a01b03831615611f2557604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561212e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121529190612bd1565b905081811015611f62578015612177576121776001600160a01b038516846000612307565b611f626001600160a01b0385168484612307565b6000546001600160a01b031633146113405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061228a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661241c9092919063ffffffff16565b805190915015611f2557808060200190518101906122a891906130f7565b611f255760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105f9565b8015806123815750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561235b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237f9190612bd1565b155b6123ec5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016105f9565b6040516001600160a01b038316602482015260448101829052611f2590849063095ea7b360e01b90606401611eee565b606061242b8484600085612433565b949350505050565b6060824710156124945760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105f9565b600080866001600160a01b031685876040516124b09190613114565b60006040518083038185875af1925050503d80600081146124ed576040519150601f19603f3d011682016040523d82523d6000602084013e6124f2565b606091505b50915091506125038783838761250e565b979650505050505050565b6060831561257d578251600003612576576001600160a01b0385163b6125765760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105f9565b508161242b565b61242b83838151156125925781518083602001fd5b8060405162461bcd60e51b81526004016105f99190613126565b80356001600160a01b03811681146125c357600080fd5b919050565b60008083601f8401126125da57600080fd5b50813567ffffffffffffffff8111156125f257600080fd5b60208301915083602082850101111561260a57600080fd5b9250929050565b60008083601f84011261262357600080fd5b50813567ffffffffffffffff81111561263b57600080fd5b6020830191508360208260051b850101111561260a57600080fd5b600080600080600080600080600080600060e08c8e03121561267757600080fd5b6126808c6125ac565b9a5067ffffffffffffffff8060208e0135111561269c57600080fd5b6126ac8e60208f01358f016125c8565b909b50995060408d01358110156126c257600080fd5b6126d28e60408f01358f01612611565b909950975060608d01358110156126e857600080fd5b6126f88e60608f01358f01612611565b909750955060808d013581101561270e57600080fd5b5061271f8d60808e01358e01612611565b909450925061273060a08d016125ac565b915061273e60c08d016125ac565b90509295989b509295989b9093969950565b60006020828403121561276257600080fd5b61276b826125ac565b9392505050565b6000806000806060858703121561278857600080fd5b843567ffffffffffffffff808211156127a057600080fd5b908601906101a082890312156127b557600080fd5b909450602086013590808211156127cb57600080fd5b90860190602082890312156127df57600080fd5b909350604086013590808211156127f557600080fd5b5061280287828801612611565b95989497509550505050565b60006020828403121561282057600080fd5b5035919050565b801515811461168157600080fd5b6000806040838503121561284857600080fd5b612851836125ac565b9150602083013561286181612827565b809150509250929050565b6000806040838503121561287f57600080fd5b612888836125ac565b9150602083013561ffff8116811461286157600080fd5b600080604083850312156128b257600080fd5b823591506128c2602084016125ac565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600080610100898b0312156128fe57600080fd5b612907896125ac565b97506020612916818b016125ac565b975061292460408b016125ac565b965061293260608b016125ac565b955060808a0135945060a08a0135935060c08a013567ffffffffffffffff8082111561295d57600080fd5b818c0191508c60408301111561297257600080fd5b90935060e08b0135908082111561298857600080fd5b818c0191508c601f83011261299c57600080fd5b8135818111156129ae576129ae6128cb565b8060051b604051601f19603f830116810181811085821117156129d3576129d36128cb565b60405291825284820192508381018501918f8311156129f157600080fd5b938501935b82851015612a0f578435845293850193928501926129f6565b8096505050505050509295985092959890939650565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e19843603018112612a9c57600080fd5b830160208101925035905067ffffffffffffffff811115612abc57600080fd5b80360382131561260a57600080fd5b81835260006001600160fb1b03831115612ae457600080fd5b8260051b80836020870137939093016020019392505050565b608081526000612b11608083018a8c612a5c565b602083820381850152818983528183019050818a60051b8401018b60005b8c811015612b6957858303601f19018452612b4a828f612a85565b612b55858284612a5c565b958701959450505090840190600101612b2f565b505085810360408701528881528201925088905060005b88811015612bac576001600160a01b03612b99836125ac565b1684529282019290820190600101612b80565b5050508281036060840152612bc2818587612acb565b9b9a5050505050505050505050565b600060208284031215612be357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561155757611557612bea565b6000808335601e19843603018112612c2a57600080fd5b83018035915067ffffffffffffffff821115612c4557600080fd5b6020019150600581901b360382131561260a57600080fd5b6000808335601e19843603018112612c7457600080fd5b830160208101925035905067ffffffffffffffff811115612c9457600080fd5b8060051b360382131561260a57600080fd5b60008235601e19833603018112612cbc57600080fd5b90910192915050565b6001600160a01b0387811682526020820187905285811660408301528416606082015260a0608082018190528101829052600060c080830190600585901b84010185835b86811015612e815785830360bf19018452612d248289612ca6565b612d2e8182612c5d565b9150602085526020850182815260408601905060408360051b8701018260005b85811015612e6657888303603f19018452612d698286612ca6565b612d738182612c5d565b9150602085526020850182815260408601905060408360051b8701018260005b85811015612e4b57888303603f190184523685900360be1901823512612db857600080fd5b612dc58235860180612a85565b60c08552612dd760c086018284612a5c565b91506001600160a01b039050612df2843588016020016125ac565b1660208501526001600160a01b03612e0f843588016040016125ac565b16604085015282358601606081810135908601526080808201359086015260a09081013594019390935260209384019390910190600101612d93565b50506020978801979096509490940193505050600101612d4e565b50506020978801979096509490940193505050600101612d09565b50909a9950505050505050505050565b60008060408385031215612ea457600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b60005b83811015612ee6578181015183820152602001612ece565b50506000910152565b60008151808452612f07816020860160208601612ecb565b601f01601f19169290920160200192915050565b805182526020810151602083015260006040820151606060408501526115536060850182612eef565b600061012061ffff8c1683528a602084015289604084015260018060a01b03891660608401528760808401528660a08401528060c0840152612f8881840187612f1b565b905082810360e0840152612f9c8186612eef565b9050828103610100840152612fb18185612eef565b9c9b505050505050505050505050565b6000808335601e19843603018112612fd857600080fd5b83018035915067ffffffffffffffff821115612ff357600080fd5b60200191503681900382131561260a57600080fd5b8183823760009101908152919050565b602080825260149082015273213934b233b2a8363ab99d1010b6b0b730b3b2b960611b604082015260600190565b61ffff8616815260ff8516602082015260a06040820152600061306c60a0830186612eef565b828103606084015261307e8186612eef565b905082810360808401526130928185612f1b565b98975050505050505050565b808202811582820484141761155757611557612bea565b6000826130d257634e487b7160e01b600052601260045260246000fd5b500490565b60008235601e198336030181126130ed57600080fd5b9190910192915050565b60006020828403121561310957600080fd5b815161276b81612827565b600082516130ed818460208701612ecb565b60208152600061276b6020830184612eef56fea264697066735822122082c9ae80c0210895cd580d36dc3e4f846ac9472175aae7734875a0042e03db4064736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000000100000000000000000000000091f6aa43c190e317e4d02698127aa7a629cf4b23000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000b65f101f856b9036ec5e0521501d4d0c5146eaf4
-----Decoded View---------------
Arg [0] : _chainId (uint256): 1
Arg [1] : _swapRouter (address): 0x91f6AA43c190E317E4D02698127aA7A629CF4b23
Arg [2] : _WETH (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [3] : _treasury (address): 0xB65F101f856b9036ec5E0521501d4D0C5146eAF4
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [1] : 00000000000000000000000091f6aa43c190e317e4d02698127aa7a629cf4b23
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [3] : 000000000000000000000000b65f101f856b9036ec5e0521501d4d0c5146eaf4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.