Overview
ETH Balance
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 294,033 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Remove Liquidity... | 13453901 | 2 days ago | IN | 0 ETH | 0.00002258 | ||||
Swap Exact Token... | 13449047 | 2 days ago | IN | 0 ETH | 0.0000061 | ||||
Remove Liquidity... | 13288508 | 10 days ago | IN | 0 ETH | 0.00001638 | ||||
Remove Liquidity... | 13265202 | 10 days ago | IN | 0 ETH | 0.00001249 | ||||
Remove Liquidity... | 13264145 | 11 days ago | IN | 0 ETH | 0.00001335 | ||||
Remove Liquidity... | 13245183 | 11 days ago | IN | 0 ETH | 0.00001475 | ||||
Remove Liquidity... | 13223560 | 12 days ago | IN | 0 ETH | 0.00001585 | ||||
Swap Exact Token... | 13152057 | 15 days ago | IN | 0 ETH | 0.00001548 | ||||
Swap Exact Token... | 13152049 | 15 days ago | IN | 0 ETH | 0.00001896 | ||||
Swap Exact Token... | 13151831 | 15 days ago | IN | 0 ETH | 0.00001878 | ||||
Swap Exact Token... | 13151402 | 15 days ago | IN | 0 ETH | 0.00002177 | ||||
Swap Exact Token... | 13150929 | 15 days ago | IN | 0 ETH | 0.00000914 | ||||
Swap Exact Token... | 13150862 | 15 days ago | IN | 0 ETH | 0.00000916 | ||||
Swap Exact Token... | 13150575 | 15 days ago | IN | 0 ETH | 0.00001045 | ||||
Swap Exact Token... | 13150489 | 15 days ago | IN | 0 ETH | 0.00001176 | ||||
Swap Exact Token... | 13150428 | 15 days ago | IN | 0 ETH | 0.0000088 | ||||
Swap Exact Token... | 13150345 | 15 days ago | IN | 0 ETH | 0.00001004 | ||||
Swap Exact Token... | 13150200 | 15 days ago | IN | 0 ETH | 0.00001169 | ||||
Swap Exact Token... | 13150134 | 15 days ago | IN | 0 ETH | 0.00000918 | ||||
Swap Exact Token... | 13150101 | 15 days ago | IN | 0 ETH | 0.00000932 | ||||
Swap Exact Token... | 13150043 | 15 days ago | IN | 0 ETH | 0.00000945 | ||||
Swap Exact Token... | 13150023 | 15 days ago | IN | 0 ETH | 0.00001156 | ||||
Swap Exact Token... | 13149881 | 15 days ago | IN | 0 ETH | 0.00001127 | ||||
Swap Exact Token... | 13149867 | 15 days ago | IN | 0 ETH | 0.00000885 | ||||
Swap Exact Token... | 13149862 | 15 days ago | IN | 0 ETH | 0.00000942 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
13453901 | 2 days ago | 0.00174708 ETH | ||||
13453901 | 2 days ago | 0.00174708 ETH | ||||
13449047 | 2 days ago | 0.00556001 ETH | ||||
13449047 | 2 days ago | 0.00556001 ETH | ||||
13288508 | 10 days ago | 0.00027747 ETH | ||||
13288508 | 10 days ago | 0.00027747 ETH | ||||
13265202 | 10 days ago | 0.00035199 ETH | ||||
13265202 | 10 days ago | 0.00035199 ETH | ||||
13264145 | 11 days ago | 0.00047555 ETH | ||||
13264145 | 11 days ago | 0.00047555 ETH | ||||
13245183 | 11 days ago | 0.00006476 ETH | ||||
13245183 | 11 days ago | 0.00006476 ETH | ||||
13223560 | 12 days ago | 0.00556586 ETH | ||||
13223560 | 12 days ago | 0.00556586 ETH | ||||
13152057 | 15 days ago | 0.00564072 ETH | ||||
13152057 | 15 days ago | 0.00564072 ETH | ||||
13152049 | 15 days ago | 0.00875571 ETH | ||||
13152049 | 15 days ago | 0.00875571 ETH | ||||
13151831 | 15 days ago | 0.00827193 ETH | ||||
13151831 | 15 days ago | 0.00827193 ETH | ||||
13151402 | 15 days ago | 0.00697176 ETH | ||||
13151402 | 15 days ago | 0.00697176 ETH | ||||
13150929 | 15 days ago | 0.00451608 ETH | ||||
13150929 | 15 days ago | 0.00451608 ETH | ||||
13150862 | 15 days ago | 0.00592048 ETH |
Loading...
Loading
Contract Name:
ZebraRouter
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity >=0.6.0; import "@openzeppelin/contracts/access/Ownable.sol"; import "../library/SafeMath.sol"; import "../interface/IERC20.sol"; import "../interface/IZebraFactory.sol"; import "../interface/IZebraPair.sol"; import "../interface/IZebraRouter.sol"; import "../interface/IWETH.sol"; import "../interface/ISwapMining.sol"; contract ZebraRouter is IZebraRouter, Ownable { using SafeMath for uint256; address public immutable override factory; address public immutable override WETH; address public override swapMining; modifier ensure(uint deadline) { require(deadline >= block.timestamp, 'ZebraRouter: EXPIRED'); _; } constructor(address _factory, address _WETH) public { factory = _factory; WETH = _WETH; } receive() external payable { assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract } function pairFor(address tokenA, address tokenB) public view returns (address pair){ pair = IZebraFactory(factory).pairFor(tokenA, tokenB); } function setSwapMining(address _swapMininng) public onlyOwner { swapMining = _swapMininng; } // **** ADD LIQUIDITY **** function _addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin ) internal virtual returns (uint amountA, uint amountB) { // create the pair if it doesn't exist yet if (IZebraFactory(factory).getPair(tokenA, tokenB) == address(0)) { IZebraFactory(factory).createPair(tokenA, tokenB); } (uint reserveA, uint reserveB) = IZebraFactory(factory).getReserves(tokenA, tokenB); if (reserveA == 0 && reserveB == 0) { (amountA, amountB) = (amountADesired, amountBDesired); } else { uint amountBOptimal = IZebraFactory(factory).quote(amountADesired, reserveA, reserveB); if (amountBOptimal <= amountBDesired) { require(amountBOptimal >= amountBMin, 'ZebraRouter: INSUFFICIENT_B_AMOUNT'); (amountA, amountB) = (amountADesired, amountBOptimal); } else { uint amountAOptimal = IZebraFactory(factory).quote(amountBDesired, reserveB, reserveA); assert(amountAOptimal <= amountADesired); require(amountAOptimal >= amountAMin, 'ZebraRouter: INSUFFICIENT_A_AMOUNT'); (amountA, amountB) = (amountAOptimal, amountBDesired); } } } function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) { (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin); address pair = pairFor(tokenA, tokenB); TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA); TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB); liquidity = IZebraPair(pair).mint(to); } function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) { (amountToken, amountETH) = _addLiquidity( token, WETH, amountTokenDesired, msg.value, amountTokenMin, amountETHMin ); address pair = pairFor(token, WETH); TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken); IWETH(WETH).deposit{value : amountETH}(); assert(IWETH(WETH).transfer(pair, amountETH)); liquidity = IZebraPair(pair).mint(to); // refund dust eth, if any if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH); } // **** REMOVE LIQUIDITY **** function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) { address pair = pairFor(tokenA, tokenB); IZebraPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair (uint amount0, uint amount1) = IZebraPair(pair).burn(to); (address token0,) = IZebraFactory(factory).sortTokens(tokenA, tokenB); (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0); require(amountA >= amountAMin, 'ZebraRouter: INSUFFICIENT_A_AMOUNT'); require(amountB >= amountBMin, 'ZebraRouter: INSUFFICIENT_B_AMOUNT'); } function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) { (amountToken, amountETH) = removeLiquidity( token, WETH, liquidity, amountTokenMin, amountETHMin, address(this), deadline ); TransferHelper.safeTransfer(token, to, amountToken); IWETH(WETH).withdraw(amountETH); TransferHelper.safeTransferETH(to, amountETH); } function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint amountA, uint amountB) { address pair = pairFor(tokenA, tokenB); uint value = approveMax ? uint(-1) : liquidity; IZebraPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline); } function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint amountToken, uint amountETH) { address pair = pairFor(token, WETH); uint value = approveMax ? uint(-1) : liquidity; IZebraPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline); } // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) **** function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) public virtual override ensure(deadline) returns (uint amountETH) { (, amountETH) = removeLiquidity( token, WETH, liquidity, amountTokenMin, amountETHMin, address(this), deadline ); TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this))); IWETH(WETH).withdraw(amountETH); TransferHelper.safeTransferETH(to, amountETH); } function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint amountETH) { address pair = pairFor(token, WETH); uint value = approveMax ? uint(-1) : liquidity; IZebraPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); amountETH = removeLiquidityETHSupportingFeeOnTransferTokens( token, liquidity, amountTokenMin, amountETHMin, to, deadline ); } // **** SWAP **** // requires the initial amount to have already been sent to the first pair function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual { for (uint i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = IZebraFactory(factory).sortTokens(input, output); uint amountOut = amounts[i + 1]; if (swapMining != address(0)) { ISwapMining(swapMining).swap(msg.sender, input, output, amountOut); } (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0)); address to = i < path.length - 2 ? pairFor(output, path[i + 2]) : _to; IZebraPair(pairFor(input, output)).swap( amount0Out, amount1Out, to, new bytes(0) ); } } function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external virtual override ensure(deadline) returns (uint[] memory amounts) { amounts = IZebraFactory(factory).getAmountsOut(amountIn, path); require(amounts[amounts.length - 1] >= amountOutMin, 'ZebraRouter: INSUFFICIENT_OUTPUT_AMOUNT'); TransferHelper.safeTransferFrom( path[0], msg.sender, pairFor(path[0], path[1]), amounts[0] ); _swap(amounts, path, to); } function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external virtual override ensure(deadline) returns (uint[] memory amounts) { amounts = IZebraFactory(factory).getAmountsIn(amountOut, path); require(amounts[0] <= amountInMax, 'ZebraRouter: EXCESSIVE_INPUT_AMOUNT'); TransferHelper.safeTransferFrom( path[0], msg.sender, pairFor(path[0], path[1]), amounts[0] ); _swap(amounts, path, to); } function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external virtual override payable ensure(deadline) returns (uint[] memory amounts) { require(path[0] == WETH, 'ZebraRouter: INVALID_PATH'); amounts = IZebraFactory(factory).getAmountsOut(msg.value, path); require(amounts[amounts.length - 1] >= amountOutMin, 'ZebraRouter: INSUFFICIENT_OUTPUT_AMOUNT'); IWETH(WETH).deposit{value : amounts[0]}(); assert(IWETH(WETH).transfer(pairFor(path[0], path[1]), amounts[0])); _swap(amounts, path, to); } function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external virtual override ensure(deadline) returns (uint[] memory amounts) { require(path[path.length - 1] == WETH, 'ZebraRouter: INVALID_PATH'); amounts = IZebraFactory(factory).getAmountsIn(amountOut, path); require(amounts[0] <= amountInMax, 'ZebraRouter: EXCESSIVE_INPUT_AMOUNT'); TransferHelper.safeTransferFrom( path[0], msg.sender, pairFor(path[0], path[1]), amounts[0] ); _swap(amounts, path, address(this)); IWETH(WETH).withdraw(amounts[amounts.length - 1]); TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]); } function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external virtual override ensure(deadline) returns (uint[] memory amounts) { require(path[path.length - 1] == WETH, 'ZebraRouter: INVALID_PATH'); amounts = IZebraFactory(factory).getAmountsOut(amountIn, path); require(amounts[amounts.length - 1] >= amountOutMin, 'ZebraRouter: INSUFFICIENT_OUTPUT_AMOUNT'); TransferHelper.safeTransferFrom( path[0], msg.sender, pairFor(path[0], path[1]), amounts[0] ); _swap(amounts, path, address(this)); IWETH(WETH).withdraw(amounts[amounts.length - 1]); TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]); } function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external virtual override payable ensure(deadline) returns (uint[] memory amounts) { require(path[0] == WETH, 'ZebraRouter: INVALID_PATH'); amounts = IZebraFactory(factory).getAmountsIn(amountOut, path); require(amounts[0] <= msg.value, 'ZebraRouter: EXCESSIVE_INPUT_AMOUNT'); IWETH(WETH).deposit{value : amounts[0]}(); assert(IWETH(WETH).transfer(pairFor(path[0], path[1]), amounts[0])); _swap(amounts, path, to); // refund dust eth, if any if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]); } // **** SWAP (supporting fee-on-transfer tokens) **** // requires the initial amount to have already been sent to the first pair function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual { for (uint i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = IZebraFactory(factory).sortTokens(input, output); IZebraPair pair = IZebraPair(pairFor(input, output)); uint amountInput; uint amountOutput; {// scope to avoid stack too deep errors (uint reserve0, uint reserve1,) = pair.getReserves(); (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0); amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput); amountOutput = IZebraFactory(factory).getAmountOut(amountInput, reserveInput, reserveOutput); } if (swapMining != address(0)) { ISwapMining(swapMining).swap(msg.sender, input, output, amountOutput); } (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0)); address to = i < path.length - 2 ? pairFor(output, path[i + 2]) : _to; pair.swap(amount0Out, amount1Out, to, new bytes(0)); } } function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external virtual override ensure(deadline) { TransferHelper.safeTransferFrom( path[0], msg.sender, pairFor(path[0], path[1]), amountIn ); uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to); _swapSupportingFeeOnTransferTokens(path, to); require( IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin, 'ZebraRouter: INSUFFICIENT_OUTPUT_AMOUNT' ); } function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external virtual override payable ensure(deadline) { require(path[0] == WETH, 'ZebraRouter: INVALID_PATH'); uint amountIn = msg.value; IWETH(WETH).deposit{value : amountIn}(); assert(IWETH(WETH).transfer(pairFor(path[0], path[1]), amountIn)); uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to); _swapSupportingFeeOnTransferTokens(path, to); require( IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin, 'ZebraRouter: INSUFFICIENT_OUTPUT_AMOUNT' ); } function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external virtual override ensure(deadline) { require(path[path.length - 1] == WETH, 'ZebraRouter: INVALID_PATH'); TransferHelper.safeTransferFrom( path[0], msg.sender, pairFor(path[0], path[1]), amountIn ); _swapSupportingFeeOnTransferTokens(path, address(this)); uint amountOut = IERC20(WETH).balanceOf(address(this)); require(amountOut >= amountOutMin, 'ZebraRouter: INSUFFICIENT_OUTPUT_AMOUNT'); IWETH(WETH).withdraw(amountOut); TransferHelper.safeTransferETH(to, amountOut); } // **** LIBRARY FUNCTIONS **** function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) public view override returns (uint256 amountB) { return IZebraFactory(factory).quote(amountA, reserveA, reserveB); } function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) public view override returns (uint256 amountOut){ return IZebraFactory(factory).getAmountOut(amountIn, reserveIn, reserveOut); } function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) public view override returns (uint256 amountIn){ return IZebraFactory(factory).getAmountIn(amountOut, reserveIn, reserveOut); } function getAmountsOut(uint256 amountIn, address[] memory path) public view override returns (uint256[] memory amounts){ return IZebraFactory(factory).getAmountsOut(amountIn, path); } function getAmountsIn(uint256 amountOut, address[] memory path) public view override returns (uint256[] memory amounts){ return IZebraFactory(factory).getAmountsIn(amountOut, path); } } // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED'); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeTransferETH(address to, uint value) internal { (bool success,) = to.call{value : value}(new bytes(0)); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../GSN/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
pragma solidity >=0.5.0 <0.8.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); }
pragma solidity >=0.5.0; interface ISwapMining { function swap(address account, address input, address output, uint256 amount) external returns (bool); }
pragma solidity >=0.5.0; interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; }
pragma solidity >=0.5.0; interface IZebraCallee { function zebraCall(address sender, uint amount0, uint amount1, bytes calldata data) external; }
pragma solidity >=0.5.0; interface IZebraERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; }
pragma solidity >=0.5.0 <0.8.0; interface IZebraFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function feeToRate() external view returns (uint256); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function setFeeToRate(uint256) external; function sortTokens(address tokenA, address tokenB) external pure returns (address token0, address token1); function pairFor(address tokenA, address tokenB) external view returns (address pair); function getReserves(address tokenA, address tokenB) external view returns (uint256 reserveA, uint256 reserveB); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); }
pragma solidity >=0.5.0; interface IZebraPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function price(address token, uint256 baseUnit) external view returns (uint256); function initialize(address, address) external; }
pragma solidity >=0.6.0; interface IZebraRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapMining() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external view returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external view returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
pragma solidity >=0.5.0 <0.8.0; library SafeMath { uint256 constant WAD = 10**18; uint256 constant RAY = 10**27; function wad() public pure returns (uint256) { return WAD; } function ray() public pure returns (uint256) { return RAY; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a <= b ? a : b; } function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function sqrt(uint256 a) internal pure returns (uint256 b) { if (a > 3) { b = a; uint256 x = a / 2 + 1; while (x < b) { b = x; x = (a / x + x) / 2; } } else if (a != 0) { b = 1; } } function wmul(uint256 a, uint256 b) internal pure returns (uint256) { return mul(a, b) / WAD; } function wmulRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, b), WAD / 2) / WAD; } function rmul(uint256 a, uint256 b) internal pure returns (uint256) { return mul(a, b) / RAY; } function rmulRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, b), RAY / 2) / RAY; } function wdiv(uint256 a, uint256 b) internal pure returns (uint256) { return div(mul(a, WAD), b); } function wdivRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, WAD), b / 2) / b; } function rdiv(uint256 a, uint256 b) internal pure returns (uint256) { return div(mul(a, RAY), b); } function rdivRound(uint256 a, uint256 b) internal pure returns (uint256) { return add(mul(a, RAY), b / 2) / b; } function wpow(uint256 x, uint256 n) internal pure returns (uint256) { uint256 result = WAD; while (n > 0) { if (n % 2 != 0) { result = wmul(result, x); } x = wmul(x, x); n /= 2; } return result; } function rpow(uint256 x, uint256 n) internal pure returns (uint256) { uint256 result = RAY; while (n > 0) { if (n % 2 != 0) { result = rmul(result, x); } x = rmul(x, x); n /= 2; } return result; } }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"pairFor","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapMininng","type":"address"}],"name":"setSwapMining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMining","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040523480156200001157600080fd5b506040516200518f3803806200518f833981810160405260408110156200003757600080fd5b50805160209091015160006200004c620000b5565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606092831b8116608052911b1660a052620000b9565b3390565b60805160601c60a05160601c614fc1620001ce600039806101e15280610e4f5280610e8a528061101f528061133252806118f65280611bf9528061205a5280612147528061222152806122f8528061255552806125dd5280612a305280612b1d5280612bd15280612ca65280612d4d5280612dc1528061336452806136d6528061370b528061373f52806137b3528061394a5280613ba35280613c2b525080610f2052806110e7528061142352806116c152806119be52806123c652806126f452806127e2528061297f5280612a56528061315652806132b252806132fe5280613a1752806141b752806144fe52806146b752806149ca5280614a835280614b335280614c065280614cfb5250614fc16000f3fe6080604052600436106101d15760003560e01c80638803dbee116100f7578063baa2abde11610095578063e8e3370011610064578063e8e3370014610c7c578063f2fde38b14610cfc578063f305d71914610d2f578063fb3bdb4114610d755761020a565b8063baa2abde14610ae2578063c45a015514610b3f578063d06ca61f14610b54578063ded9382a14610c095761020a565b8063ad5c4648116100d1578063ad5c4648146109c0578063ad615dec146109d5578063af2979eb14610a0b578063b6f9de9514610a5e5761020a565b80638803dbee146108da5780638da5cb5b1461097057806396ed28f9146109855761020a565b80634e5eda111161016f578063715018a61161013e578063715018a614610775578063791ac9471461078a5780637ff36ab51461082057806385f8c259146108a45761020a565b80634e5eda11146106085780634f887183146106395780635b0d59841461066c5780635c11d795146106df5761020a565b80631f00ca74116101ab5780631f00ca74146103a95780632195995c1461045e57806338ed1739146104dc5780634a25d94a146105725761020a565b806302751cec1461020f578063054d50d41461027b57806318cbafe5146102c35761020a565b3661020a57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461020857fe5b005b600080fd5b34801561021b57600080fd5b50610262600480360360c081101561023257600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610df9565b6040805192835260208301919091528051918290030190f35b34801561028757600080fd5b506102b16004803603606081101561029e57600080fd5b5080359060208101359060400135610f1c565b60408051918252519081900360200190f35b3480156102cf57600080fd5b50610359600480360360a08110156102e657600080fd5b813591602081013591810190606081016040820135600160201b81111561030c57600080fd5b82018360208201111561031e57600080fd5b803590602001918460208302840111600160201b8311171561033f57600080fd5b91935091506001600160a01b038135169060200135610fc6565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561039557818101518382015260200161037d565b505050509050019250505060405180910390f35b3480156103b557600080fd5b50610359600480360360408110156103cc57600080fd5b81359190810190604081016020820135600160201b8111156103ed57600080fd5b8201836020820111156103ff57600080fd5b803590602001918460208302840111600160201b8311171561042057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506113f1945050505050565b34801561046a57600080fd5b50610262600480360361016081101561048257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561156c565b3480156104e857600080fd5b50610359600480360360a08110156104ff57600080fd5b813591602081013591810190606081016040820135600160201b81111561052557600080fd5b82018360208201111561053757600080fd5b803590602001918460208302840111600160201b8311171561055857600080fd5b91935091506001600160a01b038135169060200135611645565b34801561057e57600080fd5b50610359600480360360a081101561059557600080fd5b813591602081013591810190606081016040820135600160201b8111156105bb57600080fd5b8201836020820111156105cd57600080fd5b803590602001918460208302840111600160201b831117156105ee57600080fd5b91935091506001600160a01b03813516906020013561189d565b34801561061457600080fd5b5061061d611b48565b604080516001600160a01b039092168252519081900360200190f35b34801561064557600080fd5b506102086004803603602081101561065c57600080fd5b50356001600160a01b0316611b57565b34801561067857600080fd5b506102b1600480360361014081101561069057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611bf0565b3480156106eb57600080fd5b50610208600480360360a081101561070257600080fd5b813591602081013591810190606081016040820135600160201b81111561072857600080fd5b82018360208201111561073a57600080fd5b803590602001918460208302840111600160201b8311171561075b57600080fd5b91935091506001600160a01b038135169060200135611cdd565b34801561078157600080fd5b50610208611f42565b34801561079657600080fd5b50610208600480360360a08110156107ad57600080fd5b813591602081013591810190606081016040820135600160201b8111156107d357600080fd5b8201836020820111156107e557600080fd5b803590602001918460208302840111600160201b8311171561080657600080fd5b91935091506001600160a01b038135169060200135612003565b6103596004803603608081101561083657600080fd5b81359190810190604081016020820135600160201b81111561085757600080fd5b82018360208201111561086957600080fd5b803590602001918460208302840111600160201b8311171561088a57600080fd5b91935091506001600160a01b0381351690602001356122a7565b3480156108b057600080fd5b506102b1600480360360608110156108c757600080fd5b50803590602081013590604001356126f0565b3480156108e657600080fd5b50610359600480360360a08110156108fd57600080fd5b813591602081013591810190606081016040820135600160201b81111561092357600080fd5b82018360208201111561093557600080fd5b803590602001918460208302840111600160201b8311171561095657600080fd5b91935091506001600160a01b038135169060200135612766565b34801561097c57600080fd5b5061061d61296c565b34801561099157600080fd5b5061061d600480360360408110156109a857600080fd5b506001600160a01b038135811691602001351661297b565b3480156109cc57600080fd5b5061061d612a2e565b3480156109e157600080fd5b506102b1600480360360608110156109f857600080fd5b5080359060208101359060400135612a52565b348015610a1757600080fd5b506102b1600480360360c0811015610a2e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612ac8565b61020860048036036080811015610a7457600080fd5b81359190810190604081016020820135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460208302840111600160201b83111715610ac857600080fd5b91935091506001600160a01b038135169060200135612c57565b348015610aee57600080fd5b50610262600480360360e0811015610b0557600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612fc2565b348015610b4b57600080fd5b5061061d6132b0565b348015610b6057600080fd5b5061035960048036036040811015610b7757600080fd5b81359190810190604081016020820135600160201b811115610b9857600080fd5b820183602082011115610baa57600080fd5b803590602001918460208302840111600160201b83111715610bcb57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506132d4945050505050565b348015610c1557600080fd5b506102626004803603610140811015610c2d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135613359565b348015610c8857600080fd5b50610cde6004803603610100811015610ca057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e0013561344c565b60408051938452602084019290925282820152519081900360600190f35b348015610d0857600080fd5b5061020860048036036020811015610d1f57600080fd5b50356001600160a01b0316613567565b610cde600480360360c0811015610d4557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561367e565b61035960048036036080811015610d8b57600080fd5b81359190810190604081016020820135600160201b811115610dac57600080fd5b820183602082011115610dbe57600080fd5b803590602001918460208302840111600160201b83111715610ddf57600080fd5b91935091506001600160a01b0381351690602001356138f9565b6000808242811015610e49576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b610e78897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612fc2565b9093509150610e88898685613d70565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610eee57600080fd5b505af1158015610f02573d6000803e3d6000fd5b50505050610f108583613f08565b50965096945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663054d50d48585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f9257600080fd5b505afa158015610fa6573d6000803e3d6000fd5b505050506040513d6020811015610fbc57600080fd5b5051949350505050565b60608142811015611015576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061104f57fe5b905060200201356001600160a01b03166001600160a01b0316146110ba576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152600481018a815260248201928352604482018890526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263d06ca61f928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561119257600080fd5b8101908080516040519392919084600160201b8211156111b157600080fd5b9083019060208201858111156111c657600080fd5b82518660208202830111600160201b821117156111e257600080fd5b82525081516020918201928201910280838360005b8381101561120f5781810151838201526020016111f7565b505050509050016040525050509150868260018451038151811061122f57fe5b602002602001015110156112745760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b6112f18686600081811061128457fe5b905060200201356001600160a01b0316336112d7898960008181106112a557fe5b905060200201356001600160a01b03168a8a60018181106112c257fe5b905060200201356001600160a01b031661297b565b856000815181106112e457fe5b6020026020010151614000565b61133082878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614172915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061136f57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b505050506113e684836001855103815181106113d957fe5b6020026020010151613f08565b509695505050505050565b604080516307c0329d60e21b815260048101848152602482019283528351604483015283516060936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693631f00ca7493889388939192606401906020808601910280838360005b83811015611479578181015183820152602001611461565b50505050905001935050505060006040518083038186803b15801561149d57600080fd5b505afa1580156114b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156114da57600080fd5b8101908080516040519392919084600160201b8211156114f957600080fd5b90830190602082018581111561150e57600080fd5b82518660208202830111600160201b8211171561152a57600080fd5b82525081516020918201928201910280838360005b8381101561155757818101518382015260200161153f565b50505050905001604052505050905092915050565b600080600061157b8e8e61297b565b905060008761158a578c61158e565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b5050505061162b8f8f8f8f8f8f8f612fc2565b809450819550505050509b509b9950505050505050505050565b60608142811015611694576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152600481018a815260248201928352604482018890526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263d06ca61f928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561172f57600080fd5b505afa158015611743573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561176c57600080fd5b8101908080516040519392919084600160201b82111561178b57600080fd5b9083019060208201858111156117a057600080fd5b82518660208202830111600160201b821117156117bc57600080fd5b82525081516020918201928201910280838360005b838110156117e95781810151838201526020016117d1565b505050509050016040525050509150868260018451038151811061180957fe5b6020026020010151101561184e5760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b61185e8686600081811061128457fe5b6113e682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614172915050565b606081428110156118ec576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061192657fe5b905060200201356001600160a01b03166001600160a01b031614611991576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b604080516307c0329d60e21b8152600481018a815260248201928352604482018890526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692631f00ca74928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a6957600080fd5b8101908080516040519392919084600160201b821115611a8857600080fd5b908301906020820185811115611a9d57600080fd5b82518660208202830111600160201b82111715611ab957600080fd5b82525081516020918201928201910280838360005b83811015611ae6578181015183820152602001611ace565b5050505090500160405250505091508682600081518110611b0357fe5b602002602001015111156112745760405162461bcd60e51b8152600401808060200182810382526023815260200180614e916023913960400191505060405180910390fd5b6001546001600160a01b031681565b611b5f6144b5565b6000546001600160a01b03908116911614611bc1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080611c1d8c7f000000000000000000000000000000000000000000000000000000000000000061297b565b9050600086611c2c578b611c30565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611ca657600080fd5b505af1158015611cba573d6000803e3d6000fd5b50505050611ccc8d8d8d8d8d8d612ac8565b9d9c50505050505050505050505050565b8042811015611d2a576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b611d7e85856000818110611d3a57fe5b905060200201356001600160a01b031633611d7888886000818110611d5b57fe5b905060200201356001600160a01b0316898960018181106112c257fe5b8a614000565b600085856000198101818110611d9057fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611dec57600080fd5b505afa158015611e00573d6000803e3d6000fd5b505050506040513d6020811015611e1657600080fd5b50516040805160208881028281018201909352888252929350611e589290918991899182918501908490808284376000920191909152508892506144b9915050565b86611efb8288886000198101818110611e6d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611ec957600080fd5b505afa158015611edd573d6000803e3d6000fd5b505050506040513d6020811015611ef357600080fd5b505190614971565b1015611f385760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b5050505050505050565b611f4a6144b5565b6000546001600160a01b03908116911614611fac576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b8042811015612050576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061208a57fe5b905060200201356001600160a01b03166001600160a01b0316146120f5576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b61210585856000818110611d3a57fe5b6121438585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506144b9915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156121b257600080fd5b505afa1580156121c6573d6000803e3d6000fd5b505050506040513d60208110156121dc57600080fd5b505190508681101561221f5760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561228557600080fd5b505af1158015612299573d6000803e3d6000fd5b50505050611f388482613f08565b606081428110156122f6576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061232d57fe5b905060200201356001600160a01b03166001600160a01b031614612398576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152346004820181815260248301938452604483018990526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169363d06ca61f938b928b929091606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561243457600080fd5b505afa158015612448573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561247157600080fd5b8101908080516040519392919084600160201b82111561249057600080fd5b9083019060208201858111156124a557600080fd5b82518660208202830111600160201b821117156124c157600080fd5b82525081516020918201928201910280838360005b838110156124ee5781810151838201526020016124d6565b505050509050016040525050509150868260018451038151811061250e57fe5b602002602001015110156125535760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061258f57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156125c257600080fd5b505af11580156125d6573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb61261a88886000818110611d5b57fe5b8460008151811061262757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561267557600080fd5b505af1158015612689573d6000803e3d6000fd5b505050506040513d602081101561269f57600080fd5b50516126a757fe5b6126e682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614172915050565b5095945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166385f8c2598585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f9257600080fd5b606081428110156127b5576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b604080516307c0329d60e21b8152600481018a815260248201928352604482018890526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692631f00ca74928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561285057600080fd5b505afa158015612864573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561288d57600080fd5b8101908080516040519392919084600160201b8211156128ac57600080fd5b9083019060208201858111156128c157600080fd5b82518660208202830111600160201b821117156128dd57600080fd5b82525081516020918201928201910280838360005b8381101561290a5781810151838201526020016128f2565b505050509050016040525050509150868260008151811061292757fe5b6020026020010151111561184e5760405162461bcd60e51b8152600401808060200182810382526023815260200180614e916023913960400191505060405180910390fd5b6000546001600160a01b031690565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396ed28f984846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156129fb57600080fd5b505afa158015612a0f573d6000803e3d6000fd5b505050506040513d6020811015612a2557600080fd5b50519392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad615dec8585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f9257600080fd5b60008142811015612b17576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b612b46887f00000000000000000000000000000000000000000000000000000000000000008989893089612fc2565b905080925050612bcf88858a6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612b9e57600080fd5b505afa158015612bb2573d6000803e3d6000fd5b505050506040513d6020811015612bc857600080fd5b5051613d70565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612c3557600080fd5b505af1158015612c49573d6000803e3d6000fd5b505050506113e68483613f08565b8042811015612ca4576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685856000818110612cdb57fe5b905060200201356001600160a01b03166001600160a01b031614612d46576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612da657600080fd5b505af1158015612dba573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612dfe88886000818110611d5b57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612e4557600080fd5b505af1158015612e59573d6000803e3d6000fd5b505050506040513d6020811015612e6f57600080fd5b5051612e7757fe5b600086866000198101818110612e8957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612ee557600080fd5b505afa158015612ef9573d6000803e3d6000fd5b505050506040513d6020811015612f0f57600080fd5b50516040805160208981028281018201909352898252929350612f519290918a918a9182918501908490808284376000920191909152508992506144b9915050565b87611efb8289896000198101818110612f6657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611ec957600080fd5b6000808242811015613012576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b600061301e8b8b61297b565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561307957600080fd5b505af115801561308d573d6000803e3d6000fd5b505050506040513d60208110156130a357600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561310957600080fd5b505af115801561311d573d6000803e3d6000fd5b505050506040513d604081101561313357600080fd5b8101908080519060200190929190805190602001909291905050509150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663544caa568f8f6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050604080518083038186803b1580156131d157600080fd5b505afa1580156131e5573d6000803e3d6000fd5b505050506040513d60408110156131fb57600080fd5b505190506001600160a01b038e81169082161461321957818361321c565b82825b90975095508a8710156132605760405162461bcd60e51b8152600401808060200182810382526022815260200180614f466022913960400191505060405180910390fd5b8986101561329f5760405162461bcd60e51b8152600401808060200182810382526022815260200180614f016022913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6040805163d06ca61f60e01b815260048101848152602482019283528351604483015283516060937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169363d06ca61f93889388939192606401906020808601910280838360008315611479578181015183820152602001611461565b60008060006133888d7f000000000000000000000000000000000000000000000000000000000000000061297b565b9050600087613397578c61339b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561341157600080fd5b505af1158015613425573d6000803e3d6000fd5b505050506134378e8e8e8e8e8e610df9565b909f909e509c50505050505050505050505050565b6000806000834281101561349e576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6134ac8c8c8c8c8c8c6149ba565b909450925060006134bd8d8d61297b565b90506134cb8d338388614000565b6134d78c338387614000565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561352657600080fd5b505af115801561353a573d6000803e3d6000fd5b505050506040513d602081101561355057600080fd5b5051949d939c50939a509198505050505050505050565b61356f6144b5565b6000546001600160a01b039081169116146135d1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166136165760405162461bcd60e51b8152600401808060200182810382526026815260200180614eb46026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080600083428110156136d0576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6136fe8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c6149ba565b9094509250600061372f8b7f000000000000000000000000000000000000000000000000000000000000000061297b565b905061373d8b338388614000565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561379857600080fd5b505af11580156137ac573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561382857600080fd5b505af115801561383c573d6000803e3d6000fd5b505050506040513d602081101561385257600080fd5b505161385a57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b1580156138a957600080fd5b505af11580156138bd573d6000803e3d6000fd5b505050506040513d60208110156138d357600080fd5b50519250348410156138eb576138eb33853403613f08565b505096509650969350505050565b60608142811015613948576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061397f57fe5b905060200201356001600160a01b03166001600160a01b0316146139ea576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b604080516307c0329d60e21b81526004810189815260248201928352604482018890526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692631f00ca74928b928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b158015613a8557600080fd5b505afa158015613a99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613ac257600080fd5b8101908080516040519392919084600160201b821115613ae157600080fd5b908301906020820185811115613af657600080fd5b82518660208202830111600160201b82111715613b1257600080fd5b82525081516020918201928201910280838360005b83811015613b3f578181015183820152602001613b27565b5050505090500160405250505091503482600081518110613b5c57fe5b60200260200101511115613ba15760405162461bcd60e51b8152600401808060200182810382526023815260200180614e916023913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110613bdd57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015613c1057600080fd5b505af1158015613c24573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb613c6888886000818110611d5b57fe5b84600081518110613c7557fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613cc357600080fd5b505af1158015613cd7573d6000803e3d6000fd5b505050506040513d6020811015613ced57600080fd5b5051613cf557fe5b613d3482878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614172915050565b81600081518110613d4157fe5b60200260200101513411156126e6576126e63383600081518110613d6157fe5b60200260200101513403613f08565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613e1b5780518252601f199092019160209182019101613dfc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613e7d576040519150601f19603f3d011682016040523d82523d6000602084013e613e82565b606091505b5091509150818015613eb0575080511580613eb05750808060200190516020811015613ead57600080fd5b50515b613f01576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613f545780518252601f199092019160209182019101613f35565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613fb6576040519150601f19603f3d011682016040523d82523d6000602084013e613fbb565b606091505b5050905080613ffb5760405162461bcd60e51b8152600401808060200182810382526023815260200180614f236023913960400191505060405180910390fd5b505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061409a5780518252601f19909201916020918201910161407b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146140fc576040519150601f19603f3d011682016040523d82523d6000602084013e614101565b606091505b509150915081801561412f57508051158061412f575080806020019051602081101561412c57600080fd5b50515b61416a5760405162461bcd60e51b8152600401808060200182810382526024815260200180614f686024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156144af5760008084838151811061419057fe5b60200260200101518584600101815181106141a757fe5b60200260200101519150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663544caa5684846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050604080518083038186803b15801561423257600080fd5b505afa158015614246573d6000803e3d6000fd5b505050506040513d604081101561425c57600080fd5b5051875190915060009088906001870190811061427557fe5b60209081029190910101516001549091506001600160a01b031615614325576001546040805163152cf14360e31b81523360048201526001600160a01b0387811660248301528681166044830152606482018590529151919092169163a9678a189160848083019260209291908290030181600087803b1580156142f857600080fd5b505af115801561430c573d6000803e3d6000fd5b505050506040513d602081101561432257600080fd5b50505b600080836001600160a01b0316866001600160a01b0316146143495782600061434d565b6000835b91509150600060028a510388106143645788614384565b614384868b8a6002018151811061437757fe5b602002602001015161297b565b9050614390878761297b565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156143cd576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561443557818101518382015260200161441d565b50505050905090810190601f1680156144625780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561448457600080fd5b505af1158015614498573d6000803e3d6000fd5b505060019099019850614175975050505050505050565b50505050565b3390565b60005b6001835103811015613ffb576000808483815181106144d757fe5b60200260200101518584600101815181106144ee57fe5b60200260200101519150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663544caa5684846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050604080518083038186803b15801561457957600080fd5b505afa15801561458d573d6000803e3d6000fd5b505050506040513d60408110156145a357600080fd5b5051905060006145b3848461297b565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156145f457600080fd5b505afa158015614608573d6000803e3d6000fd5b505050506040513d606081101561461e57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a81169089161461465b57828461465e565b83835b915091506146b3828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611ec957600080fd5b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663054d50d48784846040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561472957600080fd5b505afa15801561473d573d6000803e3d6000fd5b505050506040513d602081101561475357600080fd5b50516001549095506001600160a01b031615935061480092505050576001546040805163152cf14360e31b81523360048201526001600160a01b0389811660248301528881166044830152606482018590529151919092169163a9678a189160848083019260209291908290030181600087803b1580156147d357600080fd5b505af11580156147e7573d6000803e3d6000fd5b505050506040513d60208110156147fd57600080fd5b50505b600080856001600160a01b0316886001600160a01b03161461482457826000614828565b6000835b91509150600060028c51038a1061483f578a614852565b614852888d8c6002018151811061437757fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156148f55781810151838201526020016148dd565b50505050905090810190601f1680156149225780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561494457600080fd5b505af1158015614958573d6000803e3d6000fd5b50506001909b019a506144bc9950505050505050505050565b60006149b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614df9565b9392505050565b60008060006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a439058a8a6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015614a4657600080fd5b505afa158015614a5a573d6000803e3d6000fd5b505050506040513d6020811015614a7057600080fd5b50516001600160a01b03161415614b2e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c9c6539689896040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b158015614b0157600080fd5b505af1158015614b15573d6000803e3d6000fd5b505050506040513d6020811015614b2b57600080fd5b50505b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d52bb6f48b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050604080518083038186803b158015614bae57600080fd5b505afa158015614bc2573d6000803e3d6000fd5b505050506040513d6040811015614bd857600080fd5b508051602090910151909250905081158015614bf2575080155b15614c0257879350869250614dec565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad615dec8a85856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015614c7857600080fd5b505afa158015614c8c573d6000803e3d6000fd5b505050506040513d6020811015614ca257600080fd5b50519050878111614cf75785811015614cec5760405162461bcd60e51b8152600401808060200182810382526022815260200180614f016022913960400191505060405180910390fd5b889450925082614dea565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad615dec8a85876040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015614d6d57600080fd5b505afa158015614d81573d6000803e3d6000fd5b505050506040513d6020811015614d9757600080fd5b5051905089811115614da557fe5b87811015614de45760405162461bcd60e51b8152600401808060200182810382526022815260200180614f466022913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008184841115614e885760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614e4d578181015183820152602001614e35565b50505050905090810190601f168015614e7a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe5a65627261526f757465723a204558434553534956455f494e5055545f414d4f554e544f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735a65627261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545a65627261526f757465723a20494e53554646494349454e545f425f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c45445a65627261526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220036ce1f974761c7d9387307d45fd5b4453461d056657afbf95d65975ae4ba57964736f6c634300060c0033000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129410000000000000000000000005300000000000000000000000000000000000004
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80638803dbee116100f7578063baa2abde11610095578063e8e3370011610064578063e8e3370014610c7c578063f2fde38b14610cfc578063f305d71914610d2f578063fb3bdb4114610d755761020a565b8063baa2abde14610ae2578063c45a015514610b3f578063d06ca61f14610b54578063ded9382a14610c095761020a565b8063ad5c4648116100d1578063ad5c4648146109c0578063ad615dec146109d5578063af2979eb14610a0b578063b6f9de9514610a5e5761020a565b80638803dbee146108da5780638da5cb5b1461097057806396ed28f9146109855761020a565b80634e5eda111161016f578063715018a61161013e578063715018a614610775578063791ac9471461078a5780637ff36ab51461082057806385f8c259146108a45761020a565b80634e5eda11146106085780634f887183146106395780635b0d59841461066c5780635c11d795146106df5761020a565b80631f00ca74116101ab5780631f00ca74146103a95780632195995c1461045e57806338ed1739146104dc5780634a25d94a146105725761020a565b806302751cec1461020f578063054d50d41461027b57806318cbafe5146102c35761020a565b3661020a57336001600160a01b037f0000000000000000000000005300000000000000000000000000000000000004161461020857fe5b005b600080fd5b34801561021b57600080fd5b50610262600480360360c081101561023257600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610df9565b6040805192835260208301919091528051918290030190f35b34801561028757600080fd5b506102b16004803603606081101561029e57600080fd5b5080359060208101359060400135610f1c565b60408051918252519081900360200190f35b3480156102cf57600080fd5b50610359600480360360a08110156102e657600080fd5b813591602081013591810190606081016040820135600160201b81111561030c57600080fd5b82018360208201111561031e57600080fd5b803590602001918460208302840111600160201b8311171561033f57600080fd5b91935091506001600160a01b038135169060200135610fc6565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561039557818101518382015260200161037d565b505050509050019250505060405180910390f35b3480156103b557600080fd5b50610359600480360360408110156103cc57600080fd5b81359190810190604081016020820135600160201b8111156103ed57600080fd5b8201836020820111156103ff57600080fd5b803590602001918460208302840111600160201b8311171561042057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506113f1945050505050565b34801561046a57600080fd5b50610262600480360361016081101561048257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561156c565b3480156104e857600080fd5b50610359600480360360a08110156104ff57600080fd5b813591602081013591810190606081016040820135600160201b81111561052557600080fd5b82018360208201111561053757600080fd5b803590602001918460208302840111600160201b8311171561055857600080fd5b91935091506001600160a01b038135169060200135611645565b34801561057e57600080fd5b50610359600480360360a081101561059557600080fd5b813591602081013591810190606081016040820135600160201b8111156105bb57600080fd5b8201836020820111156105cd57600080fd5b803590602001918460208302840111600160201b831117156105ee57600080fd5b91935091506001600160a01b03813516906020013561189d565b34801561061457600080fd5b5061061d611b48565b604080516001600160a01b039092168252519081900360200190f35b34801561064557600080fd5b506102086004803603602081101561065c57600080fd5b50356001600160a01b0316611b57565b34801561067857600080fd5b506102b1600480360361014081101561069057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611bf0565b3480156106eb57600080fd5b50610208600480360360a081101561070257600080fd5b813591602081013591810190606081016040820135600160201b81111561072857600080fd5b82018360208201111561073a57600080fd5b803590602001918460208302840111600160201b8311171561075b57600080fd5b91935091506001600160a01b038135169060200135611cdd565b34801561078157600080fd5b50610208611f42565b34801561079657600080fd5b50610208600480360360a08110156107ad57600080fd5b813591602081013591810190606081016040820135600160201b8111156107d357600080fd5b8201836020820111156107e557600080fd5b803590602001918460208302840111600160201b8311171561080657600080fd5b91935091506001600160a01b038135169060200135612003565b6103596004803603608081101561083657600080fd5b81359190810190604081016020820135600160201b81111561085757600080fd5b82018360208201111561086957600080fd5b803590602001918460208302840111600160201b8311171561088a57600080fd5b91935091506001600160a01b0381351690602001356122a7565b3480156108b057600080fd5b506102b1600480360360608110156108c757600080fd5b50803590602081013590604001356126f0565b3480156108e657600080fd5b50610359600480360360a08110156108fd57600080fd5b813591602081013591810190606081016040820135600160201b81111561092357600080fd5b82018360208201111561093557600080fd5b803590602001918460208302840111600160201b8311171561095657600080fd5b91935091506001600160a01b038135169060200135612766565b34801561097c57600080fd5b5061061d61296c565b34801561099157600080fd5b5061061d600480360360408110156109a857600080fd5b506001600160a01b038135811691602001351661297b565b3480156109cc57600080fd5b5061061d612a2e565b3480156109e157600080fd5b506102b1600480360360608110156109f857600080fd5b5080359060208101359060400135612a52565b348015610a1757600080fd5b506102b1600480360360c0811015610a2e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612ac8565b61020860048036036080811015610a7457600080fd5b81359190810190604081016020820135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460208302840111600160201b83111715610ac857600080fd5b91935091506001600160a01b038135169060200135612c57565b348015610aee57600080fd5b50610262600480360360e0811015610b0557600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612fc2565b348015610b4b57600080fd5b5061061d6132b0565b348015610b6057600080fd5b5061035960048036036040811015610b7757600080fd5b81359190810190604081016020820135600160201b811115610b9857600080fd5b820183602082011115610baa57600080fd5b803590602001918460208302840111600160201b83111715610bcb57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506132d4945050505050565b348015610c1557600080fd5b506102626004803603610140811015610c2d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135613359565b348015610c8857600080fd5b50610cde6004803603610100811015610ca057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e0013561344c565b60408051938452602084019290925282820152519081900360600190f35b348015610d0857600080fd5b5061020860048036036020811015610d1f57600080fd5b50356001600160a01b0316613567565b610cde600480360360c0811015610d4557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561367e565b61035960048036036080811015610d8b57600080fd5b81359190810190604081016020820135600160201b811115610dac57600080fd5b820183602082011115610dbe57600080fd5b803590602001918460208302840111600160201b83111715610ddf57600080fd5b91935091506001600160a01b0381351690602001356138f9565b6000808242811015610e49576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b610e78897f00000000000000000000000053000000000000000000000000000000000000048a8a8a308a612fc2565b9093509150610e88898685613d70565b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610eee57600080fd5b505af1158015610f02573d6000803e3d6000fd5b50505050610f108583613f08565b50965096945050505050565b60007f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663054d50d48585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f9257600080fd5b505afa158015610fa6573d6000803e3d6000fd5b505050506040513d6020811015610fbc57600080fd5b5051949350505050565b60608142811015611015576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000005300000000000000000000000000000000000004168686600019810181811061104f57fe5b905060200201356001600160a01b03166001600160a01b0316146110ba576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152600481018a815260248201928352604482018890526001600160a01b037f000000000000000000000000a63eb44c67813cad20a9ae654641ddc918412941169263d06ca61f928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561119257600080fd5b8101908080516040519392919084600160201b8211156111b157600080fd5b9083019060208201858111156111c657600080fd5b82518660208202830111600160201b821117156111e257600080fd5b82525081516020918201928201910280838360005b8381101561120f5781810151838201526020016111f7565b505050509050016040525050509150868260018451038151811061122f57fe5b602002602001015110156112745760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b6112f18686600081811061128457fe5b905060200201356001600160a01b0316336112d7898960008181106112a557fe5b905060200201356001600160a01b03168a8a60018181106112c257fe5b905060200201356001600160a01b031661297b565b856000815181106112e457fe5b6020026020010151614000565b61133082878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614172915050565b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b0316632e1a7d4d8360018551038151811061136f57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b505050506113e684836001855103815181106113d957fe5b6020026020010151613f08565b509695505050505050565b604080516307c0329d60e21b815260048101848152602482019283528351604483015283516060936001600160a01b037f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129411693631f00ca7493889388939192606401906020808601910280838360005b83811015611479578181015183820152602001611461565b50505050905001935050505060006040518083038186803b15801561149d57600080fd5b505afa1580156114b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156114da57600080fd5b8101908080516040519392919084600160201b8211156114f957600080fd5b90830190602082018581111561150e57600080fd5b82518660208202830111600160201b8211171561152a57600080fd5b82525081516020918201928201910280838360005b8381101561155757818101518382015260200161153f565b50505050905001604052505050905092915050565b600080600061157b8e8e61297b565b905060008761158a578c61158e565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b5050505061162b8f8f8f8f8f8f8f612fc2565b809450819550505050509b509b9950505050505050505050565b60608142811015611694576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152600481018a815260248201928352604482018890526001600160a01b037f000000000000000000000000a63eb44c67813cad20a9ae654641ddc918412941169263d06ca61f928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561172f57600080fd5b505afa158015611743573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561176c57600080fd5b8101908080516040519392919084600160201b82111561178b57600080fd5b9083019060208201858111156117a057600080fd5b82518660208202830111600160201b821117156117bc57600080fd5b82525081516020918201928201910280838360005b838110156117e95781810151838201526020016117d1565b505050509050016040525050509150868260018451038151811061180957fe5b6020026020010151101561184e5760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b61185e8686600081811061128457fe5b6113e682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614172915050565b606081428110156118ec576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000005300000000000000000000000000000000000004168686600019810181811061192657fe5b905060200201356001600160a01b03166001600160a01b031614611991576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b604080516307c0329d60e21b8152600481018a815260248201928352604482018890526001600160a01b037f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129411692631f00ca74928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a6957600080fd5b8101908080516040519392919084600160201b821115611a8857600080fd5b908301906020820185811115611a9d57600080fd5b82518660208202830111600160201b82111715611ab957600080fd5b82525081516020918201928201910280838360005b83811015611ae6578181015183820152602001611ace565b5050505090500160405250505091508682600081518110611b0357fe5b602002602001015111156112745760405162461bcd60e51b8152600401808060200182810382526023815260200180614e916023913960400191505060405180910390fd5b6001546001600160a01b031681565b611b5f6144b5565b6000546001600160a01b03908116911614611bc1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080611c1d8c7f000000000000000000000000530000000000000000000000000000000000000461297b565b9050600086611c2c578b611c30565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611ca657600080fd5b505af1158015611cba573d6000803e3d6000fd5b50505050611ccc8d8d8d8d8d8d612ac8565b9d9c50505050505050505050505050565b8042811015611d2a576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b611d7e85856000818110611d3a57fe5b905060200201356001600160a01b031633611d7888886000818110611d5b57fe5b905060200201356001600160a01b0316898960018181106112c257fe5b8a614000565b600085856000198101818110611d9057fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611dec57600080fd5b505afa158015611e00573d6000803e3d6000fd5b505050506040513d6020811015611e1657600080fd5b50516040805160208881028281018201909352888252929350611e589290918991899182918501908490808284376000920191909152508892506144b9915050565b86611efb8288886000198101818110611e6d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611ec957600080fd5b505afa158015611edd573d6000803e3d6000fd5b505050506040513d6020811015611ef357600080fd5b505190614971565b1015611f385760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b5050505050505050565b611f4a6144b5565b6000546001600160a01b03908116911614611fac576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b8042811015612050576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000005300000000000000000000000000000000000004168585600019810181811061208a57fe5b905060200201356001600160a01b03166001600160a01b0316146120f5576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b61210585856000818110611d3a57fe5b6121438585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506144b9915050565b60007f00000000000000000000000053000000000000000000000000000000000000046001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156121b257600080fd5b505afa1580156121c6573d6000803e3d6000fd5b505050506040513d60208110156121dc57600080fd5b505190508681101561221f5760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561228557600080fd5b505af1158015612299573d6000803e3d6000fd5b50505050611f388482613f08565b606081428110156122f6576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b03168686600081811061232d57fe5b905060200201356001600160a01b03166001600160a01b031614612398576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b6040805163d06ca61f60e01b8152346004820181815260248301938452604483018990526001600160a01b037f000000000000000000000000a63eb44c67813cad20a9ae654641ddc918412941169363d06ca61f938b928b929091606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561243457600080fd5b505afa158015612448573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561247157600080fd5b8101908080516040519392919084600160201b82111561249057600080fd5b9083019060208201858111156124a557600080fd5b82518660208202830111600160201b821117156124c157600080fd5b82525081516020918201928201910280838360005b838110156124ee5781810151838201526020016124d6565b505050509050016040525050509150868260018451038151811061250e57fe5b602002602001015110156125535760405162461bcd60e51b8152600401808060200182810382526027815260200180614eda6027913960400191505060405180910390fd5b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b031663d0e30db08360008151811061258f57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156125c257600080fd5b505af11580156125d6573d6000803e3d6000fd5b50505050507f00000000000000000000000053000000000000000000000000000000000000046001600160a01b031663a9059cbb61261a88886000818110611d5b57fe5b8460008151811061262757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561267557600080fd5b505af1158015612689573d6000803e3d6000fd5b505050506040513d602081101561269f57600080fd5b50516126a757fe5b6126e682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614172915050565b5095945050505050565b60007f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b03166385f8c2598585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f9257600080fd5b606081428110156127b5576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b604080516307c0329d60e21b8152600481018a815260248201928352604482018890526001600160a01b037f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129411692631f00ca74928c928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561285057600080fd5b505afa158015612864573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561288d57600080fd5b8101908080516040519392919084600160201b8211156128ac57600080fd5b9083019060208201858111156128c157600080fd5b82518660208202830111600160201b821117156128dd57600080fd5b82525081516020918201928201910280838360005b8381101561290a5781810151838201526020016128f2565b505050509050016040525050509150868260008151811061292757fe5b6020026020010151111561184e5760405162461bcd60e51b8152600401808060200182810382526023815260200180614e916023913960400191505060405180910390fd5b6000546001600160a01b031690565b60007f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b03166396ed28f984846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156129fb57600080fd5b505afa158015612a0f573d6000803e3d6000fd5b505050506040513d6020811015612a2557600080fd5b50519392505050565b7f000000000000000000000000530000000000000000000000000000000000000481565b60007f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663ad615dec8585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015610f9257600080fd5b60008142811015612b17576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b612b46887f00000000000000000000000053000000000000000000000000000000000000048989893089612fc2565b905080925050612bcf88858a6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612b9e57600080fd5b505afa158015612bb2573d6000803e3d6000fd5b505050506040513d6020811015612bc857600080fd5b5051613d70565b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612c3557600080fd5b505af1158015612c49573d6000803e3d6000fd5b505050506113e68483613f08565b8042811015612ca4576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b031685856000818110612cdb57fe5b905060200201356001600160a01b03166001600160a01b031614612d46576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b60003490507f00000000000000000000000053000000000000000000000000000000000000046001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612da657600080fd5b505af1158015612dba573d6000803e3d6000fd5b50505050507f00000000000000000000000053000000000000000000000000000000000000046001600160a01b031663a9059cbb612dfe88886000818110611d5b57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612e4557600080fd5b505af1158015612e59573d6000803e3d6000fd5b505050506040513d6020811015612e6f57600080fd5b5051612e7757fe5b600086866000198101818110612e8957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612ee557600080fd5b505afa158015612ef9573d6000803e3d6000fd5b505050506040513d6020811015612f0f57600080fd5b50516040805160208981028281018201909352898252929350612f519290918a918a9182918501908490808284376000920191909152508992506144b9915050565b87611efb8289896000198101818110612f6657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611ec957600080fd5b6000808242811015613012576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b600061301e8b8b61297b565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561307957600080fd5b505af115801561308d573d6000803e3d6000fd5b505050506040513d60208110156130a357600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561310957600080fd5b505af115801561311d573d6000803e3d6000fd5b505050506040513d604081101561313357600080fd5b8101908080519060200190929190805190602001909291905050509150915060007f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663544caa568f8f6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050604080518083038186803b1580156131d157600080fd5b505afa1580156131e5573d6000803e3d6000fd5b505050506040513d60408110156131fb57600080fd5b505190506001600160a01b038e81169082161461321957818361321c565b82825b90975095508a8710156132605760405162461bcd60e51b8152600401808060200182810382526022815260200180614f466022913960400191505060405180910390fd5b8986101561329f5760405162461bcd60e51b8152600401808060200182810382526022815260200180614f016022913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000a63eb44c67813cad20a9ae654641ddc91841294181565b6040805163d06ca61f60e01b815260048101848152602482019283528351604483015283516060937f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b03169363d06ca61f93889388939192606401906020808601910280838360008315611479578181015183820152602001611461565b60008060006133888d7f000000000000000000000000530000000000000000000000000000000000000461297b565b9050600087613397578c61339b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561341157600080fd5b505af1158015613425573d6000803e3d6000fd5b505050506134378e8e8e8e8e8e610df9565b909f909e509c50505050505050505050505050565b6000806000834281101561349e576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6134ac8c8c8c8c8c8c6149ba565b909450925060006134bd8d8d61297b565b90506134cb8d338388614000565b6134d78c338387614000565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561352657600080fd5b505af115801561353a573d6000803e3d6000fd5b505050506040513d602081101561355057600080fd5b5051949d939c50939a509198505050505050505050565b61356f6144b5565b6000546001600160a01b039081169116146135d1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166136165760405162461bcd60e51b8152600401808060200182810382526026815260200180614eb46026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080600083428110156136d0576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b6136fe8a7f00000000000000000000000053000000000000000000000000000000000000048b348c8c6149ba565b9094509250600061372f8b7f000000000000000000000000530000000000000000000000000000000000000461297b565b905061373d8b338388614000565b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561379857600080fd5b505af11580156137ac573d6000803e3d6000fd5b50505050507f00000000000000000000000053000000000000000000000000000000000000046001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561382857600080fd5b505af115801561383c573d6000803e3d6000fd5b505050506040513d602081101561385257600080fd5b505161385a57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b1580156138a957600080fd5b505af11580156138bd573d6000803e3d6000fd5b505050506040513d60208110156138d357600080fd5b50519250348410156138eb576138eb33853403613f08565b505096509650969350505050565b60608142811015613948576040805162461bcd60e51b81526020600482015260146024820152731699589c98549bdd5d195c8e881156141254915160621b604482015290519081900360640190fd5b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b03168686600081811061397f57fe5b905060200201356001600160a01b03166001600160a01b0316146139ea576040805162461bcd60e51b815260206004820152601960248201527f5a65627261526f757465723a20494e56414c49445f5041544800000000000000604482015290519081900360640190fd5b604080516307c0329d60e21b81526004810189815260248201928352604482018890526001600160a01b037f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129411692631f00ca74928b928b928b92606401846020850280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b158015613a8557600080fd5b505afa158015613a99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613ac257600080fd5b8101908080516040519392919084600160201b821115613ae157600080fd5b908301906020820185811115613af657600080fd5b82518660208202830111600160201b82111715613b1257600080fd5b82525081516020918201928201910280838360005b83811015613b3f578181015183820152602001613b27565b5050505090500160405250505091503482600081518110613b5c57fe5b60200260200101511115613ba15760405162461bcd60e51b8152600401808060200182810382526023815260200180614e916023913960400191505060405180910390fd5b7f00000000000000000000000053000000000000000000000000000000000000046001600160a01b031663d0e30db083600081518110613bdd57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015613c1057600080fd5b505af1158015613c24573d6000803e3d6000fd5b50505050507f00000000000000000000000053000000000000000000000000000000000000046001600160a01b031663a9059cbb613c6888886000818110611d5b57fe5b84600081518110613c7557fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613cc357600080fd5b505af1158015613cd7573d6000803e3d6000fd5b505050506040513d6020811015613ced57600080fd5b5051613cf557fe5b613d3482878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614172915050565b81600081518110613d4157fe5b60200260200101513411156126e6576126e63383600081518110613d6157fe5b60200260200101513403613f08565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613e1b5780518252601f199092019160209182019101613dfc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613e7d576040519150601f19603f3d011682016040523d82523d6000602084013e613e82565b606091505b5091509150818015613eb0575080511580613eb05750808060200190516020811015613ead57600080fd5b50515b613f01576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613f545780518252601f199092019160209182019101613f35565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613fb6576040519150601f19603f3d011682016040523d82523d6000602084013e613fbb565b606091505b5050905080613ffb5760405162461bcd60e51b8152600401808060200182810382526023815260200180614f236023913960400191505060405180910390fd5b505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061409a5780518252601f19909201916020918201910161407b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146140fc576040519150601f19603f3d011682016040523d82523d6000602084013e614101565b606091505b509150915081801561412f57508051158061412f575080806020019051602081101561412c57600080fd5b50515b61416a5760405162461bcd60e51b8152600401808060200182810382526024815260200180614f686024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156144af5760008084838151811061419057fe5b60200260200101518584600101815181106141a757fe5b60200260200101519150915060007f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663544caa5684846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050604080518083038186803b15801561423257600080fd5b505afa158015614246573d6000803e3d6000fd5b505050506040513d604081101561425c57600080fd5b5051875190915060009088906001870190811061427557fe5b60209081029190910101516001549091506001600160a01b031615614325576001546040805163152cf14360e31b81523360048201526001600160a01b0387811660248301528681166044830152606482018590529151919092169163a9678a189160848083019260209291908290030181600087803b1580156142f857600080fd5b505af115801561430c573d6000803e3d6000fd5b505050506040513d602081101561432257600080fd5b50505b600080836001600160a01b0316866001600160a01b0316146143495782600061434d565b6000835b91509150600060028a510388106143645788614384565b614384868b8a6002018151811061437757fe5b602002602001015161297b565b9050614390878761297b565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156143cd576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561443557818101518382015260200161441d565b50505050905090810190601f1680156144625780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561448457600080fd5b505af1158015614498573d6000803e3d6000fd5b505060019099019850614175975050505050505050565b50505050565b3390565b60005b6001835103811015613ffb576000808483815181106144d757fe5b60200260200101518584600101815181106144ee57fe5b60200260200101519150915060007f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663544caa5684846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050604080518083038186803b15801561457957600080fd5b505afa15801561458d573d6000803e3d6000fd5b505050506040513d60408110156145a357600080fd5b5051905060006145b3848461297b565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156145f457600080fd5b505afa158015614608573d6000803e3d6000fd5b505050506040513d606081101561461e57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a81169089161461465b57828461465e565b83835b915091506146b3828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611ec957600080fd5b95507f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663054d50d48784846040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561472957600080fd5b505afa15801561473d573d6000803e3d6000fd5b505050506040513d602081101561475357600080fd5b50516001549095506001600160a01b031615935061480092505050576001546040805163152cf14360e31b81523360048201526001600160a01b0389811660248301528881166044830152606482018590529151919092169163a9678a189160848083019260209291908290030181600087803b1580156147d357600080fd5b505af11580156147e7573d6000803e3d6000fd5b505050506040513d60208110156147fd57600080fd5b50505b600080856001600160a01b0316886001600160a01b03161461482457826000614828565b6000835b91509150600060028c51038a1061483f578a614852565b614852888d8c6002018151811061437757fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156148f55781810151838201526020016148dd565b50505050905090810190601f1680156149225780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561494457600080fd5b505af1158015614958573d6000803e3d6000fd5b50506001909b019a506144bc9950505050505050505050565b60006149b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614df9565b9392505050565b60008060006001600160a01b03167f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663e6a439058a8a6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015614a4657600080fd5b505afa158015614a5a573d6000803e3d6000fd5b505050506040513d6020811015614a7057600080fd5b50516001600160a01b03161415614b2e577f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663c9c6539689896040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b158015614b0157600080fd5b505af1158015614b15573d6000803e3d6000fd5b505050506040513d6020811015614b2b57600080fd5b50505b6000807f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663d52bb6f48b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050604080518083038186803b158015614bae57600080fd5b505afa158015614bc2573d6000803e3d6000fd5b505050506040513d6040811015614bd857600080fd5b508051602090910151909250905081158015614bf2575080155b15614c0257879350869250614dec565b60007f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663ad615dec8a85856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015614c7857600080fd5b505afa158015614c8c573d6000803e3d6000fd5b505050506040513d6020811015614ca257600080fd5b50519050878111614cf75785811015614cec5760405162461bcd60e51b8152600401808060200182810382526022815260200180614f016022913960400191505060405180910390fd5b889450925082614dea565b60007f000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129416001600160a01b031663ad615dec8a85876040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b158015614d6d57600080fd5b505afa158015614d81573d6000803e3d6000fd5b505050506040513d6020811015614d9757600080fd5b5051905089811115614da557fe5b87811015614de45760405162461bcd60e51b8152600401808060200182810382526022815260200180614f466022913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008184841115614e885760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614e4d578181015183820152602001614e35565b50505050905090810190601f168015614e7a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe5a65627261526f757465723a204558434553534956455f494e5055545f414d4f554e544f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735a65627261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545a65627261526f757465723a20494e53554646494349454e545f425f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c45445a65627261526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220036ce1f974761c7d9387307d45fd5b4453461d056657afbf95d65975ae4ba57964736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a63eb44c67813cad20a9ae654641ddc9184129410000000000000000000000005300000000000000000000000000000000000004
-----Decoded View---------------
Arg [0] : _factory (address): 0xa63eb44c67813cad20A9aE654641ddc918412941
Arg [1] : _WETH (address): 0x5300000000000000000000000000000000000004
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a63eb44c67813cad20a9ae654641ddc918412941
Arg [1] : 0000000000000000000000005300000000000000000000000000000000000004
Deployed Bytecode Sourcemap
340:17855:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;841:10;-1:-1:-1;;;;;855:4:11;841:18;;834:26;;;;340:17855;;;;;5070:653;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5070:653:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17347:219;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17347:219:11;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11902:777;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11902:777:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11902:777:11;;;;;;;;;;;;-1:-1:-1;11902:777:11;-1:-1:-1;;;;;;11902:777:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17997:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17997:195:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17997:195:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17997:195:11;;-1:-1:-1;17997:195:11;;-1:-1:-1;;;;;17997:195:11:i;5729:633::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5729:633:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9358:582::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9358:582:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9358:582:11;;;;;;;;;;;;-1:-1:-1;9358:582:11;-1:-1:-1;;;;;;9358:582:11;;;;;;;;:::i;11141:755::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11141:755:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11141:755:11;;;;;;;;;;;;-1:-1:-1;11141:755:11;-1:-1:-1;;;;;;11141:755:11;;;;;;;;:::i;516:34::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;516:34:11;;;;;;;;;;;;;;1087:104;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1087:104:11;-1:-1:-1;;;;;1087:104:11;;:::i;7756:673::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7756:673:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14877:668::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14877:668:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14877:668:11;;;;;;;;;;;;-1:-1:-1;14877:668:11;-1:-1:-1;;;;;;14877:668:11;;;;;;;;:::i;1706:145:1:-;;;;;;;;;;;;;:::i;16332:772:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16332:772:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16332:772:11;;;;;;;;;;;;-1:-1:-1;16332:772:11;-1:-1:-1;;;;;;16332:772:11;;;;;;;;:::i;10512:623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10512:623:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10512:623:11;;;;;;;;;;;;-1:-1:-1;10512:623:11;-1:-1:-1;;;;;;10512:623:11;;;;;;;;:::i;17572:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17572:218:11;;;;;;;;;;;;:::i;9946:560::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9946:560:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9946:560:11;;;;;;;;;;;;-1:-1:-1;9946:560:11;-1:-1:-1;;;;;;9946:560:11;;;;;;;;:::i;1083:77:1:-;;;;;;;;;;;;;:::i;928:153:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;928:153:11;;;;;;;;;;:::i;472:38::-;;;;;;;;;;;;;:::i;17145:196::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17145:196:11;;;;;;;;;;;;:::i;7070:680::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7070:680:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15551:775::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15551:775:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15551:775:11;;;;;;;;;;;;-1:-1:-1;15551:775:11;-1:-1:-1;;;;;;15551:775:11;;;;;;;;:::i;4251:813::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4251:813:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;425:41::-;;;;;;;;;;;;;:::i;17796:195::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17796:195:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17796:195:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17796:195:11;;-1:-1:-1;17796:195:11;;-1:-1:-1;;;;;17796:195:11:i;6368:626::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6368:626:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2590:693::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2590:693:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2000:240:1;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2000:240:1;-1:-1:-1;;;;;2000:240:1;;:::i;3289:922:11:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3289:922:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12685:734::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12685:734:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12685:734:11;;;;;;;;;;;;-1:-1:-1;12685:734:11;-1:-1:-1;;;;;;12685:734:11;;;;;;;;:::i;5070:653::-;5300:16;5318:14;5281:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;5371:188:::1;5400:5;5419:4;5437:9;5460:14;5488:12;5522:4;5541:8;5371:15;:188::i;:::-;5344:215:::0;;-1:-1:-1;5344:215:11;-1:-1:-1;5569:51:11::1;5597:5:::0;5604:2;5344:215;5569:27:::1;:51::i;:::-;5636:4;-1:-1:-1::0;;;;;5630:20:11::1;;5651:9;5630:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5671:45;5702:2;5706:9;5671:30;:45::i;:::-;5070:653:::0;;;;;;;;;;:::o;17347:219::-;17456:17;17505:7;-1:-1:-1;;;;;17491:35:11;;17527:8;17537:9;17548:10;17491:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17491:68:11;;17347:219;-1:-1:-1;;;;17347:219:11:o;11902:777::-;12091:21;12068:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;12161:4:11::1;12136:29;:4:::0;;-1:-1:-1;;12141:15:11;;12136:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;12136:21:11::1;-1:-1:-1::0;;;;;12136:29:11::1;;12128:67;;;::::0;;-1:-1:-1;;;12128:67:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12215:52;::::0;;-1:-1:-1;;;12215:52:11;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12229:7:11::1;12215:36;::::0;::::1;::::0;12252:8;;12262:4;;;;12215:52;;12262:4;12215:52:::1;::::0;::::1;::::0;12262:4;12215:52;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;12215:52:11::1;::::0;::::1;;::::0;::::1;::::0;::::1;;;;;::::0;::::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;12215:52:11::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;12215:52:11::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;12215:52:11;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;12205:62;;12316:12;12285:7;12310:1;12293:7;:14;:18;12285:27;;;;;;;;;;;;;;:43;;12277:95;;;;-1:-1:-1::0;;;12277:95:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12382:113;12427:4;;12432:1;12427:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;12427:7:11::1;12436:10;12448:25;12456:4;;12461:1;12456:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;12456:7:11::1;12465:4;;12470:1;12465:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;12465:7:11::1;12448;:25::i;:::-;12475:7;12483:1;12475:10;;;;;;;;;;;;;;12382:31;:113::i;:::-;12505:35;12511:7;12520:4;;12505:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;12534:4:11::1;::::0;-1:-1:-1;12505:5:11::1;::::0;-1:-1:-1;;12505:35:11:i:1;:::-;12556:4;-1:-1:-1::0;;;;;12550:20:11::1;;12571:7;12596:1;12579:7;:14;:18;12571:27;;;;;;;;;;;;;;12550:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12609:63;12640:2;12644:7;12669:1;12652:7;:14;:18;12644:27;;;;;;;;;;;;;;12609:30;:63::i;:::-;11902:777:::0;;;;;;;;;:::o;17997:195::-;18133:52;;;-1:-1:-1;;;18133:52:11;;;;;;;;;;;;;;;;;;;;;;18091:24;;-1:-1:-1;;;;;18147:7:11;18133:35;;;;18169:9;;18180:4;;18133:52;;;;;;;;;;;;;;-1:-1:-1;18133:52:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18133:52:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18133:52:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18133:52:11;;;;;;;;;;;;-1:-1:-1;18133:52:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18126:59;;17997:195;;;;:::o;5729:633::-;6026:12;6040;6064;6079:23;6087:6;6095;6079:7;:23::i;:::-;6064:38;;6112:10;6125;:33;;6149:9;6125:33;;;-1:-1:-1;;6125:33:11;6168:76;;;-1:-1:-1;;;6168:76:11;;6192:10;6168:76;;;;6212:4;6168:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6112:46;;-1:-1:-1;;;;;;6168:23:11;;;;;:76;;;;;-1:-1:-1;;6168:76:11;;;;;;;;-1:-1:-1;6168:23:11;:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6275:80;6291:6;6299;6307:9;6318:10;6330;6342:2;6346:8;6275:15;:80::i;:::-;6254:101;;;;;;;;5729:633;;;;;;;;;;;;;;;;:::o;9358:582::-;9576:21;9557:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;9619:52:::1;::::0;;-1:-1:-1;;;9619:52:11;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;9633:7:11::1;9619:36;::::0;::::1;::::0;9656:8;;9666:4;;;;9619:52;;9666:4;9619:52:::1;::::0;::::1;::::0;9666:4;9619:52;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;9619:52:11::1;::::0;::::1;;::::0;::::1;::::0;::::1;;;;;::::0;::::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;9619:52:11::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;9619:52:11::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;9619:52:11;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;9609:62;;9720:12;9689:7;9714:1;9697:7;:14;:18;9689:27;;;;;;;;;;;;;;:43;;9681:95;;;;-1:-1:-1::0;;;9681:95:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9786:113;9831:4;;9836:1;9831:7;;;;;;9786:113;9909:24;9915:7;9924:4;;9909:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9930:2:11;;-1:-1:-1;9909:5:11::1;::::0;-1:-1:-1;;9909:24:11:i:1;11141:755::-:0;11330:21;11307:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;11400:4:11::1;11375:29;:4:::0;;-1:-1:-1;;11380:15:11;;11375:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;11375:21:11::1;-1:-1:-1::0;;;;;11375:29:11::1;;11367:67;;;::::0;;-1:-1:-1;;;11367:67:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;11454:52;::::0;;-1:-1:-1;;;11454:52:11;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11468:7:11::1;11454:35;::::0;::::1;::::0;11490:9;;11501:4;;;;11454:52;;11501:4;11454:52:::1;::::0;::::1;::::0;11501:4;11454:52;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;11454:52:11::1;::::0;::::1;;::::0;::::1;::::0;::::1;;;;;::::0;::::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;11454:52:11::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;11454:52:11::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;11454:52:11;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;11444:62;;11538:11;11524:7;11532:1;11524:10;;;;;;;;;;;;;;:25;;11516:73;;;;-1:-1:-1::0;;;11516:73:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;516:34:::0;;;-1:-1:-1;;;;;516:34:11;;:::o;1087:104::-;1297:12:1;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:1;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1159:10:11::1;:25:::0;;-1:-1:-1;;1159:25:11::1;-1:-1:-1::0;;;;;1159:25:11;;;::::1;::::0;;;::::1;::::0;;1087:104::o;7756:673::-;8066:14;8092:12;8107:20;8115:5;8122:4;8107:7;:20::i;:::-;8092:35;;8137:10;8150;:33;;8174:9;8150:33;;;-1:-1:-1;;8150:33:11;8193:76;;;-1:-1:-1;;;8193:76:11;;8217:10;8193:76;;;;8237:4;8193:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8137:46;;-1:-1:-1;;;;;;8193:23:11;;;;;:76;;;;;-1:-1:-1;;8193:76:11;;;;;;;;-1:-1:-1;8193:23:11;:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8291:131;8352:5;8359:9;8370:14;8386:12;8400:2;8404:8;8291:47;:131::i;:::-;8279:143;7756:673;-1:-1:-1;;;;;;;;;;;;;7756:673:11:o;14877:668::-;15105:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;15125:111:::1;15170:4;;15175:1;15170:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;15170:7:11::1;15179:10;15191:25;15199:4;;15204:1;15199:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;15199:7:11::1;15208:4;;15213:1;15208:7;;;;;;15191:25;15218:8;15125:31;:111::i;:::-;15246:18;15274:4:::0;;-1:-1:-1;;15279:15:11;;15274:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;15274:21:11::1;-1:-1:-1::0;;;;;15267:39:11::1;;15307:2;15267:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;15267:43:11::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15267:43:11;15320:44:::1;::::0;;15267:43:::1;15320:44:::0;;::::1;::::0;;;;;;;;;;;15267:43;;-1:-1:-1;15320:44:11::1;::::0;;;15355:4;;;;;;15320:44;::::1;::::0;15355:4;;15320:44;15355:4;15320:44;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;15361:2:11;;-1:-1:-1;15320:34:11::1;::::0;-1:-1:-1;;15320:44:11:i:1;:::-;15461:12:::0;15395:62:::1;15443:13:::0;15402:4;;-1:-1:-1;;15407:15:11;;15402:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;15402:21:11::1;-1:-1:-1::0;;;;;15395:39:11::1;;15435:2;15395:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;15395:43:11::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15395:43:11;;:47:::1;:62::i;:::-;:78;;15374:164;;;;-1:-1:-1::0;;;15374:164:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:1;14877:668:::0;;;;;;;:::o;1706:145:1:-;1297:12;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:1;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1812:1:::1;1796:6:::0;;1775:40:::1;::::0;-1:-1:-1;;;;;1796:6:1;;::::1;::::0;1775:40:::1;::::0;1812:1;;1775:40:::1;1842:1;1825:19:::0;;-1:-1:-1;;1825:19:1::1;::::0;;1706:145::o;16332:772:11:-;16573:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;16630:4:11::1;16605:29;:4:::0;;-1:-1:-1;;16610:15:11;;16605:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;16605:21:11::1;-1:-1:-1::0;;;;;16605:29:11::1;;16597:67;;;::::0;;-1:-1:-1;;;16597:67:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16674:111;16719:4;;16724:1;16719:7;;;;;;16674:111;16795:55;16830:4;;16795:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;16844:4:11::1;::::0;-1:-1:-1;16795:34:11::1;::::0;-1:-1:-1;;16795:55:11:i:1;:::-;16860:14;16884:4;-1:-1:-1::0;;;;;16877:22:11::1;;16908:4;16877:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;16877:37:11::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16877:37:11;;-1:-1:-1;16932:25:11;;::::1;;16924:77;;;;-1:-1:-1::0;;;16924:77:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17017:4;-1:-1:-1::0;;;;;17011:20:11::1;;17032:9;17011:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17052:45;17083:2;17087:9;17052:30;:45::i;10512:623::-:0;10698:21;10675:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;10754:4:::1;-1:-1:-1::0;;;;;10743:15:11::1;:4;;10748:1;10743:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;10743:7:11::1;-1:-1:-1::0;;;;;10743:15:11::1;;10735:53;;;::::0;;-1:-1:-1;;;10735:53:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10808;::::0;;-1:-1:-1;;;10808:53:11;;10845:9:::1;10808:53;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10822:7:11::1;10808:36;::::0;::::1;::::0;10856:4;;;;10808:53;;;;10856:4;10808:53:::1;::::0;::::1;::::0;10856:4;10808:53;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;10808:53:11::1;::::0;::::1;;::::0;::::1;::::0;::::1;;;;;::::0;::::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;10808:53:11::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;10808:53:11::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;10808:53:11;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;10798:63;;10910:12;10879:7;10904:1;10887:7;:14;:18;10879:27;;;;;;;;;;;;;;:43;;10871:95;;;;-1:-1:-1::0;;;10871:95:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10982:4;-1:-1:-1::0;;;;;10976:19:11::1;;11004:7;11012:1;11004:10;;;;;;;;;;;;;;10976:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;11040:4;-1:-1:-1::0;;;;;11034:20:11::1;;11055:25;11063:4;;11068:1;11063:7;;;;;;11055:25;11082:7;11090:1;11082:10;;;;;;;;;;;;;;11034:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;11034:59:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11034:59:11;11027:67:::1;;;;11104:24;11110:7;11119:4;;11104:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;11125:2:11;;-1:-1:-1;11104:5:11::1;::::0;-1:-1:-1;;11104:24:11:i:1;:::-;10512:623:::0;;;;;;;;:::o;17572:218::-;17681:16;17729:7;-1:-1:-1;;;;;17715:34:11;;17750:9;17761;17772:10;17715:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9946:560;10164:21;10145:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;10207:52:::1;::::0;;-1:-1:-1;;;10207:52:11;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10221:7:11::1;10207:35;::::0;::::1;::::0;10243:9;;10254:4;;;;10207:52;;10254:4;10207:52:::1;::::0;::::1;::::0;10254:4;10207:52;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;10207:52:11::1;::::0;::::1;;::::0;::::1;::::0;::::1;;;;;::::0;::::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;10207:52:11::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;10207:52:11::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;10207:52:11;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;10197:62;;10291:11;10277:7;10285:1;10277:10;;;;;;;;;;;;;;:25;;10269:73;;;;-1:-1:-1::0;;;10269:73:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1083:77:1::0;1121:7;1147:6;-1:-1:-1;;;;;1147:6:1;1083:77;:::o;928:153:11:-;998:12;1042:7;-1:-1:-1;;;;;1028:30:11;;1059:6;1067;1028:46;;;;;;;;;;;;;-1:-1:-1;;;;;1028:46:11;;;;;;-1:-1:-1;;;;;1028:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1028:46:11;;928:153;-1:-1:-1;;;928:153:11:o;472:38::-;;;:::o;17145:196::-;17243:15;17291:7;-1:-1:-1;;;;;17277:28:11;;17306:7;17315:8;17325;17277:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7070:680;7329:14;7310:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;7371:188:::1;7400:5;7419:4;7437:9;7460:14;7488:12;7522:4;7541:8;7371:15;:188::i;:::-;7355:204;;;;;;7569:78;7597:5;7604:2;7615:5;-1:-1:-1::0;;;;;7608:23:11::1;;7640:4;7608:38;;;;;;;;;;;;;-1:-1:-1::0;;;;;7608:38:11::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;7608:38:11;7569:27:::1;:78::i;:::-;7663:4;-1:-1:-1::0;;;;;7657:20:11::1;;7678:9;7657:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7698:45;7729:2;7733:9;7698:30;:45::i;15551:775::-:0;15781:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;15824:4:::1;-1:-1:-1::0;;;;;15813:15:11::1;:4;;15818:1;15813:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;15813:7:11::1;-1:-1:-1::0;;;;;15813:15:11::1;;15805:53;;;::::0;;-1:-1:-1;;;15805:53:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15868:13;15884:9;15868:25;;15909:4;-1:-1:-1::0;;;;;15903:19:11::1;;15931:8;15903:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;15965:4;-1:-1:-1::0;;;;;15959:20:11::1;;15980:25;15988:4;;15993:1;15988:7;;;;;;15980:25;16007:8;15959:57;;;;;;;;;;;;;-1:-1:-1::0;;;;;15959:57:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15959:57:11;15952:65:::1;;;;16027:18;16055:4:::0;;-1:-1:-1;;16060:15:11;;16055:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;16055:21:11::1;-1:-1:-1::0;;;;;16048:39:11::1;;16088:2;16048:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;16048:43:11::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16048:43:11;16101:44:::1;::::0;;16048:43:::1;16101:44:::0;;::::1;::::0;;;;;;;;;;;16048:43;;-1:-1:-1;16101:44:11::1;::::0;;;16136:4;;;;;;16101:44;::::1;::::0;16136:4;;16101:44;16136:4;16101:44;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;16142:2:11;;-1:-1:-1;16101:34:11::1;::::0;-1:-1:-1;;16101:44:11:i:1;:::-;16242:12:::0;16176:62:::1;16224:13:::0;16183:4;;-1:-1:-1;;16188:15:11;;16183:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;16183:21:11::1;-1:-1:-1::0;;;;;16176:39:11::1;;16216:2;16176:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;16176:43:11::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;4251:813:::0;4497:12;4511;4478:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;4535:12:::1;4550:23;4558:6;4566;4550:7;:23::i;:::-;4583:58;::::0;;-1:-1:-1;;;4583:58:11;;4613:10:::1;4583:58;::::0;::::1;::::0;-1:-1:-1;;;;;4583:29:11;::::1;:58:::0;;;;;;;;;;;;;;4535:38;;-1:-1:-1;4583:29:11;;::::1;::::0;:58;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;4583:29:11;:58;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;4708:25:11::1;::::0;;;;;-1:-1:-1;;;;;4708:25:11;;::::1;;::::0;::::1;::::0;;;4678:12:::1;::::0;;;4708:21;;::::1;::::0;::::1;::::0;:25;;;;;;;;;;;4678:12;4708:21;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;4677:56;;;;4744:14;4777:7;-1:-1:-1::0;;;;;4763:33:11::1;;4797:6;4805;4763:49;;;;;;;;;;;;;-1:-1:-1::0;;;;;4763:49:11::1;;;;;;-1:-1:-1::0;;;;;4763:49:11::1;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4763:49:11;;-1:-1:-1;;;;;;4843:16:11;;::::1;::::0;;::::1;;:58;;4884:7;4893;4843:58;;;4863:7;4872;4843:58;4822:79:::0;;-1:-1:-1;4822:79:11;-1:-1:-1;4919:21:11;;::::1;;4911:68;;;;-1:-1:-1::0;;;4911:68:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5008:10;4997:7;:21;;4989:68;;;;-1:-1:-1::0;;;4989:68:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:1;;;;4251:813:::0;;;;;;;;;;;:::o;425:41::-;;;:::o;17796:195::-;17932:52;;;-1:-1:-1;;;17932:52:11;;;;;;;;;;;;;;;;;;;;;;17890:24;;17946:7;-1:-1:-1;;;;;17932:36:11;;;;:52;;;;;;;;;;;;;;;;;;-1:-1:-1;17932:52:11;;;;;;;;;;;;;;;;6368:626;6649:16;6667:14;6693:12;6708:20;6716:5;6723:4;6708:7;:20::i;:::-;6693:35;;6738:10;6751;:33;;6775:9;6751:33;;;-1:-1:-1;;6751:33:11;6794:76;;;-1:-1:-1;;;6794:76:11;;6818:10;6794:76;;;;6838:4;6794:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:46;;-1:-1:-1;;;;;;6794:23:11;;;;;:76;;;;;-1:-1:-1;;6794:76:11;;;;;;;;-1:-1:-1;6794:23:11;:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6907:80;6926:5;6933:9;6944:14;6960:12;6974:2;6978:8;6907:18;:80::i;:::-;6880:107;;;;-1:-1:-1;6368:626:11;-1:-1:-1;;;;;;;;;;;;;6368:626:11:o;2590:693::-;2869:12;2883;2897:14;2850:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;2944:85:::1;2958:6;2966;2974:14;2990;3006:10;3018;2944:13;:85::i;:::-;2923:106:::0;;-1:-1:-1;2923:106:11;-1:-1:-1;3039:12:11::1;3054:23;3062:6:::0;3070;3054:7:::1;:23::i;:::-;3039:38;;3087:66;3119:6;3127:10;3139:4;3145:7;3087:31;:66::i;:::-;3163;3195:6;3203:10;3215:4;3221:7;3163:31;:66::i;:::-;3262:4;-1:-1:-1::0;;;;;3251:21:11::1;;3273:2;3251:25;;;;;;;;;;;;;-1:-1:-1::0;;;;;3251:25:11::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;3251:25:11;2590:693;;;;-1:-1:-1;3251:25:11;;-1:-1:-1;2590:693:11;;-1:-1:-1;;;;;;;;;2590:693:11:o;2000:240:1:-;1297:12;:10;:12::i;:::-;1287:6;;-1:-1:-1;;;;;1287:6:1;;;:22;;;1279:67;;;;;-1:-1:-1;;;1279:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2088:22:1;::::1;2080:73;;;;-1:-1:-1::0;;;2080:73:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2189:6;::::0;;2168:38:::1;::::0;-1:-1:-1;;;;;2168:38:1;;::::1;::::0;2189:6;::::1;::::0;2168:38:::1;::::0;::::1;2216:6;:17:::0;;-1:-1:-1;;2216:17:1::1;-1:-1:-1::0;;;;;2216:17:1;;;::::1;::::0;;;::::1;::::0;;2000:240::o;3289:922:11:-;3535:16;3553:14;3569;3516:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;3622:169:::1;3649:5;3668:4;3686:18;3718:9;3741:14;3769:12;3622:13;:169::i;:::-;3595:196:::0;;-1:-1:-1;3595:196:11;-1:-1:-1;3801:12:11::1;3816:20;3824:5:::0;3831:4:::1;3816:7;:20::i;:::-;3801:35;;3846:69;3878:5;3885:10;3897:4;3903:11;3846:31;:69::i;:::-;3931:4;-1:-1:-1::0;;;;;3925:19:11::1;;3953:9;3925:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;3988:4;-1:-1:-1::0;;;;;3982:20:11::1;;4003:4;4009:9;3982:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;3982:37:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;3982:37:11;3975:45:::1;;;;4053:4;-1:-1:-1::0;;;;;4042:21:11::1;;4064:2;4042:25;;;;;;;;;;;;;-1:-1:-1::0;;;;;4042:25:11::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4042:25:11;;-1:-1:-1;4116:9:11::1;:21:::0;-1:-1:-1;4112:92:11::1;;;4139:65;4170:10;4194:9;4182;:21;4139:30;:65::i;:::-;668:1;3289:922:::0;;;;;;;;;;;:::o;12685:734::-;12868:21;12845:8;618:15;606:8;:27;;598:60;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;-1:-1:-1;;;598:60:11;;;;;;;;;;;;;;;12924:4:::1;-1:-1:-1::0;;;;;12913:15:11::1;:4;;12918:1;12913:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;12913:7:11::1;-1:-1:-1::0;;;;;12913:15:11::1;;12905:53;;;::::0;;-1:-1:-1;;;12905:53:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12978:52;::::0;;-1:-1:-1;;;12978:52:11;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12992:7:11::1;12978:35;::::0;::::1;::::0;13014:9;;13025:4;;;;12978:52;;13025:4;12978:52:::1;::::0;::::1;::::0;13025:4;12978:52;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;12978:52:11::1;::::0;::::1;;::::0;::::1;::::0;::::1;;;;;::::0;::::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;12978:52:11::1;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;;;;;;;;;;-1:-1:-1::0;;;12978:52:11::1;;;;;;;::::0;::::1;;::::0;;-1:-1:-1;12978:52:11;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;12968:62;;13062:9;13048:7;13056:1;13048:10;;;;;;;;;;;;;;:23;;13040:71;;;;-1:-1:-1::0;;;13040:71:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13127:4;-1:-1:-1::0;;;;;13121:19:11::1;;13149:7;13157:1;13149:10;;;;;;;;;;;;;;13121:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;13185:4;-1:-1:-1::0;;;;;13179:20:11::1;;13200:25;13208:4;;13213:1;13208:7;;;;;;13200:25;13227:7;13235:1;13227:10;;;;;;;;;;;;;;13179:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;13179:59:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13179:59:11;13172:67:::1;;;;13249:24;13255:7;13264:4;;13249:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;13270:2:11;;-1:-1:-1;13249:5:11::1;::::0;-1:-1:-1;;13249:24:11:i:1;:::-;13334:7;13342:1;13334:10;;;;;;;;;;;;;;13322:9;:22;13318:94;;;13346:66;13377:10;13401:7;13409:1;13401:10;;;;;;;;;;;;;;13389:9;:22;13346:30;:66::i;18698:357::-:0;18891:45;;;-1:-1:-1;;;;;18891:45:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18880:57;;;;18845:12;;18859:17;;18880:10;;;;18891:45;18880:57;;;18891:45;18880:57;;18891:45;18880:57;;;;;;;;;;-1:-1:-1;;18880:57:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18844:93;;;;18955:7;:57;;;;-1:-1:-1;18967:11:11;;:16;;:44;;;18998:4;18987:24;;;;;;;;;;;;;;;-1:-1:-1;18987:24:11;18967:44;18947:101;;;;;-1:-1:-1;;;18947:101:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;18698:357;;;;;:::o;19465:194::-;19574:12;;;19534;19574;;;;;;;;;-1:-1:-1;;;;;19551:7:11;;;19567:5;;19551:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19551:36:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19533:54;;;19605:7;19597:55;;;;-1:-1:-1;;;19597:55:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19465:194;;;:::o;19061:398::-;19284:51;;;-1:-1:-1;;;;;19284:51:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19284:51:11;;;19273:63;;;;19238:12;;19252:17;;19273:10;;;;19284:51;19273:63;;;19284:51;19273:63;;19284:51;19273:63;;;;;;;;;;-1:-1:-1;;19273:63:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19237:99;;;;19354:7;:57;;;;-1:-1:-1;19366:11:11;;:16;;:44;;;19397:4;19386:24;;;;;;;;;;;;;;;-1:-1:-1;19386:24:11;19366:44;19346:106;;;;-1:-1:-1;;;19346:106:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19061:398;;;;;;:::o;8536:816::-;8642:6;8637:709;8668:1;8654:4;:11;:15;8650:1;:19;8637:709;;;8691:13;8706:14;8725:4;8730:1;8725:7;;;;;;;;;;;;;;8734:4;8739:1;8743;8739:5;8734:11;;;;;;;;;;;;;;8690:56;;;;8761:14;8794:7;-1:-1:-1;;;;;8780:33:11;;8814:5;8821:6;8780:48;;;;;;;;;;;;;-1:-1:-1;;;;;8780:48:11;;;;;;-1:-1:-1;;;;;8780:48:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8780:48:11;8859:14;;8780:48;;-1:-1:-1;8842:14:11;;8859:7;;8871:1;8867:5;;;8859:14;;;;;;;;;;;;;;;;8891:10;;8859:14;;-1:-1:-1;;;;;;8891:10:11;:24;8887:129;;8947:10;;8935:66;;;-1:-1:-1;;;8935:66:11;;8964:10;8935:66;;;;-1:-1:-1;;;;;8935:66:11;;;;;;;;;;;;;;;;;;;;;;8947:10;;;;;8935:28;;:66;;;;;;;;;;;;;;8947:10;;8935:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8887:129:11;9030:15;9047;9075:6;-1:-1:-1;;;;;9066:15:11;:5;-1:-1:-1;;;;;9066:15:11;;:61;;9108:9;9124:1;9066:61;;;9090:1;9094:9;9066:61;9029:98;;;;9141:10;9172:1;9158:4;:11;:15;9154:1;:19;:56;;9207:3;9154:56;;;9176:28;9184:6;9192:4;9197:1;9201;9197:5;9192:11;;;;;;;;;;;;;;9176:7;:28::i;:::-;9141:69;;9235:22;9243:5;9250:6;9235:7;:22::i;:::-;-1:-1:-1;;;;;9224:39:11;;9281:10;9293;9305:2;9319:1;9309:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9309:12:11;;9224:111;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9224:111:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8671:3:11;;;;;-1:-1:-1;8637:709:11;;-1:-1:-1;;;;;;;;8637:709:11;;;8536:816;;;:::o;598:104:0:-;685:10;598:104;:::o;13562:1309:11:-;13674:6;13669:1196;13700:1;13686:4;:11;:15;13682:1;:19;13669:1196;;;13723:13;13738:14;13757:4;13762:1;13757:7;;;;;;;;;;;;;;13766:4;13771:1;13775;13771:5;13766:11;;;;;;;;;;;;;;13722:56;;;;13793:14;13826:7;-1:-1:-1;;;;;13812:33:11;;13846:5;13853:6;13812:48;;;;;;;;;;;;;-1:-1:-1;;;;;13812:48:11;;;;;;-1:-1:-1;;;;;13812:48:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13812:48:11;;-1:-1:-1;13874:15:11;13903:22;13911:5;13918:6;13903:7;:22::i;:::-;13874:52;;13940:16;13970:17;14059:13;14074;14092:4;-1:-1:-1;;;;;14092:16:11;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14092:18:11;;;;;;;14058:52;;;;;-1:-1:-1;14058:52:11;;-1:-1:-1;14129:17:11;;-1:-1:-1;;;;;14170:15:11;;;;;;;:61;;14212:8;14222;14170:61;;;14189:8;14199;14170:61;14128:103;;;;14263:56;14306:12;14270:5;-1:-1:-1;;;;;14263:23:11;;14295:4;14263:38;;;;;;;;;;;;;-1:-1:-1;;;;;14263:38:11;;;;;;;;;;;;;;;;;;;;;;;;;;:56;14249:70;;14366:7;-1:-1:-1;;;;;14352:35:11;;14388:11;14401:12;14415:13;14352:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14352:77:11;14461:10;;14352:77;;-1:-1:-1;;;;;;14461:10:11;:24;;-1:-1:-1;14457:132:11;;-1:-1:-1;;;14457:132:11;14517:10;;14505:69;;;-1:-1:-1;;;14505:69:11;;14534:10;14505:69;;;;-1:-1:-1;;;;;14505:69:11;;;;;;;;;;;;;;;;;;;;;;14517:10;;;;;14505:28;;:69;;;;;;;;;;;;;;14517:10;;14505:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14457:132:11;14603:15;14620;14648:6;-1:-1:-1;;;;;14639:15:11;:5;-1:-1:-1;;;;;14639:15:11;;:67;;14684:12;14703:1;14639:67;;;14663:1;14667:12;14639:67;14602:104;;;;14720:10;14751:1;14737:4;:11;:15;14733:1;:19;:56;;14786:3;14733:56;;;14755:28;14763:6;14771:4;14776:1;14780;14776:5;14771:11;;;;;;;14755:28;14841:12;;;14851:1;14841:12;;;;;;;;;;14803:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;14803:51:11;;;;;;;;;;;;;;;;;;;;;;14720:69;;-1:-1:-1;14803:9:11;;;;;;14813:10;;14825;;14720:69;;14841:12;;14803:51;;;;;;;;14841:12;;14803:51;;;;14841:12;;14803:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13703:3:11;;;;;-1:-1:-1;13669:1196:11;;-1:-1:-1;;;;;;;;;;13669:1196:11;465:134:10;523:7;549:43;553:1;556;549:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;542:50;465:134;-1:-1:-1;;;465:134:10:o;1228:1356:11:-;1439:12;1453;1590:1;-1:-1:-1;;;;;1532:60:11;1546:7;-1:-1:-1;;;;;1532:30:11;;1563:6;1571;1532:46;;;;;;;;;;;;;-1:-1:-1;;;;;1532:46:11;;;;;;-1:-1:-1;;;;;1532:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1532:46:11;-1:-1:-1;;;;;1532:60:11;;1528:140;;;1622:7;-1:-1:-1;;;;;1608:33:11;;1642:6;1650;1608:49;;;;;;;;;;;;;-1:-1:-1;;;;;1608:49:11;;;;;;-1:-1:-1;;;;;1608:49:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1528:140:11;1678:13;1693;1724:7;-1:-1:-1;;;;;1710:34:11;;1745:6;1753;1710:50;;;;;;;;;;;;;-1:-1:-1;;;;;1710:50:11;;;;;;-1:-1:-1;;;;;1710:50:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1710:50:11;;;;;;;;;-1:-1:-1;1710:50:11;-1:-1:-1;1774:13:11;;:30;;;;-1:-1:-1;1791:13:11;;1774:30;1770:808;;;1842:14;;-1:-1:-1;1858:14:11;;-1:-1:-1;1770:808:11;;;1904:19;1940:7;-1:-1:-1;;;;;1926:28:11;;1955:14;1971:8;1981;1926:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1926:64:11;;-1:-1:-1;2008:32:11;;;2004:564;;2086:10;2068:14;:28;;2060:75;;;;-1:-1:-1;;;2060:75:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2175:14;;-1:-1:-1;2191:14:11;-1:-1:-1;2191:14:11;2004:564;;;2245:19;2281:7;-1:-1:-1;;;;;2267:28:11;;2296:14;2312:8;2322;2267:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2267:64:11;;-1:-1:-1;2356:32:11;;;;2349:40;;;;2433:10;2415:14;:28;;2407:75;;;;-1:-1:-1;;;2407:75:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:14;-1:-1:-1;2538:14:11;;-1:-1:-1;2004:564:11;1770:808;;1228:1356;;;;;;;;;;;:::o;605:187:10:-;691:7;726:12;718:6;;;;710:29;;;;-1:-1:-1;;;710:29:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;761:5:10;;;605:187::o
Swarm Source
ipfs://036ce1f974761c7d9387307d45fd5b4453461d056657afbf95d65975ae4ba579
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.