Source Code
Latest 25 from a total of 2,681 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim All | 20240182 | 462 days ago | IN | 0 ETH | 0.00073465 | ||||
Claim All | 19663860 | 543 days ago | IN | 0 ETH | 0.00150625 | ||||
Claim All | 19632055 | 547 days ago | IN | 0 ETH | 0.00212893 | ||||
Claim All | 19627798 | 548 days ago | IN | 0 ETH | 0.00241569 | ||||
Claim All | 19620170 | 549 days ago | IN | 0 ETH | 0.00144378 | ||||
Claim All | 19620090 | 549 days ago | IN | 0 ETH | 0.00187699 | ||||
Claim All | 19620087 | 549 days ago | IN | 0 ETH | 0.00183993 | ||||
Claim All | 19620059 | 549 days ago | IN | 0 ETH | 0.00157352 | ||||
Claim All | 19620016 | 549 days ago | IN | 0 ETH | 0.0015366 | ||||
Claim All | 19620003 | 549 days ago | IN | 0 ETH | 0.00174382 | ||||
Claim All | 19619978 | 549 days ago | IN | 0 ETH | 0.00181688 | ||||
Claim All | 19619973 | 549 days ago | IN | 0 ETH | 0.00464474 | ||||
Claim All | 19617132 | 549 days ago | IN | 0 ETH | 0.00272399 | ||||
Claim All | 19588048 | 553 days ago | IN | 0 ETH | 0.00206339 | ||||
Claim All | 19584207 | 554 days ago | IN | 0 ETH | 0.00533857 | ||||
Claim All | 19553805 | 558 days ago | IN | 0 ETH | 0.00242154 | ||||
Claim All | 19551123 | 558 days ago | IN | 0 ETH | 0.00248841 | ||||
Claim All | 19534459 | 561 days ago | IN | 0 ETH | 0.00457832 | ||||
Claim All | 19522892 | 562 days ago | IN | 0 ETH | 0.00304748 | ||||
Claim All | 19491024 | 567 days ago | IN | 0 ETH | 0.00469736 | ||||
Claim All | 19458156 | 572 days ago | IN | 0 ETH | 0.00307607 | ||||
Claim All | 19454693 | 572 days ago | IN | 0 ETH | 0.00434128 | ||||
Claim All | 19421225 | 577 days ago | IN | 0 ETH | 0.00700555 | ||||
Claim All | 19416206 | 577 days ago | IN | 0 ETH | 0.00602349 | ||||
Claim All | 19412586 | 578 days ago | IN | 0 ETH | 0.01406695 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 18933019 | 645 days ago | 15.07 ETH | ||||
Transfer | 18712411 | 676 days ago | 2.9 ETH | ||||
Transfer | 18611627 | 690 days ago | 2 ETH | ||||
Transfer | 18611591 | 690 days ago | 32.12 ETH | ||||
Transfer | 18141225 | 756 days ago | 123 ETH | ||||
Transfer | 18111899 | 760 days ago | 124 ETH | ||||
Transfer | 18111883 | 760 days ago | 124 ETH | ||||
Transfer | 18111863 | 760 days ago | 123.8 ETH | ||||
Transfer | 18111842 | 760 days ago | 123.6 ETH | ||||
Transfer | 18111835 | 760 days ago | 123.6 ETH | ||||
Transfer | 18111813 | 760 days ago | 123.6 ETH | ||||
Transfer | 18111791 | 760 days ago | 123 ETH | ||||
Transfer | 18111772 | 760 days ago | 123 ETH | ||||
Transfer | 18111730 | 760 days ago | 116 ETH | ||||
Transfer | 17919177 | 787 days ago | 115 ETH | ||||
Transfer | 17919164 | 787 days ago | 115 ETH | ||||
Transfer | 17919126 | 787 days ago | 115 ETH | ||||
Transfer | 17919111 | 787 days ago | 115 ETH | ||||
Transfer | 17919097 | 787 days ago | 114 ETH | ||||
Transfer | 17770257 | 808 days ago | 101 ETH | ||||
Transfer | 17770242 | 808 days ago | 101 ETH | ||||
Transfer | 17770220 | 808 days ago | 43 ETH | ||||
Transfer | 17711875 | 816 days ago | 0.09580948 ETH | ||||
Transfer | 17697635 | 818 days ago | 89 ETH | ||||
Transfer | 17697632 | 818 days ago | 0.00000008 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
AnarchyPresale
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-14 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); function mint(uint256 amount) external returns (bool); function burn(uint256 amount) external returns (bool); } interface IERC20Permit { function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function nonces(address owner) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function getAmountsOut( uint amountIn, address[] memory path ) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] memory path) external view returns (uint[] memory amounts); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } library Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. function _msgSender() internal view returns (address) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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() { 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 Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface AggregatorInterface { function latestAnswer() external view returns (uint256); } contract AnarchyPresale is Ownable { using SafeERC20 for IERC20; using SafeMath for uint256; AggregatorInterface public constant ethUsdData = AggregatorInterface(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419); AggregatorInterface public constant bnbUsdData = AggregatorInterface(0x14e613AC84a31f709eadbdF89C6CC390fDc9540A); event Buy(address indexed _account, uint256 _tokenAmount, uint256 _phase); event BuyWithBnb(address indexed _account, uint256 _tokenAmount, uint256 _nonce,uint256 _phase); struct Phase { uint256 roundId; uint256 maxTokens; uint256 tokensSold; uint256 fundsRaisedEth; uint256 fundsRaisedUsdt; uint256 fundsRaisedBnb; uint256 tokenPriceInUsd; uint256 claimStart; } struct AddPhase { uint256 roundId; uint256 maxTokens; uint256 tokenPriceInUsd; uint256 claimStart; } struct ClaimableAmount { uint256 roundId; address account; uint256 tokenAmount; } mapping (uint256 => Phase) public phase; mapping (address => mapping(uint256 => uint256)) public deservedAmount; mapping (address => mapping(uint256 => uint256)) public claimedAmount; mapping(uint256 => bool) public isSold; address public constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; address public constant BNB = 0xB8c77482e45F1F44dE1745F52C74426C631bDD52; bool public isWhitelistPresale; address public bnbAdministrator; address public tokenAddress; uint256 private tokenWithDecimals = 1e18; IRouter public router; address private WETH; uint256 public activePhase = 1; bool public isAutoMovePhase = true; uint256 public discountRate = 10; bool public isClaimableActive; modifier onlyBnbAdministrator() { require(owner() == _msgSender() || bnbAdministrator == _msgSender(), "Ownable: caller is not the owner or administrator"); require(phase[activePhase].maxTokens > 0,"Phase is not active or presale ended"); _; } function addPhases(AddPhase[] calldata _addPhase) external onlyOwner { for(uint256 i = 0; i < _addPhase.length ; i++) { phase[_addPhase[i].roundId].roundId = _addPhase[i].roundId; phase[_addPhase[i].roundId].maxTokens = _addPhase[i].maxTokens; phase[_addPhase[i].roundId].tokenPriceInUsd = _addPhase[i].tokenPriceInUsd; phase[_addPhase[i].roundId].claimStart = _addPhase[i].claimStart; } } function getPhases(uint256[] calldata _roundId) public view returns(Phase[] memory){ Phase[] memory _phase = new Phase[](_roundId.length); for(uint256 i = 0 ; i < _roundId.length ; i++) { _phase[i] = phase[_roundId[i]]; } return _phase; } function updatePhaseClaimTime(uint256 _roundId, uint256 _startTime)external onlyOwner{ phase[_roundId].claimStart = _startTime; } function setActivePhase(uint256 _roundId, bool _isAutoPhase) external onlyOwner { activePhase = _roundId; isAutoMovePhase = _isAutoPhase; } function currentTimestamp() public view returns(uint256) { return block.timestamp; } function buyTokensWithEth() public payable { require(phase[activePhase].maxTokens > 0,"Phase is not active"); require(msg.value > 0, "Must send ETH to get tokens"); uint256 ethAmount = msg.value; uint256 tokenAmount = estimatedToken(ethAmount); bool isReachMaxAmount; if(!(phase[activePhase].maxTokens > tokenAmount + phase[activePhase].tokensSold) && isAutoMovePhase){ uint256 tokenAmount2 = phase[activePhase].maxTokens - phase[activePhase].tokensSold; uint newEthAmount = ethAmount.mul(tokenAmount2).div(tokenAmount); uint256 returnAmount = ethAmount.sub(newEthAmount); returnEth(msg.sender, returnAmount); ethAmount = newEthAmount; tokenAmount = tokenAmount2; isReachMaxAmount = true; } phase[activePhase].tokensSold += tokenAmount; phase[activePhase].fundsRaisedEth += ethAmount; deservedAmount[msg.sender][activePhase] += tokenAmount; emit Buy(msg.sender, tokenAmount, activePhase); if(isReachMaxAmount){ activePhase++; } } function buyTokensWithUsdt(uint256 _tokenAmount) public { require(phase[activePhase].maxTokens > 0,"Phase is not active"); require(_tokenAmount > 0, "Must send USDT to get tokens"); bool isReachMaxAmount; IERC20(USDT).safeTransferFrom(msg.sender, address(this), _tokenAmount); uint256 tokenPriceInUsd = getCurrentTokenPrice(); uint256 tokenAmount = _tokenAmount.mul(tokenWithDecimals).div(tokenPriceInUsd); if(!(phase[activePhase].maxTokens > tokenAmount + phase[activePhase].tokensSold) && isAutoMovePhase){ uint256 tokenAmount2 = phase[activePhase].maxTokens - phase[activePhase].tokensSold; uint256 returnAmount = _tokenAmount.sub(_tokenAmount.mul(tokenAmount2).div(tokenAmount)); IERC20(USDT).safeTransfer(msg.sender, returnAmount); tokenAmount = tokenAmount2; isReachMaxAmount = true; } phase[activePhase].tokensSold += tokenAmount; phase[activePhase].fundsRaisedUsdt += _tokenAmount; deservedAmount[msg.sender][activePhase] += tokenAmount; emit Buy(msg.sender, tokenAmount, activePhase); if(isReachMaxAmount){ activePhase++; } } function setClaimableAmount(ClaimableAmount[] calldata _claimableAmounts ) external onlyOwner { for(uint256 i = 0 ; i < _claimableAmounts.length; i ++){ deservedAmount[_claimableAmounts[i].account][_claimableAmounts[i].roundId] = _claimableAmounts[i].tokenAmount; } } function buyWithBnbChain(address _account, uint256 _tokenAmount, uint256 _nonce) public onlyBnbAdministrator { require(phase[activePhase].maxTokens > 0,"Phase is not active"); require(_tokenAmount > 0); require(!isSold[_nonce],"Already sended token"); if(!(phase[activePhase].maxTokens > _tokenAmount + phase[activePhase].tokensSold) && isAutoMovePhase ){ uint256 _latestPhaseTokenAmount = phase[activePhase].maxTokens - phase[activePhase].tokensSold; uint256 _remainingTokenAmount = _tokenAmount - _latestPhaseTokenAmount; uint256 _finalPhaseTokenAmount = (phase[activePhase].tokenPriceInUsd.mul(_remainingTokenAmount)).div(phase[activePhase + 1].tokenPriceInUsd); phase[activePhase].tokensSold += _latestPhaseTokenAmount; deservedAmount[_account][activePhase] += _latestPhaseTokenAmount; emit Buy(_account, _latestPhaseTokenAmount, activePhase); activePhase++; phase[activePhase].tokensSold += _finalPhaseTokenAmount; deservedAmount[_account][activePhase] += _finalPhaseTokenAmount; emit Buy(_account, _finalPhaseTokenAmount, activePhase); isSold[_nonce] = true; }else{ phase[activePhase].tokensSold += _tokenAmount; deservedAmount[_account][activePhase] += _tokenAmount; emit BuyWithBnb(_account, _tokenAmount,_nonce, activePhase); isSold[_nonce] = true; } } function claim(uint256 _currentPhase) external { require(isClaimableActive, "Claimable is not active yet"); require(phase[_currentPhase].maxTokens > 0,"Phase is not active"); require(block.timestamp > phase[_currentPhase].claimStart , "Claiming Not Started Yet" ); uint256 claimableReward = deservedAmount[msg.sender][_currentPhase] - claimedAmount[msg.sender][_currentPhase]; require(claimableReward > 0, "There is no reward" ); claimedAmount[msg.sender][_currentPhase] = deservedAmount[msg.sender][_currentPhase]; IERC20(tokenAddress).safeTransfer(msg.sender, claimableReward); } function claimAll(uint256[] calldata _phases) external { require(isClaimableActive, "Claimable is not active yet"); uint256 claimableReward; for(uint256 i = 0 ; i < _phases.length ; i++) { require(phase[_phases[i]].maxTokens > 0,"Phase is not active"); require(block.timestamp > phase[_phases[i]].claimStart , "Claiming Not Started Yet" ); claimableReward += deservedAmount[msg.sender][_phases[i]] - claimedAmount[msg.sender][_phases[i]]; claimedAmount[msg.sender][_phases[i]] = deservedAmount[msg.sender][_phases[i]]; } require(claimableReward > 0, "There is no reward" ); IERC20(tokenAddress).safeTransfer(msg.sender, claimableReward); } function claimableAmount(address _account,uint256[] calldata _phases) public view returns(uint256) { uint256 claimableReward; for(uint256 i = 0 ; i < _phases.length ; i++) { claimableReward += deservedAmount[_account][_phases[i]] - claimedAmount[_account][_phases[i]]; } return claimableReward; } function usdToEth(uint256 _amount) public view returns(uint256) { address[] memory path = new address[](2); path[0] = WETH; path[1] = USDT; uint256[] memory amounts = router.getAmountsIn(_amount,path); return amounts[0]; } // owner can withdraw ETH after people get tokens function withdrawETH(uint256 _ethAmount) external onlyOwner { ( bool success,) = owner().call{value: _ethAmount}(""); require(success, "Withdrawal was not successful"); } function returnEth(address _account, uint256 _amount) internal { ( bool success,) = _account.call{value: _amount}(""); require(success, "Withdrawal was not successful"); } function withdrawToken(address _tokenAddress,uint256 _amount) external onlyOwner { IERC20(_tokenAddress).safeTransfer(owner(),_amount); } function getEthPrice() public view returns(uint256) { return ethUsdData.latestAnswer(); } function getBnbPrice() public view returns(uint256) { return bnbUsdData.latestAnswer(); } function getEthToUsd(uint256 _ethAmount) public view returns(uint256){ return _ethAmount.mul(getEthPrice()).div(1e18); } function getBnbToUsd(uint256 _bnbAmount) public view returns(uint256){ return _bnbAmount.mul(getBnbPrice()).div(1e18); } function estimatedToken (uint256 _weiAmount) public view returns (uint256) { uint256 tokenPriceInUsd =getCurrentTokenPrice(); uint256 tokensPerEth = usdToEth(tokenPriceInUsd); return (_weiAmount / tokensPerEth) * tokenWithDecimals; } function getEstimatedTokenAmount(uint256 _bnbAmount,uint256 _tokenPriceInUsd) public view returns(uint256) { return getBnbToUsd(_bnbAmount).mul(tokenWithDecimals).div(100).div(_tokenPriceInUsd); } function getEstimatedUsdtTokenAmount(uint256 _usdtAmount,uint256 _tokenPriceInUsd) public view returns(uint256) { return _usdtAmount.mul(tokenWithDecimals).div(_tokenPriceInUsd); } function _swapToUsdt(uint256 _weiAmount) internal { address[] memory path = new address[](2); path[0] = WETH; path[1] = USDT; router.swapExactETHForTokensSupportingFeeOnTransferTokens{value : _weiAmount}( 0, path, address(this), block.timestamp ); } function getCurrentTokenPrice() public view returns(uint256) { uint256 tokenPriceInUsd = phase[activePhase].tokenPriceInUsd; if(isWhitelistPresale){ tokenPriceInUsd = tokenPriceInUsd * (100 - discountRate) / 100; } return tokenPriceInUsd; } constructor(address _router, address _bnbAdministrator) { router = IRouter(_router); WETH = router.WETH(); bnbAdministrator = _bnbAdministrator; } function transferBnbAdministrator( address _newAddress) external onlyOwner { bnbAdministrator = _newAddress; } function setToken(address _token) external onlyOwner { tokenAddress = _token; } function claimableStatus(bool _flag) external onlyOwner{ isClaimableActive = _flag; } receive() external payable { buyTokensWithEth(); } function setWhiteListPresale(bool _flag) external onlyOwner { isWhitelistPresale = _flag; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_bnbAdministrator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_phase","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_nonce","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_phase","type":"uint256"}],"name":"BuyWithBnb","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"BNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activePhase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"uint256","name":"maxTokens","type":"uint256"},{"internalType":"uint256","name":"tokenPriceInUsd","type":"uint256"},{"internalType":"uint256","name":"claimStart","type":"uint256"}],"internalType":"struct AnarchyPresale.AddPhase[]","name":"_addPhase","type":"tuple[]"}],"name":"addPhases","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bnbAdministrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bnbUsdData","outputs":[{"internalType":"contract AggregatorInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokensWithEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"buyTokensWithUsdt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"buyWithBnbChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_currentPhase","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_phases","type":"uint256[]"}],"name":"claimAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256[]","name":"_phases","type":"uint256[]"}],"name":"claimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"claimableStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"deservedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"discountRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_weiAmount","type":"uint256"}],"name":"estimatedToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethUsdData","outputs":[{"internalType":"contract AggregatorInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBnbPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bnbAmount","type":"uint256"}],"name":"getBnbToUsd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bnbAmount","type":"uint256"},{"internalType":"uint256","name":"_tokenPriceInUsd","type":"uint256"}],"name":"getEstimatedTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_usdtAmount","type":"uint256"},{"internalType":"uint256","name":"_tokenPriceInUsd","type":"uint256"}],"name":"getEstimatedUsdtTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEthPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"}],"name":"getEthToUsd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_roundId","type":"uint256[]"}],"name":"getPhases","outputs":[{"components":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"uint256","name":"maxTokens","type":"uint256"},{"internalType":"uint256","name":"tokensSold","type":"uint256"},{"internalType":"uint256","name":"fundsRaisedEth","type":"uint256"},{"internalType":"uint256","name":"fundsRaisedUsdt","type":"uint256"},{"internalType":"uint256","name":"fundsRaisedBnb","type":"uint256"},{"internalType":"uint256","name":"tokenPriceInUsd","type":"uint256"},{"internalType":"uint256","name":"claimStart","type":"uint256"}],"internalType":"struct AnarchyPresale.Phase[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAutoMovePhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isClaimableActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isSold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWhitelistPresale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"phase","outputs":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"uint256","name":"maxTokens","type":"uint256"},{"internalType":"uint256","name":"tokensSold","type":"uint256"},{"internalType":"uint256","name":"fundsRaisedEth","type":"uint256"},{"internalType":"uint256","name":"fundsRaisedUsdt","type":"uint256"},{"internalType":"uint256","name":"fundsRaisedBnb","type":"uint256"},{"internalType":"uint256","name":"tokenPriceInUsd","type":"uint256"},{"internalType":"uint256","name":"claimStart","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"},{"internalType":"bool","name":"_isAutoPhase","type":"bool"}],"name":"setActivePhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"internalType":"struct AnarchyPresale.ClaimableAmount[]","name":"_claimableAmounts","type":"tuple[]"}],"name":"setClaimableAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setWhiteListPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"transferBnbAdministrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundId","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"}],"name":"updatePhaseClaimTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"usdToEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006007556001600a818155600b805460ff1916909217909155600c553480156200003557600080fd5b5060405162002daf38038062002daf833981016040819052620000589162000176565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600880546001600160a01b0319166001600160a01b038416908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620000f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001199190620001ae565b600980546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100939092169290920217905550620001d3565b80516001600160a01b03811681146200017157600080fd5b919050565b600080604083850312156200018a57600080fd5b620001958362000159565b9150620001a56020840162000159565b90509250929050565b600060208284031215620001c157600080fd5b620001cc8262000159565b9392505050565b612bcc80620001e36000396000f3fe6080604052600436106102765760003560e01c806360d82eda1161014f578063bcecf667116100c1578063f14210a61161007a578063f14210a614610830578063f2fde38b14610850578063f524bdff14610870578063f751758b14610898578063f87028b3146108ad578063f887ea40146108c757600080fd5b8063bcecf6671461078a578063c54e44eb146107aa578063c6fcf3ee146107d2578063ca5d836d146107f2578063d87744cf14610812578063e6c0e6d51461081a57600080fd5b80637593a6f1116101135780637593a6f1146106d85780638da5cb5b146106f257806399c6cd64146107105780639aefc5d0146107305780639d76ea581461074a5780639e281a981461076a57600080fd5b806360d82eda1461063657806364b5ad2c1461066357806367c9b017146106835780636e32c173146106985780637085cead146106b857600080fd5b8063373bd056116101e857806355b4b1a4116101ac57806355b4b1a41461054e57806355f886671461058657806357a04902146105a657806358f7f6d2146105c65780635bc2942d146105ee5780635dd716bc1461060e57600080fd5b8063373bd0561461049157806337420cf8146104b1578063379607f5146104d1578063382345d7146104f1578063495272f61461052e57600080fd5b8063144fa6d71161023a578063144fa6d7146103c65780631de40940146103e65780631e2ff94f1461040657806328c778201461041957806330dc31971461043957806334e2c7601461047157600080fd5b80630110a1761461028a57806308760b0d146102cf5780630c3df005146102f25780630e1b26c614610312578063135f8aa71461032857600080fd5b36610285576102836108e7565b005b600080fd5b34801561029657600080fd5b506102ba6102a5366004612518565b60046020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156102db57600080fd5b506102e4610b03565b6040519081526020016102c6565b3480156102fe57600080fd5b5061028361030d366004612531565b610b80565b34801561031e57600080fd5b506102e4600a5481565b34801561033457600080fd5b5061038b610343366004612518565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e0820152610100016102c6565b3480156103d257600080fd5b506102836103e13660046125bd565b610d00565b3480156103f257600080fd5b506102836104013660046125e6565b610d4c565b34801561041257600080fd5b50426102e4565b34801561042557600080fd5b50610283610434366004612662565b610d8f565b34801561044557600080fd5b506102e46104543660046126a4565b600260209081526000928352604080842090915290825290205481565b34801561047d57600080fd5b5061028361048c3660046126ce565b61104a565b34801561049d57600080fd5b506102836104ac366004612518565b611087565b3480156104bd57600080fd5b506102e46104cc366004612518565b6112e0565b3480156104dd57600080fd5b506102836104ec366004612518565b611306565b3480156104fd57600080fd5b506005546105169061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016102c6565b34801561053a57600080fd5b506102e4610549366004612518565b6114ae565b34801561055a57600080fd5b506102e46105693660046126a4565b600360209081526000928352604080842090915290825290205481565b34801561059257600080fd5b506102836105a13660046126eb565b6114c7565b3480156105b257600080fd5b506102836105c13660046126ce565b611976565b3480156105d257600080fd5b5061051673b8c77482e45f1f44de1745f52c74426c631bdd5281565b3480156105fa57600080fd5b506102e4610609366004612518565b6119b3565b34801561061a57600080fd5b50610516735f4ec3df9cbd43714fe2740f5e3616155c5b841981565b34801561064257600080fd5b50610656610651366004612662565b6119ed565b6040516102c6919061271e565b34801561066f57600080fd5b506102e461067e3660046127ab565b611b50565b34801561068f57600080fd5b506102e4611c1f565b3480156106a457600080fd5b506102e46106b33660046127fe565b611c73565b3480156106c457600080fd5b506102e46106d33660046127fe565b611c95565b3480156106e457600080fd5b50600d546102ba9060ff1681565b3480156106fe57600080fd5b506000546001600160a01b0316610516565b34801561071c57600080fd5b5061028361072b366004612820565b611cb5565b34801561073c57600080fd5b50600b546102ba9060ff1681565b34801561075657600080fd5b50600654610516906001600160a01b031681565b34801561077657600080fd5b506102836107853660046126a4565b611d94565b34801561079657600080fd5b506102e46107a5366004612518565b611de4565b3480156107b657600080fd5b5061051673dac17f958d2ee523a2206206994597c13d831ec781565b3480156107de57600080fd5b506102836107ed3660046125bd565b611f20565b3480156107fe57600080fd5b5061028361080d3660046127fe565b611f72565b6102836108e7565b34801561082657600080fd5b506102e4600c5481565b34801561083c57600080fd5b5061028361084b366004612518565b611fb1565b34801561085c57600080fd5b5061028361086b3660046125bd565b61207e565b34801561087c57600080fd5b506105167314e613ac84a31f709eadbdf89c6cc390fdc9540a81565b3480156108a457600080fd5b506102e46120b4565b3480156108b957600080fd5b506005546102ba9060ff1681565b3480156108d357600080fd5b50600854610516906001600160a01b031681565b600a54600090815260016020819052604090912001546109225760405162461bcd60e51b815260040161091990612883565b60405180910390fd5b600034116109725760405162461bcd60e51b815260206004820152601b60248201527f4d7573742073656e642045544820746f2067657420746f6b656e7300000000006044820152606401610919565b34600061097e826119b3565b600a54600090815260016020526040812060020154919250906109a190836128c6565b600a5460009081526001602081905260409091200154118015906109c75750600b5460ff165b15610a2d57600a546000908152600160208190526040822060028101549101546109f191906128de565b90506000610a0984610a038785612101565b9061210d565b90506000610a178683612119565b9050610a233382612125565b5093509150600190505b600a5460009081526001602052604081206002018054849290610a519084906128c6565b9091555050600a5460009081526001602052604081206003018054859290610a7a9084906128c6565b9091555050336000908152600260209081526040808320600a54845290915281208054849290610aab9084906128c6565b9091555050600a546040513391600080516020612b7783398151915291610ada91868252602082015260400190565b60405180910390a28015610afe57600a8054906000610af8836128f5565b91905055505b505050565b60007314e613ac84a31f709eadbdf89c6cc390fdc9540a6001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b919061290e565b905090565b6000546001600160a01b03163314610baa5760405162461bcd60e51b815260040161091990612927565b60005b81811015610afe57828282818110610bc757610bc761295c565b9050608002016000013560016000858585818110610be757610be761295c565b6080029190910135825250602081019190915260400160002055828282818110610c1357610c1361295c565b9050608002016020013560016000858585818110610c3357610c3361295c565b6080029190910135825250602081019190915260400160002060010155828282818110610c6257610c6261295c565b9050608002016040013560016000858585818110610c8257610c8261295c565b6080029190910135825250602081019190915260400160002060060155828282818110610cb157610cb161295c565b9050608002016060013560016000858585818110610cd157610cd161295c565b608002919091013582525060208101919091526040016000206007015580610cf8816128f5565b915050610bad565b6000546001600160a01b03163314610d2a5760405162461bcd60e51b815260040161091990612927565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d765760405162461bcd60e51b815260040161091990612927565b600a91909155600b805460ff1916911515919091179055565b600d5460ff16610de15760405162461bcd60e51b815260206004820152601b60248201527f436c61696d61626c65206973206e6f74206163746976652079657400000000006044820152606401610919565b6000805b82811015610fed57600060016000868685818110610e0557610e0561295c565b9050602002013581526020019081526020016000206001015411610e3b5760405162461bcd60e51b815260040161091990612883565b60016000858584818110610e5157610e5161295c565b905060200201358152602001908152602001600020600701544211610eb35760405162461bcd60e51b815260206004820152601860248201527710db185a5b5a5b99c8139bdd0814dd185c9d19590816595d60421b6044820152606401610919565b33600090815260036020526040812090858584818110610ed557610ed561295c565b9050602002013581526020019081526020016000205460026000336001600160a01b03166001600160a01b031681526020019081526020016000206000868685818110610f2457610f2461295c565b90506020020135815260200190815260200160002054610f4491906128de565b610f4e90836128c6565b336000908152600260205260408120919350858584818110610f7257610f7261295c565b9050602002013581526020019081526020016000205460036000336001600160a01b03166001600160a01b031681526020019081526020016000206000868685818110610fc157610fc161295c565b905060200201358152602001908152602001600020819055508080610fe5906128f5565b915050610de5565b50600081116110335760405162461bcd60e51b8152602060048201526012602482015271151a195c99481a5cc81b9bc81c995dd85c9960721b6044820152606401610919565b600654610afe906001600160a01b031633836121c8565b6000546001600160a01b031633146110745760405162461bcd60e51b815260040161091990612927565b6005805460ff1916911515919091179055565b600a54600090815260016020819052604090912001546110b95760405162461bcd60e51b815260040161091990612883565b600081116111095760405162461bcd60e51b815260206004820152601c60248201527f4d7573742073656e64205553445420746f2067657420746f6b656e73000000006044820152606401610919565b600061112b73dac17f958d2ee523a2206206994597c13d831ec733308561222b565b60006111356120b4565b9050600061115282610a036007548761210190919063ffffffff16565b600a5460009081526001602052604090206002015490915061117490826128c6565b600a54600090815260016020819052604090912001541180159061119a5750600b5460ff165b1561120957600a546000908152600160208190526040822060028101549101546111c491906128de565b905060006111e06111d984610a038986612101565b8790612119565b905061120173dac17f958d2ee523a2206206994597c13d831ec733836121c8565b506001935090505b600a546000908152600160205260408120600201805483929061122d9084906128c6565b9091555050600a54600090815260016020526040812060040180548692906112569084906128c6565b9091555050336000908152600260209081526040808320600a548452909152812080548392906112879084906128c6565b9091555050600a546040513391600080516020612b77833981519152916112b691858252602082015260400190565b60405180910390a282156112da57600a80549060006112d4836128f5565b91905055505b50505050565b6000611300670de0b6b3a7640000610a036112f9611c1f565b8590612101565b92915050565b600d5460ff166113585760405162461bcd60e51b815260206004820152601b60248201527f436c61696d61626c65206973206e6f74206163746976652079657400000000006044820152606401610919565b600081815260016020819052604090912001546113875760405162461bcd60e51b815260040161091990612883565b60008181526001602052604090206007015442116113e25760405162461bcd60e51b815260206004820152601860248201527710db185a5b5a5b99c8139bdd0814dd185c9d19590816595d60421b6044820152606401610919565b33600081815260036020908152604080832085845282528083205493835260028252808320858452909152812054909161141b916128de565b9050600081116114625760405162461bcd60e51b8152602060048201526012602482015271151a195c99481a5cc81b9bc81c995dd85c9960721b6044820152606401610919565b33600081815260026020908152604080832086845282528083205484845260038352818420878552909252909120556006546114aa916001600160a01b0390911690836121c8565b5050565b6000611300670de0b6b3a7640000610a036112f9610b03565b6000546001600160a01b03163314806114f057506005546001600160a01b036101009091041633145b6115565760405162461bcd60e51b815260206004820152603160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152701037b91030b236b4b734b9ba3930ba37b960791b6064820152608401610919565b600a54600090815260016020819052604090912001546115c45760405162461bcd60e51b8152602060048201526024808201527f5068617365206973206e6f7420616374697665206f722070726573616c6520656044820152631b99195960e21b6064820152608401610919565b600a54600090815260016020819052604090912001546115f65760405162461bcd60e51b815260040161091990612883565b6000821161160357600080fd5b60008181526004602052604090205460ff16156116595760405162461bcd60e51b815260206004820152601460248201527320b63932b0b23c9039b2b73232b2103a37b5b2b760611b6044820152606401610919565b600a5460009081526001602052604090206002015461167890836128c6565b600a54600090815260016020819052604090912001541180159061169e5750600b5460ff165b156118a557600a546000908152600160208190526040822060028101549101546116c891906128de565b905060006116d682856128de565b9050600061172d60016000600a5460016116f091906128c6565b815260200190815260200160002060060154610a038460016000600a5481526020019081526020016000206006015461210190919063ffffffff16565b90508260016000600a548152602001908152602001600020600201600082825461175791906128c6565b90915550506001600160a01b0386166000908152600260209081526040808320600a548452909152812080548592906117919084906128c6565b9091555050600a546040516001600160a01b03881691600080516020612b77833981519152916117c991878252602082015260400190565b60405180910390a2600a80549060006117e1836128f5565b9091555050600a546000908152600160205260408120600201805483929061180a9084906128c6565b90915550506001600160a01b0386166000908152600260209081526040808320600a548452909152812080548392906118449084906128c6565b9091555050600a546040516001600160a01b03881691600080516020612b778339815191529161187c91858252602082015260400190565b60405180910390a25050506000818152600460205260409020805460ff19166001179055505050565b600a54600090815260016020526040812060020180548492906118c99084906128c6565b90915550506001600160a01b0383166000908152600260209081526040808320600a548452909152812080548492906119039084906128c6565b9091555050600a546040805184815260208101849052908101919091526001600160a01b038416907fbe01b16adbf10501fe48a074477c29a0c7beb3cb1c9cc2cd0d9d182167c151629060600160405180910390a26000818152600460205260409020805460ff19166001179055505050565b6000546001600160a01b031633146119a05760405162461bcd60e51b815260040161091990612927565b600d805460ff1916911515919091179055565b6000806119be6120b4565b905060006119cb82611de4565b6007549091506119db8286612972565b6119e59190612994565b949350505050565b606060008267ffffffffffffffff811115611a0a57611a0a6129b3565b604051908082528060200260200182016040528015611a8357816020015b611a7060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081611a285790505b50905060005b83811015611b485760016000868684818110611aa757611aa761295c565b9050602002013581526020019081526020016000206040518061010001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481525050828281518110611b2a57611b2a61295c565b60200260200101819052508080611b40906128f5565b915050611a89565b509392505050565b60008060005b83811015611c16576001600160a01b038616600090815260036020526040812090868684818110611b8957611b8961295c565b9050602002013581526020019081526020016000205460026000886001600160a01b03166001600160a01b031681526020019081526020016000206000878785818110611bd857611bd861295c565b90506020020135815260200190815260200160002054611bf891906128de565b611c0290836128c6565b915080611c0e816128f5565b915050611b56565b50949350505050565b6000735f4ec3df9cbd43714fe2740f5e3616155c5b84196001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b57573d6000803e3d6000fd5b6000611c8e82610a036007548661210190919063ffffffff16565b9392505050565b6000611c8e82610a036064610a03600754611caf896114ae565b90612101565b6000546001600160a01b03163314611cdf5760405162461bcd60e51b815260040161091990612927565b60005b81811015610afe57828282818110611cfc57611cfc61295c565b9050606002016040013560026000858585818110611d1c57611d1c61295c565b9050606002016020016020810190611d3491906125bd565b6001600160a01b03166001600160a01b031681526020019081526020016000206000858585818110611d6857611d6861295c565b606002919091013582525060208101919091526040016000205580611d8c816128f5565b915050611ce2565b6000546001600160a01b03163314611dbe5760405162461bcd60e51b815260040161091990612927565b6114aa611dd36000546001600160a01b031690565b6001600160a01b03841690836121c8565b60408051600280825260608201835260009283929190602083019080368337505060095482519293506001600160a01b031691839150600090611e2957611e2961295c565b60200260200101906001600160a01b031690816001600160a01b03168152505073dac17f958d2ee523a2206206994597c13d831ec781600181518110611e7157611e7161295c565b6001600160a01b0392831660209182029290920101526008546040516307c0329d60e21b81526000929190911690631f00ca7490611eb590879086906004016129c9565b600060405180830381865afa158015611ed2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611efa9190810190612a20565b905080600081518110611f0f57611f0f61295c565b602002602001015192505050919050565b6000546001600160a01b03163314611f4a5760405162461bcd60e51b815260040161091990612927565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314611f9c5760405162461bcd60e51b815260040161091990612927565b60009182526001602052604090912060070155565b6000546001600160a01b03163314611fdb5760405162461bcd60e51b815260040161091990612927565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114612028576040519150601f19603f3d011682016040523d82523d6000602084013e61202d565b606091505b50509050806114aa5760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20776173206e6f74207375636365737366756c0000006044820152606401610919565b6000546001600160a01b031633146120a85760405162461bcd60e51b815260040161091990612927565b6120b181612263565b50565b600a5460009081526001602052604081206006015460055460ff16156120fc576064600c5460646120e591906128de565b6120ef9083612994565b6120f99190612972565b90505b919050565b6000611c8e8284612994565b6000611c8e8284612972565b6000611c8e82846128de565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612172576040519150601f19603f3d011682016040523d82523d6000602084013e612177565b606091505b5050905080610afe5760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20776173206e6f74207375636365737366756c0000006044820152606401610919565b6040516001600160a01b038316602482015260448101829052610afe90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612323565b6040516001600160a01b03808516602483015283166044820152606481018290526112da9085906323b872dd60e01b906084016121f4565b6001600160a01b0381166122c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610919565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000612378826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123f59092919063ffffffff16565b805190915015610afe57808060200190518101906123969190612ade565b610afe5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610919565b60606119e5848460008585600080866001600160a01b0316858760405161241c9190612b27565b60006040518083038185875af1925050503d8060008114612459576040519150601f19603f3d011682016040523d82523d6000602084013e61245e565b606091505b509150915061246f8783838761247a565b979650505050505050565b606083156124e95782516000036124e2576001600160a01b0385163b6124e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610919565b50816119e5565b6119e583838151156124fe5781518083602001fd5b8060405162461bcd60e51b81526004016109199190612b43565b60006020828403121561252a57600080fd5b5035919050565b6000806020838503121561254457600080fd5b823567ffffffffffffffff8082111561255c57600080fd5b818501915085601f83011261257057600080fd5b81358181111561257f57600080fd5b8660208260071b850101111561259457600080fd5b60209290920196919550909350505050565b80356001600160a01b03811681146120fc57600080fd5b6000602082840312156125cf57600080fd5b611c8e826125a6565b80151581146120b157600080fd5b600080604083850312156125f957600080fd5b82359150602083013561260b816125d8565b809150509250929050565b60008083601f84011261262857600080fd5b50813567ffffffffffffffff81111561264057600080fd5b6020830191508360208260051b850101111561265b57600080fd5b9250929050565b6000806020838503121561267557600080fd5b823567ffffffffffffffff81111561268c57600080fd5b61269885828601612616565b90969095509350505050565b600080604083850312156126b757600080fd5b6126c0836125a6565b946020939093013593505050565b6000602082840312156126e057600080fd5b8135611c8e816125d8565b60008060006060848603121561270057600080fd5b612709846125a6565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b8281101561279e5781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e09081015190850152610100909301929085019060010161273b565b5091979650505050505050565b6000806000604084860312156127c057600080fd5b6127c9846125a6565b9250602084013567ffffffffffffffff8111156127e557600080fd5b6127f186828701612616565b9497909650939450505050565b6000806040838503121561281157600080fd5b50508035926020909101359150565b6000806020838503121561283357600080fd5b823567ffffffffffffffff8082111561284b57600080fd5b818501915085601f83011261285f57600080fd5b81358181111561286e57600080fd5b86602060608302850101111561259457600080fd5b6020808252601390820152725068617365206973206e6f742061637469766560681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156128d9576128d96128b0565b500190565b6000828210156128f0576128f06128b0565b500390565b600060018201612907576129076128b0565b5060010190565b60006020828403121561292057600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008261298f57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156129ae576129ae6128b0565b500290565b634e487b7160e01b600052604160045260246000fd5b6000604082018483526020604081850152818551808452606086019150828701935060005b81811015612a135784516001600160a01b0316835293830193918301916001016129ee565b5090979650505050505050565b60006020808385031215612a3357600080fd5b825167ffffffffffffffff80821115612a4b57600080fd5b818501915085601f830112612a5f57600080fd5b815181811115612a7157612a716129b3565b8060051b604051601f19603f83011681018181108582111715612a9657612a966129b3565b604052918252848201925083810185019188831115612ab457600080fd5b938501935b82851015612ad257845184529385019392850192612ab9565b98975050505050505050565b600060208284031215612af057600080fd5b8151611c8e816125d8565b60005b83811015612b16578181015183820152602001612afe565b838111156112da5750506000910152565b60008251612b39818460208701612afb565b9190910192915050565b6020815260008251806020840152612b62816040850160208701612afb565b601f01601f1916919091016040019291505056fe1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036beda2646970667358221220c1964ada28cfdf5fd90cf7521cc737beec853b6f5a33f412fae9ee996b14ab7a64736f6c634300080f00330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000006fe845ff5da509b1dbf5b596327d9080a030d137
Deployed Bytecode
0x6080604052600436106102765760003560e01c806360d82eda1161014f578063bcecf667116100c1578063f14210a61161007a578063f14210a614610830578063f2fde38b14610850578063f524bdff14610870578063f751758b14610898578063f87028b3146108ad578063f887ea40146108c757600080fd5b8063bcecf6671461078a578063c54e44eb146107aa578063c6fcf3ee146107d2578063ca5d836d146107f2578063d87744cf14610812578063e6c0e6d51461081a57600080fd5b80637593a6f1116101135780637593a6f1146106d85780638da5cb5b146106f257806399c6cd64146107105780639aefc5d0146107305780639d76ea581461074a5780639e281a981461076a57600080fd5b806360d82eda1461063657806364b5ad2c1461066357806367c9b017146106835780636e32c173146106985780637085cead146106b857600080fd5b8063373bd056116101e857806355b4b1a4116101ac57806355b4b1a41461054e57806355f886671461058657806357a04902146105a657806358f7f6d2146105c65780635bc2942d146105ee5780635dd716bc1461060e57600080fd5b8063373bd0561461049157806337420cf8146104b1578063379607f5146104d1578063382345d7146104f1578063495272f61461052e57600080fd5b8063144fa6d71161023a578063144fa6d7146103c65780631de40940146103e65780631e2ff94f1461040657806328c778201461041957806330dc31971461043957806334e2c7601461047157600080fd5b80630110a1761461028a57806308760b0d146102cf5780630c3df005146102f25780630e1b26c614610312578063135f8aa71461032857600080fd5b36610285576102836108e7565b005b600080fd5b34801561029657600080fd5b506102ba6102a5366004612518565b60046020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156102db57600080fd5b506102e4610b03565b6040519081526020016102c6565b3480156102fe57600080fd5b5061028361030d366004612531565b610b80565b34801561031e57600080fd5b506102e4600a5481565b34801561033457600080fd5b5061038b610343366004612518565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e0820152610100016102c6565b3480156103d257600080fd5b506102836103e13660046125bd565b610d00565b3480156103f257600080fd5b506102836104013660046125e6565b610d4c565b34801561041257600080fd5b50426102e4565b34801561042557600080fd5b50610283610434366004612662565b610d8f565b34801561044557600080fd5b506102e46104543660046126a4565b600260209081526000928352604080842090915290825290205481565b34801561047d57600080fd5b5061028361048c3660046126ce565b61104a565b34801561049d57600080fd5b506102836104ac366004612518565b611087565b3480156104bd57600080fd5b506102e46104cc366004612518565b6112e0565b3480156104dd57600080fd5b506102836104ec366004612518565b611306565b3480156104fd57600080fd5b506005546105169061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016102c6565b34801561053a57600080fd5b506102e4610549366004612518565b6114ae565b34801561055a57600080fd5b506102e46105693660046126a4565b600360209081526000928352604080842090915290825290205481565b34801561059257600080fd5b506102836105a13660046126eb565b6114c7565b3480156105b257600080fd5b506102836105c13660046126ce565b611976565b3480156105d257600080fd5b5061051673b8c77482e45f1f44de1745f52c74426c631bdd5281565b3480156105fa57600080fd5b506102e4610609366004612518565b6119b3565b34801561061a57600080fd5b50610516735f4ec3df9cbd43714fe2740f5e3616155c5b841981565b34801561064257600080fd5b50610656610651366004612662565b6119ed565b6040516102c6919061271e565b34801561066f57600080fd5b506102e461067e3660046127ab565b611b50565b34801561068f57600080fd5b506102e4611c1f565b3480156106a457600080fd5b506102e46106b33660046127fe565b611c73565b3480156106c457600080fd5b506102e46106d33660046127fe565b611c95565b3480156106e457600080fd5b50600d546102ba9060ff1681565b3480156106fe57600080fd5b506000546001600160a01b0316610516565b34801561071c57600080fd5b5061028361072b366004612820565b611cb5565b34801561073c57600080fd5b50600b546102ba9060ff1681565b34801561075657600080fd5b50600654610516906001600160a01b031681565b34801561077657600080fd5b506102836107853660046126a4565b611d94565b34801561079657600080fd5b506102e46107a5366004612518565b611de4565b3480156107b657600080fd5b5061051673dac17f958d2ee523a2206206994597c13d831ec781565b3480156107de57600080fd5b506102836107ed3660046125bd565b611f20565b3480156107fe57600080fd5b5061028361080d3660046127fe565b611f72565b6102836108e7565b34801561082657600080fd5b506102e4600c5481565b34801561083c57600080fd5b5061028361084b366004612518565b611fb1565b34801561085c57600080fd5b5061028361086b3660046125bd565b61207e565b34801561087c57600080fd5b506105167314e613ac84a31f709eadbdf89c6cc390fdc9540a81565b3480156108a457600080fd5b506102e46120b4565b3480156108b957600080fd5b506005546102ba9060ff1681565b3480156108d357600080fd5b50600854610516906001600160a01b031681565b600a54600090815260016020819052604090912001546109225760405162461bcd60e51b815260040161091990612883565b60405180910390fd5b600034116109725760405162461bcd60e51b815260206004820152601b60248201527f4d7573742073656e642045544820746f2067657420746f6b656e7300000000006044820152606401610919565b34600061097e826119b3565b600a54600090815260016020526040812060020154919250906109a190836128c6565b600a5460009081526001602081905260409091200154118015906109c75750600b5460ff165b15610a2d57600a546000908152600160208190526040822060028101549101546109f191906128de565b90506000610a0984610a038785612101565b9061210d565b90506000610a178683612119565b9050610a233382612125565b5093509150600190505b600a5460009081526001602052604081206002018054849290610a519084906128c6565b9091555050600a5460009081526001602052604081206003018054859290610a7a9084906128c6565b9091555050336000908152600260209081526040808320600a54845290915281208054849290610aab9084906128c6565b9091555050600a546040513391600080516020612b7783398151915291610ada91868252602082015260400190565b60405180910390a28015610afe57600a8054906000610af8836128f5565b91905055505b505050565b60007314e613ac84a31f709eadbdf89c6cc390fdc9540a6001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b919061290e565b905090565b6000546001600160a01b03163314610baa5760405162461bcd60e51b815260040161091990612927565b60005b81811015610afe57828282818110610bc757610bc761295c565b9050608002016000013560016000858585818110610be757610be761295c565b6080029190910135825250602081019190915260400160002055828282818110610c1357610c1361295c565b9050608002016020013560016000858585818110610c3357610c3361295c565b6080029190910135825250602081019190915260400160002060010155828282818110610c6257610c6261295c565b9050608002016040013560016000858585818110610c8257610c8261295c565b6080029190910135825250602081019190915260400160002060060155828282818110610cb157610cb161295c565b9050608002016060013560016000858585818110610cd157610cd161295c565b608002919091013582525060208101919091526040016000206007015580610cf8816128f5565b915050610bad565b6000546001600160a01b03163314610d2a5760405162461bcd60e51b815260040161091990612927565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d765760405162461bcd60e51b815260040161091990612927565b600a91909155600b805460ff1916911515919091179055565b600d5460ff16610de15760405162461bcd60e51b815260206004820152601b60248201527f436c61696d61626c65206973206e6f74206163746976652079657400000000006044820152606401610919565b6000805b82811015610fed57600060016000868685818110610e0557610e0561295c565b9050602002013581526020019081526020016000206001015411610e3b5760405162461bcd60e51b815260040161091990612883565b60016000858584818110610e5157610e5161295c565b905060200201358152602001908152602001600020600701544211610eb35760405162461bcd60e51b815260206004820152601860248201527710db185a5b5a5b99c8139bdd0814dd185c9d19590816595d60421b6044820152606401610919565b33600090815260036020526040812090858584818110610ed557610ed561295c565b9050602002013581526020019081526020016000205460026000336001600160a01b03166001600160a01b031681526020019081526020016000206000868685818110610f2457610f2461295c565b90506020020135815260200190815260200160002054610f4491906128de565b610f4e90836128c6565b336000908152600260205260408120919350858584818110610f7257610f7261295c565b9050602002013581526020019081526020016000205460036000336001600160a01b03166001600160a01b031681526020019081526020016000206000868685818110610fc157610fc161295c565b905060200201358152602001908152602001600020819055508080610fe5906128f5565b915050610de5565b50600081116110335760405162461bcd60e51b8152602060048201526012602482015271151a195c99481a5cc81b9bc81c995dd85c9960721b6044820152606401610919565b600654610afe906001600160a01b031633836121c8565b6000546001600160a01b031633146110745760405162461bcd60e51b815260040161091990612927565b6005805460ff1916911515919091179055565b600a54600090815260016020819052604090912001546110b95760405162461bcd60e51b815260040161091990612883565b600081116111095760405162461bcd60e51b815260206004820152601c60248201527f4d7573742073656e64205553445420746f2067657420746f6b656e73000000006044820152606401610919565b600061112b73dac17f958d2ee523a2206206994597c13d831ec733308561222b565b60006111356120b4565b9050600061115282610a036007548761210190919063ffffffff16565b600a5460009081526001602052604090206002015490915061117490826128c6565b600a54600090815260016020819052604090912001541180159061119a5750600b5460ff165b1561120957600a546000908152600160208190526040822060028101549101546111c491906128de565b905060006111e06111d984610a038986612101565b8790612119565b905061120173dac17f958d2ee523a2206206994597c13d831ec733836121c8565b506001935090505b600a546000908152600160205260408120600201805483929061122d9084906128c6565b9091555050600a54600090815260016020526040812060040180548692906112569084906128c6565b9091555050336000908152600260209081526040808320600a548452909152812080548392906112879084906128c6565b9091555050600a546040513391600080516020612b77833981519152916112b691858252602082015260400190565b60405180910390a282156112da57600a80549060006112d4836128f5565b91905055505b50505050565b6000611300670de0b6b3a7640000610a036112f9611c1f565b8590612101565b92915050565b600d5460ff166113585760405162461bcd60e51b815260206004820152601b60248201527f436c61696d61626c65206973206e6f74206163746976652079657400000000006044820152606401610919565b600081815260016020819052604090912001546113875760405162461bcd60e51b815260040161091990612883565b60008181526001602052604090206007015442116113e25760405162461bcd60e51b815260206004820152601860248201527710db185a5b5a5b99c8139bdd0814dd185c9d19590816595d60421b6044820152606401610919565b33600081815260036020908152604080832085845282528083205493835260028252808320858452909152812054909161141b916128de565b9050600081116114625760405162461bcd60e51b8152602060048201526012602482015271151a195c99481a5cc81b9bc81c995dd85c9960721b6044820152606401610919565b33600081815260026020908152604080832086845282528083205484845260038352818420878552909252909120556006546114aa916001600160a01b0390911690836121c8565b5050565b6000611300670de0b6b3a7640000610a036112f9610b03565b6000546001600160a01b03163314806114f057506005546001600160a01b036101009091041633145b6115565760405162461bcd60e51b815260206004820152603160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152701037b91030b236b4b734b9ba3930ba37b960791b6064820152608401610919565b600a54600090815260016020819052604090912001546115c45760405162461bcd60e51b8152602060048201526024808201527f5068617365206973206e6f7420616374697665206f722070726573616c6520656044820152631b99195960e21b6064820152608401610919565b600a54600090815260016020819052604090912001546115f65760405162461bcd60e51b815260040161091990612883565b6000821161160357600080fd5b60008181526004602052604090205460ff16156116595760405162461bcd60e51b815260206004820152601460248201527320b63932b0b23c9039b2b73232b2103a37b5b2b760611b6044820152606401610919565b600a5460009081526001602052604090206002015461167890836128c6565b600a54600090815260016020819052604090912001541180159061169e5750600b5460ff165b156118a557600a546000908152600160208190526040822060028101549101546116c891906128de565b905060006116d682856128de565b9050600061172d60016000600a5460016116f091906128c6565b815260200190815260200160002060060154610a038460016000600a5481526020019081526020016000206006015461210190919063ffffffff16565b90508260016000600a548152602001908152602001600020600201600082825461175791906128c6565b90915550506001600160a01b0386166000908152600260209081526040808320600a548452909152812080548592906117919084906128c6565b9091555050600a546040516001600160a01b03881691600080516020612b77833981519152916117c991878252602082015260400190565b60405180910390a2600a80549060006117e1836128f5565b9091555050600a546000908152600160205260408120600201805483929061180a9084906128c6565b90915550506001600160a01b0386166000908152600260209081526040808320600a548452909152812080548392906118449084906128c6565b9091555050600a546040516001600160a01b03881691600080516020612b778339815191529161187c91858252602082015260400190565b60405180910390a25050506000818152600460205260409020805460ff19166001179055505050565b600a54600090815260016020526040812060020180548492906118c99084906128c6565b90915550506001600160a01b0383166000908152600260209081526040808320600a548452909152812080548492906119039084906128c6565b9091555050600a546040805184815260208101849052908101919091526001600160a01b038416907fbe01b16adbf10501fe48a074477c29a0c7beb3cb1c9cc2cd0d9d182167c151629060600160405180910390a26000818152600460205260409020805460ff19166001179055505050565b6000546001600160a01b031633146119a05760405162461bcd60e51b815260040161091990612927565b600d805460ff1916911515919091179055565b6000806119be6120b4565b905060006119cb82611de4565b6007549091506119db8286612972565b6119e59190612994565b949350505050565b606060008267ffffffffffffffff811115611a0a57611a0a6129b3565b604051908082528060200260200182016040528015611a8357816020015b611a7060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081611a285790505b50905060005b83811015611b485760016000868684818110611aa757611aa761295c565b9050602002013581526020019081526020016000206040518061010001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481525050828281518110611b2a57611b2a61295c565b60200260200101819052508080611b40906128f5565b915050611a89565b509392505050565b60008060005b83811015611c16576001600160a01b038616600090815260036020526040812090868684818110611b8957611b8961295c565b9050602002013581526020019081526020016000205460026000886001600160a01b03166001600160a01b031681526020019081526020016000206000878785818110611bd857611bd861295c565b90506020020135815260200190815260200160002054611bf891906128de565b611c0290836128c6565b915080611c0e816128f5565b915050611b56565b50949350505050565b6000735f4ec3df9cbd43714fe2740f5e3616155c5b84196001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b57573d6000803e3d6000fd5b6000611c8e82610a036007548661210190919063ffffffff16565b9392505050565b6000611c8e82610a036064610a03600754611caf896114ae565b90612101565b6000546001600160a01b03163314611cdf5760405162461bcd60e51b815260040161091990612927565b60005b81811015610afe57828282818110611cfc57611cfc61295c565b9050606002016040013560026000858585818110611d1c57611d1c61295c565b9050606002016020016020810190611d3491906125bd565b6001600160a01b03166001600160a01b031681526020019081526020016000206000858585818110611d6857611d6861295c565b606002919091013582525060208101919091526040016000205580611d8c816128f5565b915050611ce2565b6000546001600160a01b03163314611dbe5760405162461bcd60e51b815260040161091990612927565b6114aa611dd36000546001600160a01b031690565b6001600160a01b03841690836121c8565b60408051600280825260608201835260009283929190602083019080368337505060095482519293506001600160a01b031691839150600090611e2957611e2961295c565b60200260200101906001600160a01b031690816001600160a01b03168152505073dac17f958d2ee523a2206206994597c13d831ec781600181518110611e7157611e7161295c565b6001600160a01b0392831660209182029290920101526008546040516307c0329d60e21b81526000929190911690631f00ca7490611eb590879086906004016129c9565b600060405180830381865afa158015611ed2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611efa9190810190612a20565b905080600081518110611f0f57611f0f61295c565b602002602001015192505050919050565b6000546001600160a01b03163314611f4a5760405162461bcd60e51b815260040161091990612927565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314611f9c5760405162461bcd60e51b815260040161091990612927565b60009182526001602052604090912060070155565b6000546001600160a01b03163314611fdb5760405162461bcd60e51b815260040161091990612927565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114612028576040519150601f19603f3d011682016040523d82523d6000602084013e61202d565b606091505b50509050806114aa5760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20776173206e6f74207375636365737366756c0000006044820152606401610919565b6000546001600160a01b031633146120a85760405162461bcd60e51b815260040161091990612927565b6120b181612263565b50565b600a5460009081526001602052604081206006015460055460ff16156120fc576064600c5460646120e591906128de565b6120ef9083612994565b6120f99190612972565b90505b919050565b6000611c8e8284612994565b6000611c8e8284612972565b6000611c8e82846128de565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612172576040519150601f19603f3d011682016040523d82523d6000602084013e612177565b606091505b5050905080610afe5760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20776173206e6f74207375636365737366756c0000006044820152606401610919565b6040516001600160a01b038316602482015260448101829052610afe90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612323565b6040516001600160a01b03808516602483015283166044820152606481018290526112da9085906323b872dd60e01b906084016121f4565b6001600160a01b0381166122c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610919565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000612378826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123f59092919063ffffffff16565b805190915015610afe57808060200190518101906123969190612ade565b610afe5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610919565b60606119e5848460008585600080866001600160a01b0316858760405161241c9190612b27565b60006040518083038185875af1925050503d8060008114612459576040519150601f19603f3d011682016040523d82523d6000602084013e61245e565b606091505b509150915061246f8783838761247a565b979650505050505050565b606083156124e95782516000036124e2576001600160a01b0385163b6124e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610919565b50816119e5565b6119e583838151156124fe5781518083602001fd5b8060405162461bcd60e51b81526004016109199190612b43565b60006020828403121561252a57600080fd5b5035919050565b6000806020838503121561254457600080fd5b823567ffffffffffffffff8082111561255c57600080fd5b818501915085601f83011261257057600080fd5b81358181111561257f57600080fd5b8660208260071b850101111561259457600080fd5b60209290920196919550909350505050565b80356001600160a01b03811681146120fc57600080fd5b6000602082840312156125cf57600080fd5b611c8e826125a6565b80151581146120b157600080fd5b600080604083850312156125f957600080fd5b82359150602083013561260b816125d8565b809150509250929050565b60008083601f84011261262857600080fd5b50813567ffffffffffffffff81111561264057600080fd5b6020830191508360208260051b850101111561265b57600080fd5b9250929050565b6000806020838503121561267557600080fd5b823567ffffffffffffffff81111561268c57600080fd5b61269885828601612616565b90969095509350505050565b600080604083850312156126b757600080fd5b6126c0836125a6565b946020939093013593505050565b6000602082840312156126e057600080fd5b8135611c8e816125d8565b60008060006060848603121561270057600080fd5b612709846125a6565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b8281101561279e5781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e09081015190850152610100909301929085019060010161273b565b5091979650505050505050565b6000806000604084860312156127c057600080fd5b6127c9846125a6565b9250602084013567ffffffffffffffff8111156127e557600080fd5b6127f186828701612616565b9497909650939450505050565b6000806040838503121561281157600080fd5b50508035926020909101359150565b6000806020838503121561283357600080fd5b823567ffffffffffffffff8082111561284b57600080fd5b818501915085601f83011261285f57600080fd5b81358181111561286e57600080fd5b86602060608302850101111561259457600080fd5b6020808252601390820152725068617365206973206e6f742061637469766560681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156128d9576128d96128b0565b500190565b6000828210156128f0576128f06128b0565b500390565b600060018201612907576129076128b0565b5060010190565b60006020828403121561292057600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008261298f57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156129ae576129ae6128b0565b500290565b634e487b7160e01b600052604160045260246000fd5b6000604082018483526020604081850152818551808452606086019150828701935060005b81811015612a135784516001600160a01b0316835293830193918301916001016129ee565b5090979650505050505050565b60006020808385031215612a3357600080fd5b825167ffffffffffffffff80821115612a4b57600080fd5b818501915085601f830112612a5f57600080fd5b815181811115612a7157612a716129b3565b8060051b604051601f19603f83011681018181108582111715612a9657612a966129b3565b604052918252848201925083810185019188831115612ab457600080fd5b938501935b82851015612ad257845184529385019392850192612ab9565b98975050505050505050565b600060208284031215612af057600080fd5b8151611c8e816125d8565b60005b83811015612b16578181015183820152602001612afe565b838111156112da5750506000910152565b60008251612b39818460208701612afb565b9190910192915050565b6020815260008251806020840152612b62816040850160208701612afb565b601f01601f1916919091016040019291505056fe1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036beda2646970667358221220c1964ada28cfdf5fd90cf7521cc737beec853b6f5a33f412fae9ee996b14ab7a64736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000006fe845ff5da509b1dbf5b596327d9080a030d137
-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _bnbAdministrator (address): 0x6fE845FF5dA509b1DBF5B596327D9080A030D137
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000006fe845ff5da509b1dbf5b596327d9080a030d137
Deployed Bytecode Sourcemap
15559:12960:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28360:18;:16;:18::i;:::-;15559:12960;;;;;16845:38;;;;;;;;;;-1:-1:-1;16845:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:1;;357:22;339:41;;327:2;312:18;16845:38:0;;;;;;;;26022:103;;;;;;;;;;;;;:::i;:::-;;;537:25:1;;;525:2;510:18;26022:103:0;391:177:1;17715:464:0;;;;;;;;;;-1:-1:-1;17715:464:0;;;;;:::i;:::-;;:::i;17275:30::-;;;;;;;;;;;;;;;;16644:39;;;;;;;;;;-1:-1:-1;16644:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1564:25:1;;;1620:2;1605:18;;1598:34;;;;1648:18;;;1641:34;;;;1706:2;1691:18;;1684:34;;;;1749:3;1734:19;;1727:35;1793:3;1778:19;;1771:35;1837:3;1822:19;;1815:35;1881:3;1866:19;;1859:35;1551:3;1536:19;16644:39:0;1221:679:1;28110:93:0;;;;;;;;;;-1:-1:-1;28110:93:0;;;;;:::i;:::-;;:::i;18644:162::-;;;;;;;;;;-1:-1:-1;18644:162:0;;;;;:::i;:::-;;:::i;18814:98::-;;;;;;;;;;-1:-1:-1;18889:15:0;18814:98;;23878:750;;;;;;;;;;-1:-1:-1;23878:750:0;;;;;:::i;:::-;;:::i;16690:71::-;;;;;;;;;;-1:-1:-1;16690:71:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;28398:105;;;;;;;;;;-1:-1:-1;28398:105:0;;;;;:::i;:::-;;:::i;20101:1260::-;;;;;;;;;;-1:-1:-1;20101:1260:0;;;;;:::i;:::-;;:::i;26134:135::-;;;;;;;;;;-1:-1:-1;26134:135:0;;;;;:::i;:::-;;:::i;23221:649::-;;;;;;;;;;-1:-1:-1;23221:649:0;;;;;:::i;:::-;;:::i;17096:31::-;;;;;;;;;;-1:-1:-1;17096:31:0;;;;;;;-1:-1:-1;;;;;17096:31:0;;;;;;-1:-1:-1;;;;;4194:32:1;;;4176:51;;4164:2;4149:18;17096:31:0;4030:203:1;26277:135:0;;;;;;;;;;-1:-1:-1;26277:135:0;;;;;:::i;:::-;;:::i;16768:70::-;;;;;;;;;;-1:-1:-1;16768:70:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;21680:1533;;;;;;;;;;-1:-1:-1;21680:1533:0;;;;;:::i;:::-;;:::i;28211:99::-;;;;;;;;;;-1:-1:-1;28211:99:0;;;;;:::i;:::-;;:::i;16974:72::-;;;;;;;;;;;;17004:42;16974:72;;26420:267;;;;;;;;;;-1:-1:-1;26420:267:0;;;;;:::i;:::-;;:::i;15669:112::-;;;;;;;;;;;;15738:42;15669:112;;18187:292;;;;;;;;;;-1:-1:-1;18187:292:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24636:350::-;;;;;;;;;;-1:-1:-1;24636:350:0;;;;;:::i;:::-;;:::i;25910:103::-;;;;;;;;;;;;;:::i;26913:194::-;;;;;;;;;;-1:-1:-1;26913:194:0;;;;;:::i;:::-;;:::i;26695:210::-;;;;;;;;;;-1:-1:-1;26695:210:0;;;;;:::i;:::-;;:::i;17392:29::-;;;;;;;;;;-1:-1:-1;17392:29:0;;;;;;;;14527:79;;;;;;;;;;-1:-1:-1;14565:7:0;14592:6;-1:-1:-1;;;;;14592:6:0;14527:79;;21369:303;;;;;;;;;;-1:-1:-1;21369:303:0;;;;;:::i;:::-;;:::i;17312:34::-;;;;;;;;;;-1:-1:-1;17312:34:0;;;;;;;;17136:27;;;;;;;;;;-1:-1:-1;17136:27:0;;;;-1:-1:-1;;;;;17136:27:0;;;25751:151;;;;;;;;;;-1:-1:-1;25751:151:0;;;;;:::i;:::-;;:::i;25003:274::-;;;;;;;;;;-1:-1:-1;25003:274:0;;;;;:::i;:::-;;:::i;16894:73::-;;;;;;;;;;;;16925:42;16894:73;;27974:124;;;;;;;;;;-1:-1:-1;27974:124:0;;;;;:::i;:::-;;:::i;18489:149::-;;;;;;;;;;-1:-1:-1;18489:149:0;;;;;:::i;:::-;;:::i;18920:1173::-;;;:::i;17353:32::-;;;;;;;;;;;;;;;;25346:195;;;;;;;;;;-1:-1:-1;25346:195:0;;;;;:::i;:::-;;:::i;14973:109::-;;;;;;;;;;-1:-1:-1;14973:109:0;;;;;:::i;:::-;;:::i;15788:112::-;;;;;;;;;;;;15857:42;15788:112;;27478:294;;;;;;;;;;;;;:::i;17059:30::-;;;;;;;;;;-1:-1:-1;17059:30:0;;;;;;;;17220:21;;;;;;;;;;-1:-1:-1;17220:21:0;;;;-1:-1:-1;;;;;17220:21:0;;;18920:1173;18988:11;;19013:1;18982:18;;;:5;:18;;;;;;;;:28;;18974:63;;;;-1:-1:-1;;;18974:63:0;;;;;;;:::i;:::-;;;;;;;;;19068:1;19056:9;:13;19048:53;;;;-1:-1:-1;;;19048:53:0;;8247:2:1;19048:53:0;;;8229:21:1;8286:2;8266:18;;;8259:30;8325:29;8305:18;;;8298:57;8372:18;;19048:53:0;8045:351:1;19048:53:0;19132:9;19112:17;19174:25;19132:9;19174:14;:25::i;:::-;19298:11;;19210:21;19292:18;;;:5;:18;;;;;:29;;;19152:47;;-1:-1:-1;19210:21:0;19278:43;;19152:47;19278:43;:::i;:::-;19253:11;;19247:18;;;;:5;:18;;;;;;;;:28;;:74;19245:77;;;:96;;-1:-1:-1;19326:15:0;;;;19245:96;19242:538;;;19417:11;;19357:20;19411:18;;;:5;:18;;;;;;;:29;;;;19380:28;;;:60;;19411:29;19380:60;:::i;:::-;19357:83;-1:-1:-1;19469:17:0;19489:44;19521:11;19489:27;:9;19357:83;19489:13;:27::i;:::-;:31;;:44::i;:::-;19469:64;-1:-1:-1;19548:20:0;19571:27;:9;19469:64;19571:13;:27::i;:::-;19548:50;;19613:35;19623:10;19635:12;19613:9;:35::i;:::-;-1:-1:-1;19675:12:0;-1:-1:-1;19716:12:0;-1:-1:-1;19762:4:0;;-1:-1:-1;19242:538:0;19798:11;;19792:18;;;;:5;:18;;;;;:29;;:44;;19825:11;;19792:18;:44;;19825:11;;19792:44;:::i;:::-;;;;-1:-1:-1;;19853:11:0;;19847:18;;;;:5;:18;;;;;:33;;:46;;19884:9;;19847:18;:46;;19884:9;;19847:46;:::i;:::-;;;;-1:-1:-1;;19919:10:0;19904:26;;;;:14;:26;;;;;;;;19931:11;;19904:39;;;;;;;:54;;19947:11;;19904:26;:54;;19947:11;;19904:54;:::i;:::-;;;;-1:-1:-1;;20003:11:0;;19974:41;;19978:10;;-1:-1:-1;;;;;;;;;;;19974:41:0;;;19990:11;8970:25:1;;9026:2;9011:18;;9004:34;8958:2;8943:18;;8796:248;19974:41:0;;;;;;;;20029:16;20026:60;;;20061:11;:13;;;:11;:13;;;:::i;:::-;;;;;;20026:60;18963:1130;;;18920:1173::o;26022:103::-;26065:7;15857:42;-1:-1:-1;;;;;26092:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26085:32;;26022:103;:::o;17715:464::-;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;17799:9:::1;17795:377;17814:20:::0;;::::1;17795:377;;;17895:9;;17905:1;17895:12;;;;;;;:::i;:::-;;;;;;:20;;;17857:5;:27;17863:9;;17873:1;17863:12;;;;;;;:::i;:::-;;;::::0;;;::::1;:20;17857:27:::0;;-1:-1:-1;17857:27:0::1;::::0;::::1;::::0;;;;;;17863:20:::1;17857:27:::0;:58;17970:9;;17980:1;17970:12;;::::1;;;;;:::i;:::-;;;;;;:22;;;17930:5;:27;17936:9;;17946:1;17936:12;;;;;;;:::i;:::-;;;::::0;;;::::1;:20;17930:27:::0;;-1:-1:-1;17930:27:0::1;::::0;::::1;::::0;;;;;;17936:20:::1;17930:27:::0;:37:::1;;:62:::0;18053:9;;18063:1;18053:12;;::::1;;;;;:::i;:::-;;;;;;:28;;;18007:5;:27;18013:9;;18023:1;18013:12;;;;;;;:::i;:::-;;;::::0;;;::::1;:20;18007:27:::0;;-1:-1:-1;18007:27:0::1;::::0;::::1;::::0;;;;;;18013:20:::1;18007:27:::0;:43:::1;;:74:::0;18137:9;;18147:1;18137:12;;::::1;;;;;:::i;:::-;;;;;;:23;;;18096:5;:27;18102:9;;18112:1;18102:12;;;;;;;:::i;:::-;;;::::0;;;::::1;:20;18096:27:::0;;-1:-1:-1;18096:27:0::1;::::0;::::1;::::0;;;;;;18102:20:::1;18096:27:::0;:38:::1;;:64:::0;17837:3;::::1;::::0;::::1;:::i;:::-;;;;17795:377;;28110:93:::0;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;28174:12:::1;:21:::0;;-1:-1:-1;;;;;;28174:21:0::1;-1:-1:-1::0;;;;;28174:21:0;;;::::1;::::0;;;::::1;::::0;;28110:93::o;18644:162::-;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;18735:11:::1;:22:::0;;;;18768:15:::1;:30:::0;;-1:-1:-1;;18768:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18644:162::o;23878:750::-;23952:17;;;;23944:57;;;;-1:-1:-1;;;23944:57:0;;10073:2:1;23944:57:0;;;10055:21:1;10112:2;10092:18;;;10085:30;10151:29;10131:18;;;10124:57;10198:18;;23944:57:0;9871:351:1;23944:57:0;24012:23;;24046:440;24066:18;;;24046:440;;;24145:1;24115:5;:17;24121:7;;24129:1;24121:10;;;;;;;:::i;:::-;;;;;;;24115:17;;;;;;;;;;;:27;;;:31;24107:62;;;;-1:-1:-1;;;24107:62:0;;;;;;;:::i;:::-;24210:5;:17;24216:7;;24224:1;24216:10;;;;;;;:::i;:::-;;;;;;;24210:17;;;;;;;;;;;:28;;;24192:15;:46;24184:85;;;;-1:-1:-1;;;24184:85:0;;10429:2:1;24184:85:0;;;10411:21:1;10468:2;10448:18;;;10441:30;-1:-1:-1;;;10487:18:1;;;10480:54;10551:18;;24184:85:0;10227:348:1;24184:85:0;24358:10;24344:25;;;;:13;:25;;;;;;24370:7;;24378:1;24370:10;;;;;;;:::i;:::-;;;;;;;24344:37;;;;;;;;;;;;24303:14;:26;24318:10;-1:-1:-1;;;;;24303:26:0;-1:-1:-1;;;;;24303:26:0;;;;;;;;;;;;:38;24330:7;;24338:1;24330:10;;;;;;;:::i;:::-;;;;;;;24303:38;;;;;;;;;;;;:78;;;;:::i;:::-;24284:97;;;;:::i;:::-;24451:10;24436:26;;;;:14;:26;;;;;24284:97;;-1:-1:-1;24463:7:0;;24471:1;24463:10;;;;;;;:::i;:::-;;;;;;;24436:38;;;;;;;;;;;;24396:13;:25;24410:10;-1:-1:-1;;;;;24396:25:0;-1:-1:-1;;;;;24396:25:0;;;;;;;;;;;;:37;24422:7;;24430:1;24422:10;;;;;;;:::i;:::-;;;;;;;24396:37;;;;;;;;;;;:78;;;;24087:3;;;;;:::i;:::-;;;;24046:440;;;;24522:1;24504:15;:19;24496:51;;;;-1:-1:-1;;;24496:51:0;;10782:2:1;24496:51:0;;;10764:21:1;10821:2;10801:18;;;10794:30;-1:-1:-1;;;10840:18:1;;;10833:48;10898:18;;24496:51:0;10580:342:1;24496:51:0;24565:12;;24558:62;;-1:-1:-1;;;;;24565:12:0;24592:10;24604:15;24558:33;:62::i;28398:105::-;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;28469:18:::1;:26:::0;;-1:-1:-1;;28469:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28398:105::o;20101:1260::-;20182:11;;20207:1;20176:18;;;:5;:18;;;;;;;;:28;;20168:63;;;;-1:-1:-1;;;20168:63:0;;;;;;;:::i;:::-;20265:1;20250:12;:16;20242:57;;;;-1:-1:-1;;;20242:57:0;;11129:2:1;20242:57:0;;;11111:21:1;11168:2;11148:18;;;11141:30;11207;11187:18;;;11180:58;11255:18;;20242:57:0;10927:352:1;20242:57:0;20310:21;20344:70;16925:42;20374:10;20394:4;20401:12;20344:29;:70::i;:::-;20427:23;20453:22;:20;:22::i;:::-;20427:48;;20488:19;20510:56;20550:15;20510:35;20527:17;;20510:12;:16;;:35;;;;:::i;:56::-;20635:11;;20629:18;;;;:5;:18;;;;;:29;;;20488:78;;-1:-1:-1;20615:43:0;;20488:78;20615:43;:::i;:::-;20590:11;;20584:18;;;;:5;:18;;;;;;;;:28;;:74;20582:77;;;:96;;-1:-1:-1;20663:15:0;;;;20582:96;20579:460;;;20754:11;;20694:20;20748:18;;;:5;:18;;;;;;;:29;;;;20717:28;;;:60;;20748:29;20717:60;:::i;:::-;20694:83;-1:-1:-1;20792:20:0;20815:65;20832:47;20867:11;20832:30;:12;20694:83;20832:16;:30::i;:47::-;20815:12;;:16;:65::i;:::-;20792:88;-1:-1:-1;20895:51:0;16925:42;20921:10;20792:88;20895:25;:51::i;:::-;-1:-1:-1;21023:4:0;;-1:-1:-1;20977:12:0;-1:-1:-1;20579:460:0;21057:11;;21051:18;;;;:5;:18;;;;;:29;;:44;;21084:11;;21051:18;:44;;21084:11;;21051:44;:::i;:::-;;;;-1:-1:-1;;21112:11:0;;21106:18;;;;:5;:18;;;;;:34;;:50;;21144:12;;21106:18;:50;;21144:12;;21106:50;:::i;:::-;;;;-1:-1:-1;;21182:10:0;21167:26;;;;:14;:26;;;;;;;;21194:11;;21167:39;;;;;;;:54;;21210:11;;21167:26;:54;;21210:11;;21167:54;:::i;:::-;;;;-1:-1:-1;;21266:11:0;;21237:41;;21241:10;;-1:-1:-1;;;;;;;;;;;21237:41:0;;;21253:11;8970:25:1;;9026:2;9011:18;;9004:34;8958:2;8943:18;;8796:248;21237:41:0;;;;;;;;21296:16;21293:60;;;21328:11;:13;;;:11;:13;;;:::i;:::-;;;;;;21293:60;20157:1204;;;20101:1260;:::o;26134:135::-;26195:7;26221:39;26255:4;26221:29;26236:13;:11;:13::i;:::-;26221:10;;:14;:29::i;:39::-;26214:46;26134:135;-1:-1:-1;;26134:135:0:o;23221:649::-;23287:17;;;;23279:57;;;;-1:-1:-1;;;23279:57:0;;10073:2:1;23279:57:0;;;10055:21:1;10112:2;10092:18;;;10085:30;10151:29;10131:18;;;10124:57;10198:18;;23279:57:0;9871:351:1;23279:57:0;23388:1;23355:20;;;:5;:20;;;;;;;;:30;;23347:65;;;;-1:-1:-1;;;23347:65:0;;;;;;;:::i;:::-;23449:20;;;;:5;:20;;;;;:31;;;23431:15;:49;23423:88;;;;-1:-1:-1;;;23423:88:0;;10429:2:1;23423:88:0;;;10411:21:1;10468:2;10448:18;;;10441:30;-1:-1:-1;;;10487:18:1;;;10480:54;10551:18;;23423:88:0;10227:348:1;23423:88:0;23606:10;23522:23;23592:25;;;:13;:25;;;;;;;;:40;;;;;;;;;23548:26;;;:14;:26;;;;;:41;;;;;;;;;23522:23;;23548:84;;;:::i;:::-;23522:110;;23669:1;23651:15;:19;23643:51;;;;-1:-1:-1;;;23643:51:0;;10782:2:1;23643:51:0;;;10764:21:1;10821:2;10801:18;;;10794:30;-1:-1:-1;;;10840:18:1;;;10833:48;10898:18;;23643:51:0;10580:342:1;23643:51:0;23763:10;23748:26;;;;:14;:26;;;;;;;;:41;;;;;;;;;23705:25;;;:13;:25;;;;;:40;;;;;;;;;:84;23807:12;;23800:62;;-1:-1:-1;;;;;23807:12:0;;;;23846:15;23800:33;:62::i;:::-;23268:602;23221:649;:::o;26277:135::-;26338:7;26364:39;26398:4;26364:29;26379:13;:11;:13::i;21680:1533::-;14565:7;14592:6;-1:-1:-1;;;;;14592:6:0;13753:10;17481:23;;:59;;-1:-1:-1;17508:16:0;;-1:-1:-1;;;;;17508:16:0;;;;;13753:10;17508:32;17481:59;17473:121;;;;-1:-1:-1;;;17473:121:0;;11486:2:1;17473:121:0;;;11468:21:1;11525:2;11505:18;;;11498:30;11564:34;11544:18;;;11537:62;-1:-1:-1;;;11615:18:1;;;11608:47;11672:19;;17473:121:0;11284:413:1;17473:121:0;17619:11;;17644:1;17613:18;;;:5;:18;;;;;;;;:28;;17605:80;;;;-1:-1:-1;;;17605:80:0;;11904:2:1;17605:80:0;;;11886:21:1;11943:2;11923:18;;;11916:30;11982:34;11962:18;;;11955:62;-1:-1:-1;;;12033:18:1;;;12026:34;12077:19;;17605:80:0;11702:400:1;17605:80:0;21814:11:::1;::::0;21839:1:::1;21808:18:::0;;;:5:::1;:18;::::0;;;;;;;:28:::1;::::0;21800:63:::1;;;;-1:-1:-1::0;;;21800:63:0::1;;;;;;;:::i;:::-;21897:1;21882:12;:16;21874:25;;;::::0;::::1;;21919:14;::::0;;;:6:::1;:14;::::0;;;;;::::1;;21918:15;21910:47;;;::::0;-1:-1:-1;;;21910:47:0;;12309:2:1;21910:47:0::1;::::0;::::1;12291:21:1::0;12348:2;12328:18;;;12321:30;-1:-1:-1;;;12367:18:1;;;12360:50;12427:18;;21910:47:0::1;12107:344:1::0;21910:47:0::1;22025:11;::::0;22019:18:::1;::::0;;;:5:::1;:18;::::0;;;;:29:::1;;::::0;22004:44:::1;::::0;:12;:44:::1;:::i;:::-;21979:11;::::0;21973:18:::1;::::0;;;:5:::1;:18;::::0;;;;;;;:28:::1;::::0;:75:::1;21971:78:::0;::::1;::::0;:97:::1;;-1:-1:-1::0;22053:15:0::1;::::0;::::1;;21971:97;21968:1234;;;22156:11;::::0;22085:31:::1;22150:18:::0;;;:5:::1;:18;::::0;;;;;;:29:::1;::::0;::::1;::::0;22119:28;::::1;::::0;:60:::1;::::0;22150:29;22119:60:::1;:::i;:::-;22085:94:::0;-1:-1:-1;22194:29:0::1;22226:38;22085:94:::0;22226:12;:38:::1;:::i;:::-;22194:70;;22279:30;22312:107;22380:5;:22;22386:11;;22400:1;22386:15;;;;:::i;:::-;22380:22;;;;;;;;;;;:38;;;22313:61;22352:21;22313:5;:18;22319:11;;22313:18;;;;;;;;;;;:34;;;:38;;:61;;;;:::i;22312:107::-;22279:140;;22467:23;22434:5;:18;22440:11;;22434:18;;;;;;;;;;;:29;;;:56;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;22505:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;;;;22530:11:::1;::::0;22505:37;;;;;;;:64;;22546:23;;22505:24;:64:::1;::::0;22546:23;;22505:64:::1;:::i;:::-;::::0;;;-1:-1:-1;;22630:11:0::1;::::0;22591:51:::1;::::0;-1:-1:-1;;;;;22591:51:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;22591:51:0;::::1;::::0;22605:23;8970:25:1;;9026:2;9011:18;;9004:34;8958:2;8943:18;;8796:248;22591:51:0::1;;;;;;;;22659:11;:13:::0;;;:11:::1;:13;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;22695:11:0::1;::::0;22689:18:::1;::::0;;;:5:::1;:18;::::0;;;;:29:::1;;:55:::0;;22722:22;;22689:18;:55:::1;::::0;22722:22;;22689:55:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;22759:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;;;;22784:11:::1;::::0;22759:37;;;;;;;:63;;22800:22;;22759:24;:63:::1;::::0;22800:22;;22759:63:::1;:::i;:::-;::::0;;;-1:-1:-1;;22882:11:0::1;::::0;22844:50:::1;::::0;-1:-1:-1;;;;;22844:50:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;22844:50:0;::::1;::::0;22858:22;8970:25:1;;9026:2;9011:18;;9004:34;8958:2;8943:18;;8796:248;22844:50:0::1;;;;;;;;-1:-1:-1::0;;;22909:14:0::1;::::0;;;:6:::1;:14;::::0;;;;:21;;-1:-1:-1;;22909:21:0::1;22926:4;22909:21;::::0;;18963:1130;;;18920:1173::o;21968:1234::-:1;22971:11;::::0;22965:18:::1;::::0;;;:5:::1;:18;::::0;;;;:29:::1;;:45:::0;;22998:12;;22965:18;:45:::1;::::0;22998:12;;22965:45:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;23025:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;;;;23050:11:::1;::::0;23025:37;;;;;;;:53;;23066:12;;23025:24;:53:::1;::::0;23066:12;;23025:53:::1;:::i;:::-;::::0;;;-1:-1:-1;;23142:11:0::1;::::0;23100:54:::1;::::0;;12658:25:1;;;12714:2;12699:18;;12692:34;;;12742:18;;;12735:34;;;;-1:-1:-1;;;;;23100:54:0;::::1;::::0;::::1;::::0;12646:2:1;12631:18;23100:54:0::1;;;;;;;23169:14;::::0;;;:6:::1;:14;::::0;;;;:21;;-1:-1:-1;;23169:21:0::1;23186:4;23169:21;::::0;;21680:1533;;;:::o;28211:99::-;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;28277:17:::1;:25:::0;;-1:-1:-1;;28277:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28211:99::o;26420:267::-;26486:7;26506:23;26531:22;:20;:22::i;:::-;26506:47;;26564:20;26587:25;26596:15;26587:8;:25::i;:::-;26660:17;;26564:48;;-1:-1:-1;26631:25:0;26564:48;26631:10;:25;:::i;:::-;26630:47;;;;:::i;:::-;26623:54;26420:267;-1:-1:-1;;;;26420:267:0:o;18187:292::-;18255:14;18281:21;18317:8;18305:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18305:28:0;;;;;;;;;;;;;;;;;18281:52;;18348:9;18344:104;18364:19;;;18344:104;;;18418:5;:18;18424:8;;18433:1;18424:11;;;;;;;:::i;:::-;;;;;;;18418:18;;;;;;;;;;;18406:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;18413:1;18406:9;;;;;;;;:::i;:::-;;;;;;:30;;;;18386:3;;;;;:::i;:::-;;;;18344:104;;;-1:-1:-1;18465:6:0;18187:292;-1:-1:-1;;;18187:292:0:o;24636:350::-;24726:7;24746:23;24784:9;24780:166;24800:18;;;24780:166;;;-1:-1:-1;;;;;24899:23:0;;;;;;:13;:23;;;;;;24923:7;;24931:1;24923:10;;;;;;;:::i;:::-;;;;;;;24899:35;;;;;;;;;;;;24860:14;:24;24875:8;-1:-1:-1;;;;;24860:24:0;-1:-1:-1;;;;;24860:24:0;;;;;;;;;;;;:36;24885:7;;24893:1;24885:10;;;;;;;:::i;:::-;;;;;;;24860:36;;;;;;;;;;;;:74;;;;:::i;:::-;24841:93;;;;:::i;:::-;;-1:-1:-1;24821:3:0;;;;:::i;:::-;;;;24780:166;;;-1:-1:-1;24963:15:0;24636:350;-1:-1:-1;;;;24636:350:0:o;25910:103::-;25953:7;15738:42;-1:-1:-1;;;;;25980:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26913:194;27016:7;27043:56;27082:16;27043:34;27059:17;;27043:11;:15;;:34;;;;:::i;:56::-;27036:63;26913:194;-1:-1:-1;;;26913:194:0:o;26695:210::-;26793:7;26820:77;26880:16;26820:55;26871:3;26820:46;26848:17;;26820:23;26832:10;26820:11;:23::i;:::-;:27;;:46::i;21369:303::-;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;21478:9:::1;21474:191;21494:28:::0;;::::1;21474:191;;;21621:17;;21639:1;21621:20;;;;;;;:::i;:::-;;;;;;:32;;;21544:14;:44;21559:17;;21577:1;21559:20;;;;;;;:::i;:::-;;;;;;:28;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21544:44:0::1;-1:-1:-1::0;;;;;21544:44:0::1;;;;;;;;;;;;:74;21589:17;;21607:1;21589:20;;;;;;;:::i;:::-;;;::::0;;;::::1;:28;21544:74:::0;;-1:-1:-1;21544:74:0::1;::::0;::::1;::::0;;;;;;21589:28:::1;21544:74:::0;:109;21524:4;::::1;::::0;::::1;:::i;:::-;;;;21474:191;;25751:151:::0;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;25843:51:::1;25878:7;14565::::0;14592:6;-1:-1:-1;;;;;14592:6:0;;14527:79;25878:7:::1;-1:-1:-1::0;;;;;25843:34:0;::::1;::::0;25886:7;25843:34:::1;:51::i;25003:274::-:0;25102:16;;;25116:1;25102:16;;;;;;;;25058:7;;;;25102:16;25116:1;25102:16;;;;;;;;-1:-1:-1;;25141:4:0;;25131:7;;;;-1:-1:-1;;;;;;25141:4:0;;25131:7;;-1:-1:-1;25141:4:0;;25131:7;;;;:::i;:::-;;;;;;:14;-1:-1:-1;;;;;25131:14:0;;;-1:-1:-1;;;;;25131:14:0;;;;;16925:42;25156:4;25161:1;25156:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25156:14:0;;;:7;;;;;;;;;:14;25208:6;;:33;;-1:-1:-1;;;25208:33:0;;25181:24;;25208:6;;;;;:19;;:33;;25228:7;;25236:4;;25208:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25208:33:0;;;;;;;;;;;;:::i;:::-;25181:60;;25259:7;25267:1;25259:10;;;;;;;;:::i;:::-;;;;;;;25252:17;;;;25003:274;;;:::o;27974:124::-;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;28060:16:::1;:30:::0;;-1:-1:-1;;;;;28060:30:0;;::::1;;;-1:-1:-1::0;;;;;;28060:30:0;;::::1;::::0;;;::::1;::::0;;27974:124::o;18489:149::-;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;18589:15:::1;::::0;;;:5:::1;:15;::::0;;;;;:26:::1;;:39:::0;18489:149::o;25346:195::-;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;25421:12:::1;14592:6:::0;;25438:35:::1;::::0;-1:-1:-1;;;;;14592:6:0;;;;25458:10;;25421:12;25438:35;25421:12;25438:35;25458:10;14592:6;25438:35:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25419:54;;;25492:7;25484:49;;;::::0;-1:-1:-1;;;25484:49:0;;15563:2:1;25484:49:0::1;::::0;::::1;15545:21:1::0;15602:2;15582:18;;;15575:30;15641:31;15621:18;;;15614:59;15690:18;;25484:49:0::1;15361:353:1::0;14973:109:0;14739:6;;-1:-1:-1;;;;;14739:6:0;13753:10;14739:22;14731:67;;;;-1:-1:-1;;;14731:67:0;;;;;;;:::i;:::-;15046:28:::1;15065:8;15046:18;:28::i;:::-;14973:109:::0;:::o;27478:294::-;27582:11;;27530:7;27576:18;;;:5;:18;;;;;:34;;;27624:18;;;;27621:111;;;27717:3;27701:12;;27695:3;:18;;;;:::i;:::-;27676:38;;:15;:38;:::i;:::-;:44;;;;:::i;:::-;27658:62;;27621:111;27749:15;27478:294;-1:-1:-1;27478:294:0:o;4766:98::-;4824:7;4851:5;4855:1;4851;:5;:::i;4872:98::-;4930:7;4957:5;4961:1;4957;:5;:::i;4660:98::-;4718:7;4745:5;4749:1;4745;:5;:::i;25549:194::-;25625:12;25642:8;-1:-1:-1;;;;;25642:13:0;25663:7;25642:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25623:52;;;25694:7;25686:49;;;;-1:-1:-1;;;25686:49:0;;15563:2:1;25686:49:0;;;15545:21:1;15602:2;15582:18;;;15575:30;15641:31;15621:18;;;15614:59;15690:18;;25686:49:0;15361:353:1;10353:211:0;10497:58;;-1:-1:-1;;;;;15911:32:1;;10497:58:0;;;15893:51:1;15960:18;;;15953:34;;;10470:86:0;;10490:5;;-1:-1:-1;;;10520:23:0;15866:18:1;;10497:58:0;;;;-1:-1:-1;;10497:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10497:58:0;-1:-1:-1;;;;;;10497:58:0;;;;;;;;;;10470:19;:86::i;10572:248::-;10743:68;;-1:-1:-1;;;;;16256:15:1;;;10743:68:0;;;16238:34:1;16308:15;;16288:18;;;16281:43;16340:18;;;16333:34;;;10716:96:0;;10736:5;;-1:-1:-1;;;10766:27:0;16173:18:1;;10743:68:0;15998:375:1;15188:266:0;-1:-1:-1;;;;;15276:22:0;;15254:110;;;;-1:-1:-1;;;15254:110:0;;16580:2:1;15254:110:0;;;16562:21:1;16619:2;16599:18;;;16592:30;16658:34;16638:18;;;16631:62;-1:-1:-1;;;16709:18:1;;;16702:36;16755:19;;15254:110:0;16378:402:1;15254:110:0;15401:6;;;15380:38;;-1:-1:-1;;;;;15380:38:0;;;;15401:6;;;15380:38;;;15429:6;:17;;-1:-1:-1;;;;;;15429:17:0;-1:-1:-1;;;;;15429:17:0;;;;;;;;;;15188:266::o;12776:716::-;13200:23;13226:69;13254:4;13226:69;;;;;;;;;;;;;;;;;13234:5;-1:-1:-1;;;;;13226:27:0;;;:69;;;;;:::i;:::-;13310:17;;13200:95;;-1:-1:-1;13310:21:0;13306:179;;13407:10;13396:30;;;;;;;;;;;;:::i;:::-;13388:85;;;;-1:-1:-1;;;13388:85:0;;17237:2:1;13388:85:0;;;17219:21:1;17276:2;17256:18;;;17249:30;17315:34;17295:18;;;17288:62;-1:-1:-1;;;17366:18:1;;;17359:40;17416:19;;13388:85:0;17035:406:1;6704:229:0;6841:12;6873:52;6895:6;6903:4;6909:1;6912:12;6841;7497;7511:23;7538:6;-1:-1:-1;;;;;7538:11:0;7557:5;7564:4;7538:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7496:73;;;;7587:69;7614:6;7622:7;7631:10;7643:12;7587:26;:69::i;:::-;7580:76;7209:455;-1:-1:-1;;;;;;;7209:455:0:o;8768:644::-;8953:12;8982:7;8978:427;;;9010:10;:17;9031:1;9010:22;9006:290;;-1:-1:-1;;;;;6145:19:0;;;9220:60;;;;-1:-1:-1;;;9220:60:0;;18597:2:1;9220:60:0;;;18579:21:1;18636:2;18616:18;;;18609:30;18675:31;18655:18;;;18648:59;18724:18;;9220:60:0;18395:353:1;9220:60:0;-1:-1:-1;9317:10:0;9310:17;;8978:427;9360:33;9368:10;9380:12;9896:17;;:21;9892:388;;10128:10;10122:17;10185:15;10172:10;10168:2;10164:19;10157:44;9892:388;10255:12;10248:20;;-1:-1:-1;;;10248:20:0;;;;;;;;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;573:643::-;687:6;695;748:2;736:9;727:7;723:23;719:32;716:52;;;764:1;761;754:12;716:52;804:9;791:23;833:18;874:2;866:6;863:14;860:34;;;890:1;887;880:12;860:34;928:6;917:9;913:22;903:32;;973:7;966:4;962:2;958:13;954:27;944:55;;995:1;992;985:12;944:55;1035:2;1022:16;1061:2;1053:6;1050:14;1047:34;;;1077:1;1074;1067:12;1047:34;1130:7;1125:2;1115:6;1112:1;1108:14;1104:2;1100:23;1096:32;1093:45;1090:65;;;1151:1;1148;1141:12;1090:65;1182:2;1174:11;;;;;1204:6;;-1:-1:-1;573:643:1;;-1:-1:-1;;;;573:643:1:o;1905:173::-;1973:20;;-1:-1:-1;;;;;2022:31:1;;2012:42;;2002:70;;2068:1;2065;2058:12;2083:186;2142:6;2195:2;2183:9;2174:7;2170:23;2166:32;2163:52;;;2211:1;2208;2201:12;2163:52;2234:29;2253:9;2234:29;:::i;2274:118::-;2360:5;2353:13;2346:21;2339:5;2336:32;2326:60;;2382:1;2379;2372:12;2397:309;2462:6;2470;2523:2;2511:9;2502:7;2498:23;2494:32;2491:52;;;2539:1;2536;2529:12;2491:52;2575:9;2562:23;2552:33;;2635:2;2624:9;2620:18;2607:32;2648:28;2670:5;2648:28;:::i;:::-;2695:5;2685:15;;;2397:309;;;;;:::o;2711:367::-;2774:8;2784:6;2838:3;2831:4;2823:6;2819:17;2815:27;2805:55;;2856:1;2853;2846:12;2805:55;-1:-1:-1;2879:20:1;;2922:18;2911:30;;2908:50;;;2954:1;2951;2944:12;2908:50;2991:4;2983:6;2979:17;2967:29;;3051:3;3044:4;3034:6;3031:1;3027:14;3019:6;3015:27;3011:38;3008:47;3005:67;;;3068:1;3065;3058:12;3005:67;2711:367;;;;;:::o;3083:437::-;3169:6;3177;3230:2;3218:9;3209:7;3205:23;3201:32;3198:52;;;3246:1;3243;3236:12;3198:52;3286:9;3273:23;3319:18;3311:6;3308:30;3305:50;;;3351:1;3348;3341:12;3305:50;3390:70;3452:7;3443:6;3432:9;3428:22;3390:70;:::i;:::-;3479:8;;3364:96;;-1:-1:-1;3083:437:1;-1:-1:-1;;;;3083:437:1:o;3525:254::-;3593:6;3601;3654:2;3642:9;3633:7;3629:23;3625:32;3622:52;;;3670:1;3667;3660:12;3622:52;3693:29;3712:9;3693:29;:::i;:::-;3683:39;3769:2;3754:18;;;;3741:32;;-1:-1:-1;;;3525:254:1:o;3784:241::-;3840:6;3893:2;3881:9;3872:7;3868:23;3864:32;3861:52;;;3909:1;3906;3899:12;3861:52;3948:9;3935:23;3967:28;3989:5;3967:28;:::i;4238:322::-;4315:6;4323;4331;4384:2;4372:9;4363:7;4359:23;4355:32;4352:52;;;4400:1;4397;4390:12;4352:52;4423:29;4442:9;4423:29;:::i;:::-;4413:39;4499:2;4484:18;;4471:32;;-1:-1:-1;4550:2:1;4535:18;;;4522:32;;4238:322;-1:-1:-1;;;4238:322:1:o;4801:1241::-;5018:2;5070:21;;;5140:13;;5043:18;;;5162:22;;;4989:4;;5018:2;5203;;5221:18;;;;5262:15;;;4989:4;5305:711;5319:6;5316:1;5313:13;5305:711;;;5378:13;;5416:9;;5404:22;;5466:11;;;5460:18;5446:12;;;5439:40;5519:11;;;5513:18;5499:12;;;5492:40;5555:4;5599:11;;;5593:18;5579:12;;;5572:40;5635:4;5679:11;;;5673:18;5659:12;;;5652:40;5715:4;5759:11;;;5753:18;5739:12;;;5732:40;5795:4;5839:11;;;5833:18;5819:12;;;5812:40;5875:4;5919:11;;;5913:18;5899:12;;;5892:40;5961:6;5952:16;;;;5991:15;;;;5341:1;5334:9;5305:711;;;-1:-1:-1;6033:3:1;;4801:1241;-1:-1:-1;;;;;;;4801:1241:1:o;6047:511::-;6142:6;6150;6158;6211:2;6199:9;6190:7;6186:23;6182:32;6179:52;;;6227:1;6224;6217:12;6179:52;6250:29;6269:9;6250:29;:::i;:::-;6240:39;;6330:2;6319:9;6315:18;6302:32;6357:18;6349:6;6346:30;6343:50;;;6389:1;6386;6379:12;6343:50;6428:70;6490:7;6481:6;6470:9;6466:22;6428:70;:::i;:::-;6047:511;;6517:8;;-1:-1:-1;6402:96:1;;-1:-1:-1;;;;6047:511:1:o;6563:248::-;6631:6;6639;6692:2;6680:9;6671:7;6667:23;6663:32;6660:52;;;6708:1;6705;6698:12;6660:52;-1:-1:-1;;6731:23:1;;;6801:2;6786:18;;;6773:32;;-1:-1:-1;6563:248:1:o;6816:653::-;6937:6;6945;6998:2;6986:9;6977:7;6973:23;6969:32;6966:52;;;7014:1;7011;7004:12;6966:52;7054:9;7041:23;7083:18;7124:2;7116:6;7113:14;7110:34;;;7140:1;7137;7130:12;7110:34;7178:6;7167:9;7163:22;7153:32;;7223:7;7216:4;7212:2;7208:13;7204:27;7194:55;;7245:1;7242;7235:12;7194:55;7285:2;7272:16;7311:2;7303:6;7300:14;7297:34;;;7327:1;7324;7317:12;7297:34;7383:7;7378:2;7370:4;7362:6;7358:17;7354:2;7350:26;7346:35;7343:48;7340:68;;;7404:1;7401;7394:12;7697:343;7899:2;7881:21;;;7938:2;7918:18;;;7911:30;-1:-1:-1;;;7972:2:1;7957:18;;7950:49;8031:2;8016:18;;7697:343::o;8401:127::-;8462:10;8457:3;8453:20;8450:1;8443:31;8493:4;8490:1;8483:15;8517:4;8514:1;8507:15;8533:128;8573:3;8604:1;8600:6;8597:1;8594:13;8591:39;;;8610:18;;:::i;:::-;-1:-1:-1;8646:9:1;;8533:128::o;8666:125::-;8706:4;8734:1;8731;8728:8;8725:34;;;8739:18;;:::i;:::-;-1:-1:-1;8776:9:1;;8666:125::o;9049:135::-;9088:3;9109:17;;;9106:43;;9129:18;;:::i;:::-;-1:-1:-1;9176:1:1;9165:13;;9049:135::o;9189:184::-;9259:6;9312:2;9300:9;9291:7;9287:23;9283:32;9280:52;;;9328:1;9325;9318:12;9280:52;-1:-1:-1;9351:16:1;;9189:184;-1:-1:-1;9189:184:1:o;9378:356::-;9580:2;9562:21;;;9599:18;;;9592:30;9658:34;9653:2;9638:18;;9631:62;9725:2;9710:18;;9378:356::o;9739:127::-;9800:10;9795:3;9791:20;9788:1;9781:31;9831:4;9828:1;9821:15;9855:4;9852:1;9845:15;12780:217;12820:1;12846;12836:132;;12890:10;12885:3;12881:20;12878:1;12871:31;12925:4;12922:1;12915:15;12953:4;12950:1;12943:15;12836:132;-1:-1:-1;12982:9:1;;12780:217::o;13002:168::-;13042:7;13108:1;13104;13100:6;13096:14;13093:1;13090:21;13085:1;13078:9;13071:17;13067:45;13064:71;;;13115:18;;:::i;:::-;-1:-1:-1;13155:9:1;;13002:168::o;13175:127::-;13236:10;13231:3;13227:20;13224:1;13217:31;13267:4;13264:1;13257:15;13291:4;13288:1;13281:15;13307:729;13477:4;13525:2;13514:9;13510:18;13555:6;13544:9;13537:25;13581:2;13619;13614;13603:9;13599:18;13592:30;13642:6;13677;13671:13;13708:6;13700;13693:22;13746:2;13735:9;13731:18;13724:25;;13784:2;13776:6;13772:15;13758:29;;13805:1;13815:195;13829:6;13826:1;13823:13;13815:195;;;13894:13;;-1:-1:-1;;;;;13890:39:1;13878:52;;13985:15;;;;13950:12;;;;13926:1;13844:9;13815:195;;;-1:-1:-1;14027:3:1;;13307:729;-1:-1:-1;;;;;;;13307:729:1:o;14041:1105::-;14136:6;14167:2;14210;14198:9;14189:7;14185:23;14181:32;14178:52;;;14226:1;14223;14216:12;14178:52;14259:9;14253:16;14288:18;14329:2;14321:6;14318:14;14315:34;;;14345:1;14342;14335:12;14315:34;14383:6;14372:9;14368:22;14358:32;;14428:7;14421:4;14417:2;14413:13;14409:27;14399:55;;14450:1;14447;14440:12;14399:55;14479:2;14473:9;14501:2;14497;14494:10;14491:36;;;14507:18;;:::i;:::-;14553:2;14550:1;14546:10;14585:2;14579:9;14648:2;14644:7;14639:2;14635;14631:11;14627:25;14619:6;14615:38;14703:6;14691:10;14688:22;14683:2;14671:10;14668:18;14665:46;14662:72;;;14714:18;;:::i;:::-;14750:2;14743:22;14800:18;;;14834:15;;;;-1:-1:-1;14876:11:1;;;14872:20;;;14904:19;;;14901:39;;;14936:1;14933;14926:12;14901:39;14960:11;;;;14980:135;14996:6;14991:3;14988:15;14980:135;;;15062:10;;15050:23;;15013:12;;;;15093;;;;14980:135;;;15134:6;14041:1105;-1:-1:-1;;;;;;;;14041:1105:1:o;16785:245::-;16852:6;16905:2;16893:9;16884:7;16880:23;16876:32;16873:52;;;16921:1;16918;16911:12;16873:52;16953:9;16947:16;16972:28;16994:5;16972:28;:::i;17853:258::-;17925:1;17935:113;17949:6;17946:1;17943:13;17935:113;;;18025:11;;;18019:18;18006:11;;;17999:39;17971:2;17964:10;17935:113;;;18066:6;18063:1;18060:13;18057:48;;;-1:-1:-1;;18101:1:1;18083:16;;18076:27;17853:258::o;18116:274::-;18245:3;18283:6;18277:13;18299:53;18345:6;18340:3;18333:4;18325:6;18321:17;18299:53;:::i;:::-;18368:16;;;;;18116:274;-1:-1:-1;;18116:274:1:o;18753:383::-;18902:2;18891:9;18884:21;18865:4;18934:6;18928:13;18977:6;18972:2;18961:9;18957:18;18950:34;18993:66;19052:6;19047:2;19036:9;19032:18;19027:2;19019:6;19015:15;18993:66;:::i;:::-;19120:2;19099:15;-1:-1:-1;;19095:29:1;19080:45;;;;19127:2;19076:54;;18753:383;-1:-1:-1;;18753:383:1:o
Swarm Source
ipfs://c1964ada28cfdf5fd90cf7521cc737beec853b6f5a33f412fae9ee996b14ab7a
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.