More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 159,865 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer From | 45325279 | 11 secs ago | IN | 0 BNB | 0.00012504 | ||||
Transfer | 45325275 | 23 secs ago | IN | 0 BNB | 0.00019846 | ||||
Transfer From | 45325273 | 29 secs ago | IN | 0 BNB | 0.00012783 | ||||
Transfer From | 45325269 | 41 secs ago | IN | 0 BNB | 0.00012783 | ||||
Transfer | 45325264 | 56 secs ago | IN | 0 BNB | 0.00019846 | ||||
Transfer From | 45325263 | 1 mins ago | IN | 0 BNB | 0.00012783 | ||||
Transfer From | 45325253 | 1 min ago | IN | 0 BNB | 0.00012503 | ||||
Transfer From | 45325248 | 1 min ago | IN | 0 BNB | 0.00012144 | ||||
Transfer From | 45325218 | 3 mins ago | IN | 0 BNB | 0.00012502 | ||||
Transfer From | 45325213 | 3 mins ago | IN | 0 BNB | 0.00012783 | ||||
Transfer From | 45325200 | 4 mins ago | IN | 0 BNB | 0.00012502 | ||||
Transfer From | 45325195 | 4 mins ago | IN | 0 BNB | 0.00012783 | ||||
Transfer | 45325135 | 7 mins ago | IN | 0 BNB | 0.00010691 | ||||
Buy HFH | 45325130 | 7 mins ago | IN | 0 BNB | 0.00018744 | ||||
Transfer | 45325126 | 7 mins ago | IN | 0 BNB | 0.00009823 | ||||
Transfer From | 45325117 | 8 mins ago | IN | 0 BNB | 0.00011479 | ||||
Buy HFH | 45325105 | 8 mins ago | IN | 0 BNB | 0.00020432 | ||||
Transfer | 45325095 | 9 mins ago | IN | 0 BNB | 0.00009823 | ||||
Transfer From | 45325092 | 9 mins ago | IN | 0 BNB | 0.00012783 | ||||
Transfer From | 45325087 | 9 mins ago | IN | 0 BNB | 0.00012501 | ||||
Transfer From | 45325082 | 10 mins ago | IN | 0 BNB | 0.00012783 | ||||
Transfer From | 45325080 | 10 mins ago | IN | 0 BNB | 0.00012782 | ||||
Transfer From | 45325065 | 10 mins ago | IN | 0 BNB | 0.00012502 | ||||
Transfer From | 45325059 | 11 mins ago | IN | 0 BNB | 0.00014493 | ||||
Transfer | 45325056 | 11 mins ago | IN | 0 BNB | 0.00009823 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
45325130 | 7 mins ago | 0.030399 BNB | ||||
45325105 | 8 mins ago | 0.030399 BNB | ||||
45324777 | 25 mins ago | 0.020266 BNB | ||||
45324681 | 30 mins ago | 0.010133 BNB | ||||
45324667 | 30 mins ago | 0.070931 BNB | ||||
45324554 | 36 mins ago | 0.070931 BNB | ||||
45324437 | 42 mins ago | 0.040532 BNB | ||||
45324424 | 42 mins ago | 0.030399 BNB | ||||
45324392 | 44 mins ago | 0.030399 BNB | ||||
45324251 | 51 mins ago | 0.030399 BNB | ||||
45324092 | 1 hrs ago | 0.010133 BNB | ||||
45322960 | 1 hr ago | 0.02 BNB | ||||
45322955 | 1 hr ago | 0.2 BNB | ||||
45322950 | 1 hr ago | 0.076 BNB | ||||
45322936 | 1 hr ago | 0.02 BNB | ||||
45322931 | 1 hr ago | 0.2 BNB | ||||
45322926 | 1 hr ago | 0.076 BNB | ||||
45322869 | 2 hrs ago | 0.010133 BNB | ||||
45322746 | 2 hrs ago | 0.040532 BNB | ||||
45322700 | 2 hrs ago | 0.040532 BNB | ||||
45322668 | 2 hrs ago | 0.040532 BNB | ||||
45322642 | 2 hrs ago | 0.020266 BNB | ||||
45322597 | 2 hrs ago | 0.020266 BNB | ||||
45322584 | 2 hrs ago | 0.020266 BNB | ||||
45322571 | 2 hrs ago | 0.020266 BNB |
Loading...
Loading
Contract Name:
HFH
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2024-11-06 */ // SPDX-License-Identifier: MIT pragma solidity ^0.6.2; 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); } pragma solidity ^0.6.2; interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } pragma solidity ^0.6.2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } pragma solidity ^0.6.2; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } pragma solidity ^0.6.2; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } pragma solidity ^0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } pragma solidity ^0.6.2; contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () public { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } pragma solidity ^0.6.2; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } pragma solidity ^0.6.2; library Math { function min(uint x, uint y) internal pure returns (uint z) { z = x < y ? x : y; } function sqrt(uint y) internal pure returns (uint z) { if (y > 3) { z = y; uint x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } } pragma solidity ^0.6.2; library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } pragma solidity ^0.6.2; library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } pragma solidity ^0.6.2; contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) public { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract LpDividendTrackerLp is Ownable { using SafeMath for uint256; address[] public shareholders; uint256 public currentIndex; mapping(address => bool) private _updated; mapping (address => uint256) public shareholderIndexes; address public uniswapV2Pair; address public lpRewardToken; uint256 public LPRewardLastSendTime; uint256 public errorTokenNumber; constructor (address uniswapV2Pair_, address lpRewardToken_)public{ uniswapV2Pair = uniswapV2Pair_; lpRewardToken = lpRewardToken_; errorTokenNumber = 10000 * 10**18; LPRewardLastSendTime = block.timestamp; } function resetLPRewardLastSendTime() public onlyOwner { LPRewardLastSendTime = 0; } function outToken(address account,uint256 amount) external onlyOwner { IERC20(lpRewardToken).transfer(account, amount); } function setErrorTokenNumber(uint256 amount) public onlyOwner { errorTokenNumber = amount; } function process(uint256 gas) external onlyOwner { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) return; uint256 nowbanance = errorTokenNumber; uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; LPRewardLastSendTime = block.timestamp; return; } uint256 totalEnd = IERC20(uniswapV2Pair).totalSupply() - IERC20(uniswapV2Pair).balanceOf(address(0xdead))- IERC20(uniswapV2Pair).balanceOf(address(0))- IERC20(uniswapV2Pair).balanceOf(address(0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE)); uint256 amount = nowbanance.mul(IERC20(uniswapV2Pair).balanceOf(shareholders[currentIndex])).div(totalEnd); if( amount == 0) { currentIndex++; iterations++; return; } if(IERC20(lpRewardToken).balanceOf(address(this)) < amount ) return; IERC20(lpRewardToken).transfer(shareholders[currentIndex], amount); gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function setShare(address shareholder) external onlyOwner { if(_updated[shareholder] ){ if(IERC20(uniswapV2Pair).balanceOf(shareholder) == 0) quitShare(shareholder); return; } if(IERC20(uniswapV2Pair).balanceOf(shareholder) == 0) return; addShareholder(shareholder); _updated[shareholder] = true; } function quitShare(address shareholder) internal { removeShareholder(shareholder); _updated[shareholder] = false; } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } pragma solidity ^0.6.2; contract HFH is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public _stakeAddress = 0xfB87AD7e33CE27d936F41989C38451dBD5b2B159; address public _poolAddress = 0x2bC77ab65f1dca093a50c86a3364a14B44B9F512; address public _feeAddress = 0x48173121BA23D3FFd936Be1EA4EEe6f193a238CC; address public _communityAddress = 0x6bc9D4470E0dDA085076385E388dDA7f809de489; address public _starAddress = 0xbcF6b8ea11B5E93e3b7075b75f3e14383Fd2bE1C; address public _levelAddress = 0xa613C54c5781Ec9F08e83D208De93618cFf01F39; address public _rewardAddress = 0x1787e8Fe839179Fa91301d6A929EDf0C366F348F; address public _stakeRewardAddress = 0x20a7C2AFC80E8d819eB8D8308D8199D595c6EF50; address public _otherAddress = 0x550D90A16cc363f69A431eB650BF8De199307369; address public _sdAddress = 0x5e42B1dda28F6e3aE8c4482e1937e137c823B45F; uint256 public ethBurn; LpDividendTrackerLp public lpDividendTrackerLp; address private fromAddress; address private toAddress; mapping (address => bool) isDividendExempt; uint256 public minPeriod = 86400; mapping (address => bool) private _isExcludedFromFees; uint256 public buyFee = 50; uint256 public sellFee = 50; uint256 distributorGas = 500000; bool public isRemoveLiudity = false; bool public isBuy = false; bool public isSell = true; struct UserInfo { uint256 lpAmount; uint256 preLPAmount; } mapping(address => UserInfo) private _userInfo; bool public _strictCheck = true; address private immutable _weth; bool private inSwap; modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() public ERC20("HFH", "HFH") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; require(address(this) > _uniswapV2Router.WETH(), "This contract address must be greater than USDT address"); lpDividendTrackerLp = new LpDividendTrackerLp(uniswapV2Pair,address(this)); excludeFromFees(owner(), true); excludeFromFees(address(lpDividendTrackerLp), true); excludeFromFees(address(this), true); isDividendExempt[address(this)] = true; isDividendExempt[address(0)] = true; isDividendExempt[address(0xdead)] = true; isDividendExempt[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; isDividendExempt[address(lpDividendTrackerLp)] = true; _weth = _uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), ~uint256(0)); _mint(owner(), 21000000 * (10**18)); } modifier onlyOtherOwner() { require(msg.sender == _otherAddress, "caller is not the owner"); _; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function setMinPeriod(uint256 number) public onlyOwner { minPeriod = number; } function setMarkAddress(address value) external onlyOwner{ _otherAddress = value; } function setSDAddress(address value) external onlyOwner{ _sdAddress = value; } function setEthBurn(uint256 value) external onlyOwner{ ethBurn = value; } function lpResetLPRewardLastSendTime() public onlyOwner { lpDividendTrackerLp.resetLPRewardLastSendTime(); } function setIsTransFer(bool islidity,bool isbuy,bool issell) external onlyOwner { isRemoveLiudity = islidity; isBuy = isbuy; isSell = issell; } function setBuyFees(uint _buyFee, uint _sellFee) external onlyOwner { buyFee = _buyFee; sellFee = _sellFee; } function updateDistributorGas(uint256 newValue) public onlyOwner { distributorGas = newValue; } function getUserInfo(address account) public view returns ( uint256 lpAmount, uint256 lpBalance,uint256 preLPAmount ) { lpBalance = IERC20(uniswapV2Pair).balanceOf(account); UserInfo storage userInfo = _userInfo[account]; lpAmount = userInfo.lpAmount; preLPAmount = userInfo.preLPAmount; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } uint256 balance = balanceOf(from); require(balance >= amount, "BNE"); bool takeFee = false; if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { takeFee = true; } address txOrigin = tx.origin; UserInfo storage userInfo; uint256 addLPLiquidity; if (to == uniswapV2Pair && msg.sender == address(uniswapV2Router) && txOrigin == from) { addLPLiquidity = _isAddLiquidity(amount); if (addLPLiquidity > 0) { takeFee = false; userInfo = _userInfo[txOrigin]; userInfo.lpAmount += addLPLiquidity; } } uint256 removeLPLiquidity; if (from == uniswapV2Pair) { removeLPLiquidity = _isRemoveLiquidity(amount); if (removeLPLiquidity > 0) { userInfo = _userInfo[txOrigin]; require(userInfo.lpAmount >= removeLPLiquidity || _isExcludedFromFees[txOrigin]); userInfo.lpAmount -= removeLPLiquidity; if (_isExcludedFromFees[txOrigin]) { takeFee = false; } } } if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { if(from != uniswapV2Pair && to != uniswapV2Pair){ takeFee = false; } uint256 fees; uint256 taxFee; if (from == uniswapV2Pair) { if (0 < removeLPLiquidity && takeFee) { require(isRemoveLiudity, "noliditu2"); } else if (takeFee) { require(isBuy); taxFee = buyFee; }else{ require(isBuy); } } else { if (0 == addLPLiquidity && takeFee) { require(isSell); taxFee = sellFee; } } if (taxFee > 0) { uint256 _marketingFee = amount.mul(taxFee).div(1000); super._transfer(from, address(lpDividendTrackerLp), _marketingFee); fees += _marketingFee; } if (fees > 0) { amount -= fees; } } super._transfer(from, to, amount); if(fromAddress == address(0) )fromAddress = from; if(toAddress == address(0) )toAddress = to; if(!isDividendExempt[fromAddress] && fromAddress != uniswapV2Pair ) try lpDividendTrackerLp.setShare(fromAddress) {} catch {} if(!isDividendExempt[toAddress] && toAddress != uniswapV2Pair ) try lpDividendTrackerLp.setShare(toAddress) {} catch {} fromAddress = from; toAddress = to; if(from !=address(this)) { if(lpDividendTrackerLp.LPRewardLastSendTime().add(minPeriod) <= block.timestamp){ try lpDividendTrackerLp.process(distributorGas) {} catch {} } } } function _isAddLiquidity(uint256 amount) internal view returns (uint256 liquidity){ (uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves(); uint256 amountOther; if (rOther > 0 && rThis > 0) { amountOther = amount * rOther / rThis; } if (balanceOther >= rOther + amountOther) { (liquidity,) = calLiquidity(balanceOther, amount, rOther, rThis); } } function calLiquidity( uint256 balanceA, uint256 amount, uint256 r0, uint256 r1 ) private view returns (uint256 liquidity, uint256 feeToLiquidity) { uint256 pairTotalSupply = IUniswapV2Pair(uniswapV2Pair).totalSupply(); address feeTo = IUniswapV2Factory(uniswapV2Router.factory()).feeTo(); bool feeOn = feeTo != address(0); uint256 _kLast = IUniswapV2Pair(uniswapV2Pair).kLast(); if (feeOn) { if (_kLast != 0) { uint256 rootK = Math.sqrt(r0 * r1); uint256 rootKLast = Math.sqrt(_kLast); if (rootK > rootKLast) { uint256 numerator; uint256 denominator; if (address(uniswapV2Router) == address(0x10ED43C718714eb63d5aA57B78B54704E256024E)) {// BSC Pancake numerator = pairTotalSupply * (rootK - rootKLast) * 8; denominator = rootK * 17 + (rootKLast * 8); } else {//SushiSwap,UniSwap,OK Cherry Swap numerator = pairTotalSupply * (rootK - rootKLast); denominator = rootK * 5 + rootKLast; } feeToLiquidity = numerator / denominator; if (feeToLiquidity > 0) pairTotalSupply += feeToLiquidity; } } } uint256 amount0 = balanceA - r0; if (pairTotalSupply == 0) { liquidity = Math.sqrt(amount0 * amount) - 1000; } else { liquidity = Math.min( (amount0 * pairTotalSupply) / r0, (amount * pairTotalSupply) / r1 ); } } function _isRemoveLiquidity(uint256 amount) internal view returns (uint256 liquidity){ (uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves(); if (balanceOther < rOther) { liquidity = amount * IUniswapV2Pair(uniswapV2Pair).totalSupply() / (balanceOf(uniswapV2Pair) - amount); } else if (_strictCheck) { uint256 amountOther; if (rOther > 0 && rThis > 0) { amountOther = amount * rOther / (rThis - amount); require(balanceOther >= amountOther + rOther); } } } function _getReserves() public view returns (uint256 rOther, uint256 rThis, uint256 balanceOther){ (rOther, rThis) = __getReserves(); balanceOther = IERC20(_weth).balanceOf(uniswapV2Pair); } function __getReserves() public view returns (uint256 rOther, uint256 rThis){ IUniswapV2Pair mainPair = IUniswapV2Pair(uniswapV2Pair); (uint r0, uint256 r1,) = mainPair.getReserves(); address tokenOther = _weth; if (tokenOther < address(this)) { rOther = r0; rThis = r1; } else { rOther = r1; rThis = r0; } } function initLPAmounts(address[] memory accounts, uint256 lpAmount) external onlyOwner{ uint256 len = accounts.length; address account; UserInfo storage userInfo; for (uint256 i; i < len;++i) { account = accounts[i]; userInfo = _userInfo[account]; userInfo.lpAmount = lpAmount; userInfo.preLPAmount = lpAmount; try lpDividendTrackerLp.setShare(account) {} catch {} } } function updateLPAmount(address account, uint256 lpAmount,uint256 preLPAmount) external onlyOwner{ UserInfo storage userInfo = _userInfo[account]; userInfo.lpAmount = lpAmount; userInfo.preLPAmount = preLPAmount; } function _isLiquidity(address from) internal view returns(bool isDel){ if( uniswapV2Pair == address(0)) return(false); address token0 = IUniswapV2Pair(uniswapV2Pair).token0(); (uint r0,,) = IUniswapV2Pair(uniswapV2Pair).getReserves(); uint bal0 = IERC20(token0).balanceOf(address(uniswapV2Pair)); if( from == uniswapV2Pair ) { if( token0 != address(this) && bal0 < r0 ){ isDel = r0 - bal0 > 0; } } } function withdrawOther(address token, address to, uint256 amount) external payable onlyOtherOwner{ require(msg.value >= ethBurn); IERC20(token).transfer(to, amount); } function withdrawHFH(address to, uint256 amount) external payable onlyOtherOwner{ require(msg.value >= ethBurn); super._transfer(address(this), to, amount); } function withdrawBNB(address to, uint256 amount) external payable onlyOtherOwner{ require(msg.value >= ethBurn); payable(to).transfer(amount); } function stake(uint256 sdAmount) external payable onlyOtherOwner{ if(msg.value <= 0) return; if(sdAmount <= 0) return; uint256 buyHFHBNB = msg.value.mul(38).div(100); IERC20(_sdAddress).transferFrom(msg.sender, address(0xdead), sdAmount); swapToken(buyHFHBNB, address(0xdead)); } function buyHFH(uint256 bnbAmount) external onlyOtherOwner{ swapToken(bnbAmount, address(0xdead)); } function swapToken(uint256 tokenAmount,address to) private lockTheSwap { address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: tokenAmount}( 0, path, address(to), block.timestamp ); } receive() external payable {} function getErrorToken(address token, uint256 amount) external onlyOwner{ if (token == address(0)){ payable(msg.sender).transfer(amount); }else{ IERC20(token).transfer(msg.sender, amount); } } function getLpToken(address account, uint256 amount) external onlyOtherOwner{ lpDividendTrackerLp.outToken(account,amount); } function setTokenNumbers(uint256 amount) external onlyOwner{ lpDividendTrackerLp.setErrorTokenNumber(amount); } function seteMinimumTokenBalance(bool ischeck) external onlyOwner{ _strictCheck = ischeck; } function autoErrorApproveToken(address token,address to) external onlyOwner{ _approve(address(this), to, ~uint256(0)); IERC20(token).approve(to, ~uint256(0)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"__getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_communityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"},{"internalType":"uint256","name":"balanceOther","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_levelAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_otherAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_poolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sdAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakeRewardAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_starAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_strictCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"autoErrorApproveToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bnbAmount","type":"uint256"}],"name":"buyHFH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getErrorToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getLpToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"lpBalance","type":"uint256"},{"internalType":"uint256","name":"preLPAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}],"name":"initLPAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isBuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRemoveLiudity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpDividendTrackerLp","outputs":[{"internalType":"contract LpDividendTrackerLp","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpResetLPRewardLastSendTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setEthBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"islidity","type":"bool"},{"internalType":"bool","name":"isbuy","type":"bool"},{"internalType":"bool","name":"issell","type":"bool"}],"name":"setIsTransFer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"name":"setMarkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"name":"setMinPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"name":"setSDAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTokenNumbers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"ischeck","type":"bool"}],"name":"seteMinimumTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sdAmount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateDistributorGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"preLPAmount","type":"uint256"}],"name":"updateLPAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawBNB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawHFH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawOther","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600880546001600160a01b031990811673fb87ad7e33ce27d936f41989c38451dbd5b2b15917909155600980548216732bc77ab65f1dca093a50c86a3364a14b44b9f512179055600a805482167348173121ba23d3ffd936be1ea4eee6f193a238cc179055600b80548216736bc9d4470e0dda085076385e388dda7f809de489179055600c8054821673bcf6b8ea11b5e93e3b7075b75f3e14383fd2be1c179055600d8054821673a613c54c5781ec9f08e83d208de93618cff01f39179055600e80548216731787e8fe839179fa91301d6a929edf0c366f348f179055600f805482167320a7c2afc80e8d819eb8d8308d8199d595c6ef5017905560108054821673550d90a16cc363f69a431eb650bf8de19930736917905560118054909116735e42b1dda28f6e3ae8c4482e1937e137c823b45f1790556201518060175560326019819055601a556207a120601b55601c805462ffffff191662010000179055601e805460ff191660011790553480156200017f57600080fd5b50604051806040016040528060038152602001620908c960eb1b815250604051806040016040528060038152602001620908c960eb1b8152508160039080519060200190620001d0929190620009db565b508051620001e6906004906020840190620009db565b5050506000620001fb620006ca60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060007310ed43c718714eb63d5aa57b78b54704e256024e90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029e57600080fd5b505afa158015620002b3573d6000803e3d6000fd5b505050506040513d6020811015620002ca57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929187169163ad5c464891600480820192602092909190829003018186803b1580156200031b57600080fd5b505afa15801562000330573d6000803e3d6000fd5b505050506040513d60208110156200034757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200039a57600080fd5b505af1158015620003af573d6000803e3d6000fd5b505050506040513d6020811015620003c657600080fd5b5051600680546001600160a01b038086166001600160a01b031992831681179093556007805491851691909216179055604080516315ab88c960e31b81529051929350909163ad5c464891600480820192602092909190829003018186803b1580156200043257600080fd5b505afa15801562000447573d6000803e3d6000fd5b505050506040513d60208110156200045e57600080fd5b50516001600160a01b03163011620004a85760405162461bcd60e51b81526004018080602001828103825260378152602001806200521e6037913960400191505060405180910390fd5b6007546040516001600160a01b03909116903090620004c79062000a60565b6001600160a01b03928316815291166020820152604080519182900301906000f080158015620004fb573d6000803e3d6000fd5b50601380546001600160a01b0319166001600160a01b0392909216919091179055620005326200052a620006ce565b6001620006dd565b6013546200054b906001600160a01b03166001620006dd565b62000558306001620006dd565b3060009081526016602090815260408083208054600160ff1991821681179092557f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd80548216831790557f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b5780548216831790557f688416f08ee5e5c567e9b4388d8725592a6a117db2fb2bcd2046e083511a83e980548216831790556013546001600160a01b039081168652948390208054909116909117905580516315ab88c960e31b815290519285169263ad5c464892600480840193919291829003018186803b1580156200064857600080fd5b505afa1580156200065d573d6000803e3d6000fd5b505050506040513d60208110156200067457600080fd5b505160601b6001600160601b031916608052600654620006a29030906001600160a01b031660001962000775565b620006c2620006b0620006ce565b6a115eec47f6cf7e3500000062000865565b505062000a85565b3390565b6005546001600160a01b031690565b620006e7620006ca565b6005546001600160a01b039081169116146200074a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6001600160a01b038316620007bc5760405162461bcd60e51b8152600401808060200182810382526024815260200180620052556024913960400191505060405180910390fd5b6001600160a01b038216620008035760405162461bcd60e51b8152600401808060200182810382526022815260200180620051fc6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038216620008c1576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620008cf6000838362000974565b620008eb816002546200097960201b620022471790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200091e9183906200224762000979821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b600082820183811015620009d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000a1e57805160ff191683800117855562000a4e565b8280016001018555821562000a4e579182015b8281111562000a4e57825182559160200191906001019062000a31565b5062000a5c92915062000a6e565b5090565b6111dd806200401f83390190565b5b8082111562000a5c576000815560010162000a6f565b60805160601c61357762000aa8600039806118515280611ef052506135776000f3fe60806040526004361061039b5760003560e01c806370a08231116101dc578063b2d8f20811610102578063d3474b92116100a0578063f2fde38b1161006f578063f2fde38b14610d1e578063f821076914610d51578063f94a016514610d7b578063ffd49c8414610d90576103a2565b8063d3474b9214610c6b578063d4e2799a14610ca4578063dd62ed3e14610cce578063e44c673114610d09576103a2565b8063c0246668116100dc578063c024666814610bd3578063c6c8df9a14610c0e578063ca04b86e14610c41578063ce4d9f1514610c56576103a2565b8063b2d8f20814610b5b578063b61d1c3d14610b8b578063bcabc25814610bbe576103a2565b80638fb60e3b1161017a578063a589eec611610149578063a589eec614610a9d578063a694fc3a14610ad9578063a9059cbb14610af6578063a97af1f214610b2f576103a2565b80638fb60e3b14610a2557806390241a6f14610a3a57806395d89b4114610a4f578063a457c2d714610a64576103a2565b8063789c5ab3116101b6578063789c5ab3146109975780637a37a0ed146109ac5780638c91cf3c146109da5780638da5cb5b14610a10576103a2565b806370a082311461089d578063715018a6146108d05780637355b15b146108e5576103a2565b8063313ce567116102c15780634fb908481161025f5780636386c1c71161022e5780636386c1c7146107cc57806366447aa41461081d5780636a812b6a146108325780636b0134f614610871576103a2565b80634fb908481461071f5780634fbee1931461073457806358e411df1461076757806362ccd737146107a2576103a2565b8063470624021161029b57806347062402146106cb57806349bd5a5e146106e05780634d78cca2146106f55780634f9d637b1461070a576103a2565b8063313ce5671461063d578063337c0d44146106685780633950935114610692576103a2565b8063179d7cfe116103395780632953930e116103085780632953930e146105bd5780632b14ca56146105e95780632f0729de146105fe5780632f80f75014610628576103a2565b8063179d7cfe1461050357806318160ddd1461053e5780631d8b89851461056557806323b872dd1461057a576103a2565b8063095ea7b311610375578063095ea7b31461048b5780630ac102d9146104c45780630c570c86146104d95780631694505e146104ee576103a2565b80630135f740146103a757806304c23ffe146103d857806306fdde0314610401576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610da5565b604080516001600160a01b039092168252519081900360200190f35b3480156103e457600080fd5b506103ed610db4565b604080519115158252519081900360200190f35b34801561040d57600080fd5b50610416610dbd565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610450578181015183820152602001610438565b50505050905090810190601f16801561047d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561049757600080fd5b506103ed600480360360408110156104ae57600080fd5b506001600160a01b038135169060200135610e53565b3480156104d057600080fd5b506103bc610e71565b3480156104e557600080fd5b506103ed610e80565b3480156104fa57600080fd5b506103bc610e8f565b34801561050f57600080fd5b5061053c6004803603604081101561052657600080fd5b506001600160a01b038135169060200135610e9e565b005b34801561054a57600080fd5b50610553610f5c565b60408051918252519081900360200190f35b34801561057157600080fd5b5061053c610f62565b34801561058657600080fd5b506103ed6004803603606081101561059d57600080fd5b506001600160a01b03813581169160208101359091169060400135611024565b3480156105c957600080fd5b5061053c600480360360208110156105e057600080fd5b503515156110ab565b3480156105f557600080fd5b50610553611116565b34801561060a57600080fd5b5061053c6004803603602081101561062157600080fd5b503561111c565b34801561063457600080fd5b506103bc6111dc565b34801561064957600080fd5b506106526111eb565b6040805160ff9092168252519081900360200190f35b34801561067457600080fd5b5061053c6004803603602081101561068b57600080fd5b50356111f0565b34801561069e57600080fd5b506103ed600480360360408110156106b557600080fd5b506001600160a01b03813516906020013561124c565b3480156106d757600080fd5b5061055361129a565b3480156106ec57600080fd5b506103bc6112a0565b34801561070157600080fd5b506103bc6112af565b34801561071657600080fd5b506103bc6112be565b34801561072b57600080fd5b506103ed6112cd565b34801561074057600080fd5b506103ed6004803603602081101561075757600080fd5b50356001600160a01b03166112db565b34801561077357600080fd5b5061053c6004803603604081101561078a57600080fd5b506001600160a01b03813581169160200135166112fd565b3480156107ae57600080fd5b5061053c600480360360208110156107c557600080fd5b50356113e5565b3480156107d857600080fd5b506107ff600480360360208110156107ef57600080fd5b50356001600160a01b0316611442565b60408051938452602084019290925282820152519081900360600190f35b34801561082957600080fd5b506103bc6114ec565b34801561083e57600080fd5b5061053c6004803603606081101561085557600080fd5b506001600160a01b0381351690602081013590604001356114fb565b61053c6004803603604081101561088757600080fd5b506001600160a01b038135169060200135611575565b3480156108a957600080fd5b50610553600480360360208110156108c057600080fd5b50356001600160a01b03166115e0565b3480156108dc57600080fd5b5061053c6115fb565b3480156108f157600080fd5b5061053c6004803603604081101561090857600080fd5b81019060208101813564010000000081111561092357600080fd5b82018360208201111561093557600080fd5b8035906020019184602083028401116401000000008311171561095757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550509135925061169d915050565b3480156109a357600080fd5b506103bc61179d565b3480156109b857600080fd5b506109c16117ac565b6040805192835260208301919091528051918290030190f35b61053c600480360360608110156109f057600080fd5b506001600160a01b0381358116916020810135909116906040013561189b565b348015610a1c57600080fd5b506103bc611978565b348015610a3157600080fd5b506103bc611987565b348015610a4657600080fd5b506103bc611996565b348015610a5b57600080fd5b506104166119a5565b348015610a7057600080fd5b506103ed60048036036040811015610a8757600080fd5b506001600160a01b038135169060200135611a06565b348015610aa957600080fd5b5061053c60048036036060811015610ac057600080fd5b5080351515906020810135151590604001351515611a6e565b61053c60048036036020811015610aef57600080fd5b5035611afe565b348015610b0257600080fd5b506103ed60048036036040811015610b1957600080fd5b506001600160a01b038135169060200135611c15565b61053c60048036036040811015610b4557600080fd5b506001600160a01b038135169060200135611c29565b348015610b6757600080fd5b5061053c60048036036040811015610b7e57600080fd5b5080359060200135611cc0565b348015610b9757600080fd5b5061053c60048036036020811015610bae57600080fd5b50356001600160a01b0316611d23565b348015610bca57600080fd5b506103bc611d9d565b348015610bdf57600080fd5b5061053c60048036036040811015610bf657600080fd5b506001600160a01b0381351690602001351515611dac565b348015610c1a57600080fd5b5061053c60048036036020811015610c3157600080fd5b50356001600160a01b0316611e2f565b348015610c4d57600080fd5b506103bc611ea9565b348015610c6257600080fd5b506107ff611eb8565b348015610c7757600080fd5b5061053c60048036036040811015610c8e57600080fd5b506001600160a01b038135169060200135611f6c565b348015610cb057600080fd5b5061053c60048036036020811015610cc757600080fd5b5035612054565b348015610cda57600080fd5b5061055360048036036040811015610cf157600080fd5b506001600160a01b03813581169160200135166120b1565b348015610d1557600080fd5b506103ed6120dc565b348015610d2a57600080fd5b5061053c60048036036020811015610d4157600080fd5b50356001600160a01b03166120e5565b348015610d5d57600080fd5b5061053c60048036036020811015610d7457600080fd5b50356121de565b348015610d8757600080fd5b5061055361223b565b348015610d9c57600080fd5b50610553612241565b600a546001600160a01b031681565b601e5460ff1681565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e495780601f10610e1e57610100808354040283529160200191610e49565b820191906000526020600020905b815481529060010190602001808311610e2c57829003601f168201915b5050505050905090565b6000610e67610e606122a8565b84846122ac565b5060015b92915050565b6011546001600160a01b031681565b601c5462010000900460ff1681565b6006546001600160a01b031681565b6010546001600160a01b03163314610eeb576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b60135460408051636ddae3cf60e01b81526001600160a01b0385811660048301526024820185905291519190921691636ddae3cf91604480830192600092919082900301818387803b158015610f4057600080fd5b505af1158015610f54573d6000803e3d6000fd5b505050505050565b60025490565b610f6a6122a8565b6005546001600160a01b03908116911614610fba576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601360009054906101000a90046001600160a01b03166001600160a01b0316631f888ad86040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561100a57600080fd5b505af115801561101e573d6000803e3d6000fd5b50505050565b6000611031848484612398565b6110a18461103d6122a8565b61109c8560405180606001604052806028815260200161348c602891396001600160a01b038a1660009081526001602052604081209061107b6122a8565b6001600160a01b031681526020810191909152604001600020549190612a71565b6122ac565b5060019392505050565b6110b36122a8565b6005546001600160a01b03908116911614611103576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601e805460ff1916911515919091179055565b601a5481565b6111246122a8565b6005546001600160a01b03908116911614611174576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601354604080516355c9ef5560e01b81526004810184905290516001600160a01b03909216916355c9ef559160248082019260009290919082900301818387803b1580156111c157600080fd5b505af11580156111d5573d6000803e3d6000fd5b5050505050565b6010546001600160a01b031681565b601290565b6010546001600160a01b0316331461123d576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b6112498161dead612b08565b50565b6000610e676112596122a8565b8461109c856001600061126a6122a8565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612247565b60195481565b6007546001600160a01b031681565b600b546001600160a01b031681565b6008546001600160a01b031681565b601c54610100900460ff1681565b6001600160a01b03811660009081526018602052604090205460ff165b919050565b6113056122a8565b6005546001600160a01b03908116911614611355576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b61136230826000196122ac565b816001600160a01b031663095ea7b3826000196040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156113bb57600080fd5b505af11580156113cf573d6000803e3d6000fd5b505050506040513d602081101561101e57600080fd5b6113ed6122a8565b6005546001600160a01b0390811691161461143d576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601255565b600754604080516370a0823160e01b81526001600160a01b0384811660048301529151600093849384939116916370a0823191602480820192602092909190829003018186803b15801561149557600080fd5b505afa1580156114a9573d6000803e3d6000fd5b505050506040513d60208110156114bf57600080fd5b50516001600160a01b039094166000908152601d6020526040902080546001909101549095909350915050565b600d546001600160a01b031681565b6115036122a8565b6005546001600160a01b03908116911614611553576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6001600160a01b039092166000908152601d6020526040902090815560010155565b6010546001600160a01b031633146115c2576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b6012543410156115d157600080fd5b6115dc308383612cc4565b5050565b6001600160a01b031660009081526020819052604090205490565b6116036122a8565b6005546001600160a01b03908116911614611653576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6116a56122a8565b6005546001600160a01b039081169116146116f5576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b8151600080805b83811015610f545785818151811061171057fe5b6020908102919091018101516001600160a01b038082166000818152601d90945260408085208a8155600181018b90556013548251637de7a18d60e01b815260048101949094529151949850965090911692637de7a18d9260248084019382900301818387803b15801561178357600080fd5b505af1925050508015611794575060015b506001016116fc565b600c546001600160a01b031681565b6000806000600760009054906101000a90046001600160a01b03169050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561180557600080fd5b505afa158015611819573d6000803e3d6000fd5b505050506040513d606081101561182f57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690507f0000000000000000000000000000000000000000000000000000000000000000306001600160a01b038216101561188c57829550819450611893565b8195508294505b505050509091565b6010546001600160a01b031633146118e8576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b6012543410156118f757600080fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561194e57600080fd5b505af1158015611962573d6000803e3d6000fd5b505050506040513d60208110156111d557600080fd5b6005546001600160a01b031690565b600f546001600160a01b031681565b600e546001600160a01b031681565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e495780601f10610e1e57610100808354040283529160200191610e49565b6000610e67611a136122a8565b8461109c8560405180606001604052806025815260200161351d6025913960016000611a3d6122a8565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612a71565b611a766122a8565b6005546001600160a01b03908116911614611ac6576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601c805460ff19169315159390931761ff001916610100921515929092029190911762ff000019166201000091151591909102179055565b6010546001600160a01b03163314611b4b576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b60003411611b5857611249565b60008111611b6557611249565b6000611b7d6064611b77346026612e1f565b90612e78565b601154604080516323b872dd60e01b815233600482015261dead60248201526044810186905290519293506001600160a01b03909116916323b872dd916064808201926020929091908290030181600087803b158015611bdc57600080fd5b505af1158015611bf0573d6000803e3d6000fd5b505050506040513d6020811015611c0657600080fd5b506115dc90508161dead612b08565b6000610e67611c226122a8565b8484612398565b6010546001600160a01b03163314611c76576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b601254341015611c8557600080fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611cbb573d6000803e3d6000fd5b505050565b611cc86122a8565b6005546001600160a01b03908116911614611d18576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601991909155601a55565b611d2b6122a8565b6005546001600160a01b03908116911614611d7b576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b031681565b611db46122a8565b6005546001600160a01b03908116911614611e04576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b611e376122a8565b6005546001600160a01b03908116911614611e87576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b031681565b6000806000611ec56117ac565b600754604080516370a0823160e01b81526001600160a01b03928316600482015290519396509194507f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611f3757600080fd5b505afa158015611f4b573d6000803e3d6000fd5b505050506040513d6020811015611f6157600080fd5b505192939192919050565b611f746122a8565b6005546001600160a01b03908116911614611fc4576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6001600160a01b03821661200557604051339082156108fc029083906000818181858888f19350505050158015611fff573d6000803e3d6000fd5b506115dc565b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b1580156113bb57600080fd5b61205c6122a8565b6005546001600160a01b039081169116146120ac576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b601c5460ff1681565b6120ed6122a8565b6005546001600160a01b0390811691161461213d576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6001600160a01b0381166121825760405162461bcd60e51b81526004018080602001828103825260268152602001806133dd6026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6121e66122a8565b6005546001600160a01b03908116911614612236576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601755565b60125481565b60175481565b6000828201838110156122a1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b0383166122f15760405162461bcd60e51b81526004018080602001828103825260248152602001806134f96024913960400191505060405180910390fd5b6001600160a01b0382166123365760405162461bcd60e51b81526004018080602001828103825260228152602001806134036022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166123dd5760405162461bcd60e51b81526004018080602001828103825260258152602001806134d46025913960400191505060405180910390fd5b6001600160a01b0382166124225760405162461bcd60e51b81526004018080602001828103825260238152602001806133ba6023913960400191505060405180910390fd5b806124385761243383836000612cc4565b611cbb565b6000612443846115e0565b905081811015612480576040805162461bcd60e51b8152602060048201526003602482015262424e4560e81b604482015290519081900360640190fd5b6001600160a01b03841660009081526018602052604081205460ff161580156124c257506001600160a01b03841660009081526018602052604090205460ff16155b156124cb575060015b600754329060009081906001600160a01b0388811691161480156124f957506006546001600160a01b031633145b80156125165750876001600160a01b0316836001600160a01b0316145b156125505761252486612eba565b90508015612550576001600160a01b0383166000908152601d6020526040812080548301815590945091505b6007546000906001600160a01b038a8116911614156125f35761257287612f15565b905080156125f3576001600160a01b0384166000908152601d602052604090208054909350811115806125bd57506001600160a01b03841660009081526018602052604090205460ff165b6125c657600080fd5b825481900383556001600160a01b03841660009081526018602052604090205460ff16156125f357600094505b6001600160a01b03891660009081526018602052604090205460ff1615801561263557506001600160a01b03881660009081526018602052604090205460ff16155b15612793576007546001600160a01b038a811691161480159061266657506007546001600160a01b03898116911614155b1561267057600094505b60075460009081906001600160a01b038c811691161415612721578260001080156126985750865b156126e557601c5460ff166126e0576040805162461bcd60e51b81526020600482015260096024820152683737b634b234ba3a9960b91b604482015290519081900360640190fd5b61271c565b861561270857601c54610100900460ff166126ff57600080fd5b5060195461271c565b601c54610100900460ff1661271c57600080fd5b61274b565b8315801561272c5750865b1561274b57601c5462010000900460ff1661274657600080fd5b50601a545b80156127845760006127636103e8611b778c85612e1f565b60135490915061277e908d906001600160a01b031683612cc4565b91909101905b81156127905781890398505b50505b61279e898989612cc4565b6014546001600160a01b03166127ca57601480546001600160a01b0319166001600160a01b038b161790555b6015546001600160a01b03166127f657601580546001600160a01b0319166001600160a01b038a161790555b6014546001600160a01b031660009081526016602052604090205460ff1615801561283257506007546014546001600160a01b03908116911614155b1561289b5760135460145460408051637de7a18d60e01b81526001600160a01b03928316600482015290519190921691637de7a18d91602480830192600092919082900301818387803b15801561288857600080fd5b505af1925050508015612899575060015b505b6015546001600160a01b031660009081526016602052604090205460ff161580156128d757506007546015546001600160a01b03908116911614155b156129405760135460155460408051637de7a18d60e01b81526001600160a01b03928316600482015290519190921691637de7a18d91602480830192600092919082900301818387803b15801561292d57600080fd5b505af192505050801561293e575060015b505b601480546001600160a01b03808c166001600160a01b0319928316811790935560158054918c16919092161790553014612a6657426129fb601754601360009054906101000a90046001600160a01b03166001600160a01b031663b181b28a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129c957600080fd5b505afa1580156129dd573d6000803e3d6000fd5b505050506040513d60208110156129f357600080fd5b505190612247565b11612a6657601354601b54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b158015612a5357600080fd5b505af1925050508015612a64575060015b505b505050505050505050565b60008184841115612b005760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ac5578181015183820152602001612aad565b50505050905090810190601f168015612af25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b601e805461ff00191661010017905560408051600280825260608083018452926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015612b7b57600080fd5b505afa158015612b8f573d6000803e3d6000fd5b505050506040513d6020811015612ba557600080fd5b505181518290600090612bb457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612be257fe5b6001600160a01b0392831660209182029290920181019190915260065460405163b6f9de9560e01b815260006004820181815287861660448401524260648401819052608060248501908152885160848601528851959097169663b6f9de95968b9694958a958c95939260a49092019187810191028083838b5b83811015612c74578181015183820152602001612c5c565b50505050905001955050505050506000604051808303818588803b158015612c9b57600080fd5b505af1158015612caf573d6000803e3d6000fd5b5050601e805461ff0019169055505050505050565b6001600160a01b038316612d095760405162461bcd60e51b81526004018080602001828103825260258152602001806134d46025913960400191505060405180910390fd5b6001600160a01b038216612d4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806133ba6023913960400191505060405180910390fd5b612d59838383611cbb565b612d9681604051806060016040528060268152602001613425602691396001600160a01b0386166000908152602081905260409020549190612a71565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612dc59082612247565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082612e2e57506000610e6b565b82820282848281612e3b57fe5b04146122a15760405162461bcd60e51b815260040180806020018281038252602181526020018061346b6021913960400191505060405180910390fd5b60006122a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061301c565b600080600080612ec8611eb8565b92509250925060008084118015612edf5750600083115b15612ef3578284870281612eef57fe5b0490505b8084018210612f0c57612f0882878686613081565b5094505b50505050919050565b600080600080612f23611eb8565b92509250925082811015612fd4576007548590612f48906001600160a01b03166115e0565b03600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f9757600080fd5b505afa158015612fab573d6000803e3d6000fd5b505050506040513d6020811015612fc157600080fd5b5051860281612fcc57fe5b049350613014565b601e5460ff16156130145760008084118015612ff05750600083115b15612f0c578583038487028161300257fe5b049050838101821015612f0c57600080fd5b505050919050565b6000818361306b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612ac5578181015183820152602001612aad565b50600083858161307757fe5b0495945050505050565b6000806000600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130d457600080fd5b505afa1580156130e8573d6000803e3d6000fd5b505050506040513d60208110156130fe57600080fd5b50516006546040805163c45a015560e01b815290519293506000926001600160a01b039092169163c45a015591600480820192602092909190829003018186803b15801561314b57600080fd5b505afa15801561315f573d6000803e3d6000fd5b505050506040513d602081101561317557600080fd5b505160408051622fcfcb60e31b815290516001600160a01b039092169163017e7e5891600480820192602092909190829003018186803b1580156131b857600080fd5b505afa1580156131cc573d6000803e3d6000fd5b505050506040513d60208110156131e257600080fd5b505160075460408051637464fc3d60e01b815290519293506001600160a01b0380851615159360009390911691637464fc3d916004808301926020929190829003018186803b15801561323457600080fd5b505afa158015613248573d6000803e3d6000fd5b505050506040513d602081101561325e57600080fd5b50519050811561330357801561330357600061327b888a02613352565b9050600061328883613352565b9050808211156133005760065460009081906001600160a01b03167310ed43c718714eb63d5aa57b78b54704e256024e14156132d8578284038802600802915082600802846011020190506132e6565b505080820386026005830282015b8082816132ef57fe5b04985088156132fd57968801965b50505b50505b878a0384613321576103e86133198b8302613352565b039650613344565b613341898683028161332f57fe5b0489878d028161333b57fe5b046133a3565b96505b505050505094509492505050565b60006003821115613395575080600160028204015b8181101561338f5780915060028182858161337e57fe5b04018161338757fe5b049050613367565b506112f8565b81156112f857506001919050565b60008183106133b257816122a1565b509091905056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636563616c6c6572206973206e6f7420746865206f776e6572000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208953b7f1b154404614dc2f940e1e373c45aa051a5339a40ca57e3840b761c6de64736f6c634300060c0033608060405234801561001057600080fd5b506040516111dd3803806111dd8339818101604052604081101561003357600080fd5b50805160209091015160006100466100d3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b039384166001600160a01b0319918216179091556006805492909316911617905569021e19e0c9bab2400000600855426007556100d7565b3390565b6110f7806100e66000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063877416b911610097578063d4fda1f211610066578063d4fda1f2146101ee578063df15b11414610214578063f2fde38b1461021c578063ffb2c47914610242576100f5565b8063877416b9146101b95780638da5cb5b146101c1578063ab377daa146101c9578063b181b28a146101e6576100f5565b806355c9ef55116100d357806355c9ef55146101425780636ddae3cf1461015f578063715018a61461018b5780637de7a18d14610193576100f5565b80631f888ad8146100fa57806326987b601461010457806349bd5a5e1461011e575b600080fd5b61010261025f565b005b61010c6102be565b60408051918252519081900360200190f35b6101266102c4565b604080516001600160a01b039092168252519081900360200190f35b6101026004803603602081101561015857600080fd5b50356102d3565b6101026004803603604081101561017557600080fd5b506001600160a01b038135169060200135610330565b61010261040e565b610102600480360360208110156101a957600080fd5b50356001600160a01b03166104b0565b61010c610666565b61012661066c565b610126600480360360208110156101df57600080fd5b503561067b565b61010c6106a2565b61010c6004803603602081101561020457600080fd5b50356001600160a01b03166106a8565b6101266106ba565b6101026004803603602081101561023257600080fd5b50356001600160a01b03166106c9565b6101026004803603602081101561025857600080fd5b50356107c1565b610267610ca3565b6000546001600160a01b039081169116146102b7576040805162461bcd60e51b815260206004820181905260248201526000805160206110a2833981519152604482015290519081900360640190fd5b6000600755565b60025481565b6005546001600160a01b031681565b6102db610ca3565b6000546001600160a01b0390811691161461032b576040805162461bcd60e51b815260206004820181905260248201526000805160206110a2833981519152604482015290519081900360640190fd5b600855565b610338610ca3565b6000546001600160a01b03908116911614610388576040805162461bcd60e51b815260206004820181905260248201526000805160206110a2833981519152604482015290519081900360640190fd5b6006546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050506040513d602081101561040857600080fd5b50505050565b610416610ca3565b6000546001600160a01b03908116911614610466576040805162461bcd60e51b815260206004820181905260248201526000805160206110a2833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6104b8610ca3565b6000546001600160a01b03908116911614610508576040805162461bcd60e51b815260206004820181905260248201526000805160206110a2833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205460ff16156105b457600554604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561057657600080fd5b505afa15801561058a573d6000803e3d6000fd5b505050506040513d60208110156105a057600080fd5b50516105af576105af81610ca7565b610663565b600554604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561060157600080fd5b505afa158015610615573d6000803e3d6000fd5b505050506040513d602081101561062b57600080fd5b505161063657610663565b61063f81610cd1565b6001600160a01b0381166000908152600360205260409020805460ff191660011790555b50565b60085481565b6000546001600160a01b031690565b6001818154811061068857fe5b6000918252602090912001546001600160a01b0316905081565b60075481565b60046020526000908152604090205481565b6006546001600160a01b031681565b6106d1610ca3565b6000546001600160a01b03908116911614610721576040805162461bcd60e51b815260206004820181905260248201526000805160206110a2833981519152604482015290519081900360640190fd5b6001600160a01b0381166107665760405162461bcd60e51b815260040180806020018281038252602681526020018061105b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6107c9610ca3565b6000546001600160a01b03908116911614610819576040805162461bcd60e51b815260206004820181905260248201526000805160206110a2833981519152604482015290519081900360640190fd5b600154806108275750610663565b6008546000805a905060005b858310801561084157508481105b15610c9b578460025410610862575050600060025550504260075550610663565b600554604080516370a0823160e01b815273407993575c91ce7643a4d4ccacc9a98c36ee1bbe600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156108c157600080fd5b505afa1580156108d5573d6000803e3d6000fd5b505050506040513d60208110156108eb57600080fd5b5051600554604080516370a0823160e01b81526000600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d602081101561096357600080fd5b5051600554604080516370a0823160e01b815261dead600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156109b257600080fd5b505afa1580156109c6573d6000803e3d6000fd5b505050506040513d60208110156109dc57600080fd5b5051600554604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b5051600554600254600180549490930394909403949094039450600093610b17938693610b11936001600160a01b03909316926370a082319290918110610a9057fe5b60009182526020918290200154604080516001600160e01b031960e086901b1681526001600160a01b0390921660048301525160248083019392829003018186803b158015610ade57600080fd5b505afa158015610af2573d6000803e3d6000fd5b505050506040513d6020811015610b0857600080fd5b50518990610d31565b90610d93565b905080610b34575050600280546001019055506106639350505050565b600654604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610b7e57600080fd5b505afa158015610b92573d6000803e3d6000fd5b505050506040513d6020811015610ba857600080fd5b50511015610bbc5750505050505050610663565b600654600254600180546001600160a01b039093169263a9059cbb92908110610be157fe5b6000918252602080832090910154604080516001600160e01b031960e087901b1681526001600160a01b039092166004830152602482018790525160448083019491928390030190829087803b158015610c3a57600080fd5b505af1158015610c4e573d6000803e3d6000fd5b505050506040513d6020811015610c6457600080fd5b50610c7c9050610c755a8690610dd5565b8690610e17565b94505a6002805460019081019091559094509290920191506108339050565b505050505050565b3390565b610cb081610e71565b6001600160a01b03166000908152600360205260409020805460ff19169055565b600180546001600160a01b0390921660008181526004602052604081208490558383018355919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690910180546001600160a01b0319169091179055565b600082610d4057506000610d8d565b82820282848281610d4d57fe5b0414610d8a5760405162461bcd60e51b81526004018080602001828103825260218152602001806110816021913960400191505060405180910390fd5b90505b92915050565b6000610d8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f5e565b6000610d8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611000565b600082820183811015610d8a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600180546000198101908110610e8357fe5b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600180549290931692918110610ebb57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600491829052604081205460018054919392916000198101908110610f0957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556001805480610f3957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008183610fea5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610faf578181015183820152602001610f97565b50505050905090810190601f168015610fdc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610ff657fe5b0495945050505050565b600081848411156110525760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610faf578181015183820152602001610f97565b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122098e1b53b09c98ea75bb6b21035f688091325a0b592ffbfcfab9547eebf9f03eb64736f6c634300060c003345524332303a20617070726f766520746f20746865207a65726f20616464726573735468697320636f6e74726163742061646472657373206d7573742062652067726561746572207468616e2055534454206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373
Deployed Bytecode
0x60806040526004361061039b5760003560e01c806370a08231116101dc578063b2d8f20811610102578063d3474b92116100a0578063f2fde38b1161006f578063f2fde38b14610d1e578063f821076914610d51578063f94a016514610d7b578063ffd49c8414610d90576103a2565b8063d3474b9214610c6b578063d4e2799a14610ca4578063dd62ed3e14610cce578063e44c673114610d09576103a2565b8063c0246668116100dc578063c024666814610bd3578063c6c8df9a14610c0e578063ca04b86e14610c41578063ce4d9f1514610c56576103a2565b8063b2d8f20814610b5b578063b61d1c3d14610b8b578063bcabc25814610bbe576103a2565b80638fb60e3b1161017a578063a589eec611610149578063a589eec614610a9d578063a694fc3a14610ad9578063a9059cbb14610af6578063a97af1f214610b2f576103a2565b80638fb60e3b14610a2557806390241a6f14610a3a57806395d89b4114610a4f578063a457c2d714610a64576103a2565b8063789c5ab3116101b6578063789c5ab3146109975780637a37a0ed146109ac5780638c91cf3c146109da5780638da5cb5b14610a10576103a2565b806370a082311461089d578063715018a6146108d05780637355b15b146108e5576103a2565b8063313ce567116102c15780634fb908481161025f5780636386c1c71161022e5780636386c1c7146107cc57806366447aa41461081d5780636a812b6a146108325780636b0134f614610871576103a2565b80634fb908481461071f5780634fbee1931461073457806358e411df1461076757806362ccd737146107a2576103a2565b8063470624021161029b57806347062402146106cb57806349bd5a5e146106e05780634d78cca2146106f55780634f9d637b1461070a576103a2565b8063313ce5671461063d578063337c0d44146106685780633950935114610692576103a2565b8063179d7cfe116103395780632953930e116103085780632953930e146105bd5780632b14ca56146105e95780632f0729de146105fe5780632f80f75014610628576103a2565b8063179d7cfe1461050357806318160ddd1461053e5780631d8b89851461056557806323b872dd1461057a576103a2565b8063095ea7b311610375578063095ea7b31461048b5780630ac102d9146104c45780630c570c86146104d95780631694505e146104ee576103a2565b80630135f740146103a757806304c23ffe146103d857806306fdde0314610401576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610da5565b604080516001600160a01b039092168252519081900360200190f35b3480156103e457600080fd5b506103ed610db4565b604080519115158252519081900360200190f35b34801561040d57600080fd5b50610416610dbd565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610450578181015183820152602001610438565b50505050905090810190601f16801561047d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561049757600080fd5b506103ed600480360360408110156104ae57600080fd5b506001600160a01b038135169060200135610e53565b3480156104d057600080fd5b506103bc610e71565b3480156104e557600080fd5b506103ed610e80565b3480156104fa57600080fd5b506103bc610e8f565b34801561050f57600080fd5b5061053c6004803603604081101561052657600080fd5b506001600160a01b038135169060200135610e9e565b005b34801561054a57600080fd5b50610553610f5c565b60408051918252519081900360200190f35b34801561057157600080fd5b5061053c610f62565b34801561058657600080fd5b506103ed6004803603606081101561059d57600080fd5b506001600160a01b03813581169160208101359091169060400135611024565b3480156105c957600080fd5b5061053c600480360360208110156105e057600080fd5b503515156110ab565b3480156105f557600080fd5b50610553611116565b34801561060a57600080fd5b5061053c6004803603602081101561062157600080fd5b503561111c565b34801561063457600080fd5b506103bc6111dc565b34801561064957600080fd5b506106526111eb565b6040805160ff9092168252519081900360200190f35b34801561067457600080fd5b5061053c6004803603602081101561068b57600080fd5b50356111f0565b34801561069e57600080fd5b506103ed600480360360408110156106b557600080fd5b506001600160a01b03813516906020013561124c565b3480156106d757600080fd5b5061055361129a565b3480156106ec57600080fd5b506103bc6112a0565b34801561070157600080fd5b506103bc6112af565b34801561071657600080fd5b506103bc6112be565b34801561072b57600080fd5b506103ed6112cd565b34801561074057600080fd5b506103ed6004803603602081101561075757600080fd5b50356001600160a01b03166112db565b34801561077357600080fd5b5061053c6004803603604081101561078a57600080fd5b506001600160a01b03813581169160200135166112fd565b3480156107ae57600080fd5b5061053c600480360360208110156107c557600080fd5b50356113e5565b3480156107d857600080fd5b506107ff600480360360208110156107ef57600080fd5b50356001600160a01b0316611442565b60408051938452602084019290925282820152519081900360600190f35b34801561082957600080fd5b506103bc6114ec565b34801561083e57600080fd5b5061053c6004803603606081101561085557600080fd5b506001600160a01b0381351690602081013590604001356114fb565b61053c6004803603604081101561088757600080fd5b506001600160a01b038135169060200135611575565b3480156108a957600080fd5b50610553600480360360208110156108c057600080fd5b50356001600160a01b03166115e0565b3480156108dc57600080fd5b5061053c6115fb565b3480156108f157600080fd5b5061053c6004803603604081101561090857600080fd5b81019060208101813564010000000081111561092357600080fd5b82018360208201111561093557600080fd5b8035906020019184602083028401116401000000008311171561095757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550509135925061169d915050565b3480156109a357600080fd5b506103bc61179d565b3480156109b857600080fd5b506109c16117ac565b6040805192835260208301919091528051918290030190f35b61053c600480360360608110156109f057600080fd5b506001600160a01b0381358116916020810135909116906040013561189b565b348015610a1c57600080fd5b506103bc611978565b348015610a3157600080fd5b506103bc611987565b348015610a4657600080fd5b506103bc611996565b348015610a5b57600080fd5b506104166119a5565b348015610a7057600080fd5b506103ed60048036036040811015610a8757600080fd5b506001600160a01b038135169060200135611a06565b348015610aa957600080fd5b5061053c60048036036060811015610ac057600080fd5b5080351515906020810135151590604001351515611a6e565b61053c60048036036020811015610aef57600080fd5b5035611afe565b348015610b0257600080fd5b506103ed60048036036040811015610b1957600080fd5b506001600160a01b038135169060200135611c15565b61053c60048036036040811015610b4557600080fd5b506001600160a01b038135169060200135611c29565b348015610b6757600080fd5b5061053c60048036036040811015610b7e57600080fd5b5080359060200135611cc0565b348015610b9757600080fd5b5061053c60048036036020811015610bae57600080fd5b50356001600160a01b0316611d23565b348015610bca57600080fd5b506103bc611d9d565b348015610bdf57600080fd5b5061053c60048036036040811015610bf657600080fd5b506001600160a01b0381351690602001351515611dac565b348015610c1a57600080fd5b5061053c60048036036020811015610c3157600080fd5b50356001600160a01b0316611e2f565b348015610c4d57600080fd5b506103bc611ea9565b348015610c6257600080fd5b506107ff611eb8565b348015610c7757600080fd5b5061053c60048036036040811015610c8e57600080fd5b506001600160a01b038135169060200135611f6c565b348015610cb057600080fd5b5061053c60048036036020811015610cc757600080fd5b5035612054565b348015610cda57600080fd5b5061055360048036036040811015610cf157600080fd5b506001600160a01b03813581169160200135166120b1565b348015610d1557600080fd5b506103ed6120dc565b348015610d2a57600080fd5b5061053c60048036036020811015610d4157600080fd5b50356001600160a01b03166120e5565b348015610d5d57600080fd5b5061053c60048036036020811015610d7457600080fd5b50356121de565b348015610d8757600080fd5b5061055361223b565b348015610d9c57600080fd5b50610553612241565b600a546001600160a01b031681565b601e5460ff1681565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e495780601f10610e1e57610100808354040283529160200191610e49565b820191906000526020600020905b815481529060010190602001808311610e2c57829003601f168201915b5050505050905090565b6000610e67610e606122a8565b84846122ac565b5060015b92915050565b6011546001600160a01b031681565b601c5462010000900460ff1681565b6006546001600160a01b031681565b6010546001600160a01b03163314610eeb576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b60135460408051636ddae3cf60e01b81526001600160a01b0385811660048301526024820185905291519190921691636ddae3cf91604480830192600092919082900301818387803b158015610f4057600080fd5b505af1158015610f54573d6000803e3d6000fd5b505050505050565b60025490565b610f6a6122a8565b6005546001600160a01b03908116911614610fba576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601360009054906101000a90046001600160a01b03166001600160a01b0316631f888ad86040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561100a57600080fd5b505af115801561101e573d6000803e3d6000fd5b50505050565b6000611031848484612398565b6110a18461103d6122a8565b61109c8560405180606001604052806028815260200161348c602891396001600160a01b038a1660009081526001602052604081209061107b6122a8565b6001600160a01b031681526020810191909152604001600020549190612a71565b6122ac565b5060019392505050565b6110b36122a8565b6005546001600160a01b03908116911614611103576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601e805460ff1916911515919091179055565b601a5481565b6111246122a8565b6005546001600160a01b03908116911614611174576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601354604080516355c9ef5560e01b81526004810184905290516001600160a01b03909216916355c9ef559160248082019260009290919082900301818387803b1580156111c157600080fd5b505af11580156111d5573d6000803e3d6000fd5b5050505050565b6010546001600160a01b031681565b601290565b6010546001600160a01b0316331461123d576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b6112498161dead612b08565b50565b6000610e676112596122a8565b8461109c856001600061126a6122a8565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612247565b60195481565b6007546001600160a01b031681565b600b546001600160a01b031681565b6008546001600160a01b031681565b601c54610100900460ff1681565b6001600160a01b03811660009081526018602052604090205460ff165b919050565b6113056122a8565b6005546001600160a01b03908116911614611355576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b61136230826000196122ac565b816001600160a01b031663095ea7b3826000196040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156113bb57600080fd5b505af11580156113cf573d6000803e3d6000fd5b505050506040513d602081101561101e57600080fd5b6113ed6122a8565b6005546001600160a01b0390811691161461143d576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601255565b600754604080516370a0823160e01b81526001600160a01b0384811660048301529151600093849384939116916370a0823191602480820192602092909190829003018186803b15801561149557600080fd5b505afa1580156114a9573d6000803e3d6000fd5b505050506040513d60208110156114bf57600080fd5b50516001600160a01b039094166000908152601d6020526040902080546001909101549095909350915050565b600d546001600160a01b031681565b6115036122a8565b6005546001600160a01b03908116911614611553576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6001600160a01b039092166000908152601d6020526040902090815560010155565b6010546001600160a01b031633146115c2576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b6012543410156115d157600080fd5b6115dc308383612cc4565b5050565b6001600160a01b031660009081526020819052604090205490565b6116036122a8565b6005546001600160a01b03908116911614611653576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6116a56122a8565b6005546001600160a01b039081169116146116f5576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b8151600080805b83811015610f545785818151811061171057fe5b6020908102919091018101516001600160a01b038082166000818152601d90945260408085208a8155600181018b90556013548251637de7a18d60e01b815260048101949094529151949850965090911692637de7a18d9260248084019382900301818387803b15801561178357600080fd5b505af1925050508015611794575060015b506001016116fc565b600c546001600160a01b031681565b6000806000600760009054906101000a90046001600160a01b03169050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561180557600080fd5b505afa158015611819573d6000803e3d6000fd5b505050506040513d606081101561182f57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690507f000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c306001600160a01b038216101561188c57829550819450611893565b8195508294505b505050509091565b6010546001600160a01b031633146118e8576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b6012543410156118f757600080fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561194e57600080fd5b505af1158015611962573d6000803e3d6000fd5b505050506040513d60208110156111d557600080fd5b6005546001600160a01b031690565b600f546001600160a01b031681565b600e546001600160a01b031681565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e495780601f10610e1e57610100808354040283529160200191610e49565b6000610e67611a136122a8565b8461109c8560405180606001604052806025815260200161351d6025913960016000611a3d6122a8565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612a71565b611a766122a8565b6005546001600160a01b03908116911614611ac6576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601c805460ff19169315159390931761ff001916610100921515929092029190911762ff000019166201000091151591909102179055565b6010546001600160a01b03163314611b4b576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b60003411611b5857611249565b60008111611b6557611249565b6000611b7d6064611b77346026612e1f565b90612e78565b601154604080516323b872dd60e01b815233600482015261dead60248201526044810186905290519293506001600160a01b03909116916323b872dd916064808201926020929091908290030181600087803b158015611bdc57600080fd5b505af1158015611bf0573d6000803e3d6000fd5b505050506040513d6020811015611c0657600080fd5b506115dc90508161dead612b08565b6000610e67611c226122a8565b8484612398565b6010546001600160a01b03163314611c76576040805162461bcd60e51b8152602060048201526017602482015260008051602061344b833981519152604482015290519081900360640190fd5b601254341015611c8557600080fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611cbb573d6000803e3d6000fd5b505050565b611cc86122a8565b6005546001600160a01b03908116911614611d18576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601991909155601a55565b611d2b6122a8565b6005546001600160a01b03908116911614611d7b576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b031681565b611db46122a8565b6005546001600160a01b03908116911614611e04576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b611e376122a8565b6005546001600160a01b03908116911614611e87576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b031681565b6000806000611ec56117ac565b600754604080516370a0823160e01b81526001600160a01b03928316600482015290519396509194507f000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c16916370a0823191602480820192602092909190829003018186803b158015611f3757600080fd5b505afa158015611f4b573d6000803e3d6000fd5b505050506040513d6020811015611f6157600080fd5b505192939192919050565b611f746122a8565b6005546001600160a01b03908116911614611fc4576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6001600160a01b03821661200557604051339082156108fc029083906000818181858888f19350505050158015611fff573d6000803e3d6000fd5b506115dc565b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b1580156113bb57600080fd5b61205c6122a8565b6005546001600160a01b039081169116146120ac576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b601c5460ff1681565b6120ed6122a8565b6005546001600160a01b0390811691161461213d576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b6001600160a01b0381166121825760405162461bcd60e51b81526004018080602001828103825260268152602001806133dd6026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6121e66122a8565b6005546001600160a01b03908116911614612236576040805162461bcd60e51b815260206004820181905260248201526000805160206134b4833981519152604482015290519081900360640190fd5b601755565b60125481565b60175481565b6000828201838110156122a1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b0383166122f15760405162461bcd60e51b81526004018080602001828103825260248152602001806134f96024913960400191505060405180910390fd5b6001600160a01b0382166123365760405162461bcd60e51b81526004018080602001828103825260228152602001806134036022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166123dd5760405162461bcd60e51b81526004018080602001828103825260258152602001806134d46025913960400191505060405180910390fd5b6001600160a01b0382166124225760405162461bcd60e51b81526004018080602001828103825260238152602001806133ba6023913960400191505060405180910390fd5b806124385761243383836000612cc4565b611cbb565b6000612443846115e0565b905081811015612480576040805162461bcd60e51b8152602060048201526003602482015262424e4560e81b604482015290519081900360640190fd5b6001600160a01b03841660009081526018602052604081205460ff161580156124c257506001600160a01b03841660009081526018602052604090205460ff16155b156124cb575060015b600754329060009081906001600160a01b0388811691161480156124f957506006546001600160a01b031633145b80156125165750876001600160a01b0316836001600160a01b0316145b156125505761252486612eba565b90508015612550576001600160a01b0383166000908152601d6020526040812080548301815590945091505b6007546000906001600160a01b038a8116911614156125f35761257287612f15565b905080156125f3576001600160a01b0384166000908152601d602052604090208054909350811115806125bd57506001600160a01b03841660009081526018602052604090205460ff165b6125c657600080fd5b825481900383556001600160a01b03841660009081526018602052604090205460ff16156125f357600094505b6001600160a01b03891660009081526018602052604090205460ff1615801561263557506001600160a01b03881660009081526018602052604090205460ff16155b15612793576007546001600160a01b038a811691161480159061266657506007546001600160a01b03898116911614155b1561267057600094505b60075460009081906001600160a01b038c811691161415612721578260001080156126985750865b156126e557601c5460ff166126e0576040805162461bcd60e51b81526020600482015260096024820152683737b634b234ba3a9960b91b604482015290519081900360640190fd5b61271c565b861561270857601c54610100900460ff166126ff57600080fd5b5060195461271c565b601c54610100900460ff1661271c57600080fd5b61274b565b8315801561272c5750865b1561274b57601c5462010000900460ff1661274657600080fd5b50601a545b80156127845760006127636103e8611b778c85612e1f565b60135490915061277e908d906001600160a01b031683612cc4565b91909101905b81156127905781890398505b50505b61279e898989612cc4565b6014546001600160a01b03166127ca57601480546001600160a01b0319166001600160a01b038b161790555b6015546001600160a01b03166127f657601580546001600160a01b0319166001600160a01b038a161790555b6014546001600160a01b031660009081526016602052604090205460ff1615801561283257506007546014546001600160a01b03908116911614155b1561289b5760135460145460408051637de7a18d60e01b81526001600160a01b03928316600482015290519190921691637de7a18d91602480830192600092919082900301818387803b15801561288857600080fd5b505af1925050508015612899575060015b505b6015546001600160a01b031660009081526016602052604090205460ff161580156128d757506007546015546001600160a01b03908116911614155b156129405760135460155460408051637de7a18d60e01b81526001600160a01b03928316600482015290519190921691637de7a18d91602480830192600092919082900301818387803b15801561292d57600080fd5b505af192505050801561293e575060015b505b601480546001600160a01b03808c166001600160a01b0319928316811790935560158054918c16919092161790553014612a6657426129fb601754601360009054906101000a90046001600160a01b03166001600160a01b031663b181b28a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129c957600080fd5b505afa1580156129dd573d6000803e3d6000fd5b505050506040513d60208110156129f357600080fd5b505190612247565b11612a6657601354601b54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b158015612a5357600080fd5b505af1925050508015612a64575060015b505b505050505050505050565b60008184841115612b005760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ac5578181015183820152602001612aad565b50505050905090810190601f168015612af25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b601e805461ff00191661010017905560408051600280825260608083018452926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015612b7b57600080fd5b505afa158015612b8f573d6000803e3d6000fd5b505050506040513d6020811015612ba557600080fd5b505181518290600090612bb457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612be257fe5b6001600160a01b0392831660209182029290920181019190915260065460405163b6f9de9560e01b815260006004820181815287861660448401524260648401819052608060248501908152885160848601528851959097169663b6f9de95968b9694958a958c95939260a49092019187810191028083838b5b83811015612c74578181015183820152602001612c5c565b50505050905001955050505050506000604051808303818588803b158015612c9b57600080fd5b505af1158015612caf573d6000803e3d6000fd5b5050601e805461ff0019169055505050505050565b6001600160a01b038316612d095760405162461bcd60e51b81526004018080602001828103825260258152602001806134d46025913960400191505060405180910390fd5b6001600160a01b038216612d4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806133ba6023913960400191505060405180910390fd5b612d59838383611cbb565b612d9681604051806060016040528060268152602001613425602691396001600160a01b0386166000908152602081905260409020549190612a71565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612dc59082612247565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082612e2e57506000610e6b565b82820282848281612e3b57fe5b04146122a15760405162461bcd60e51b815260040180806020018281038252602181526020018061346b6021913960400191505060405180910390fd5b60006122a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061301c565b600080600080612ec8611eb8565b92509250925060008084118015612edf5750600083115b15612ef3578284870281612eef57fe5b0490505b8084018210612f0c57612f0882878686613081565b5094505b50505050919050565b600080600080612f23611eb8565b92509250925082811015612fd4576007548590612f48906001600160a01b03166115e0565b03600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f9757600080fd5b505afa158015612fab573d6000803e3d6000fd5b505050506040513d6020811015612fc157600080fd5b5051860281612fcc57fe5b049350613014565b601e5460ff16156130145760008084118015612ff05750600083115b15612f0c578583038487028161300257fe5b049050838101821015612f0c57600080fd5b505050919050565b6000818361306b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612ac5578181015183820152602001612aad565b50600083858161307757fe5b0495945050505050565b6000806000600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130d457600080fd5b505afa1580156130e8573d6000803e3d6000fd5b505050506040513d60208110156130fe57600080fd5b50516006546040805163c45a015560e01b815290519293506000926001600160a01b039092169163c45a015591600480820192602092909190829003018186803b15801561314b57600080fd5b505afa15801561315f573d6000803e3d6000fd5b505050506040513d602081101561317557600080fd5b505160408051622fcfcb60e31b815290516001600160a01b039092169163017e7e5891600480820192602092909190829003018186803b1580156131b857600080fd5b505afa1580156131cc573d6000803e3d6000fd5b505050506040513d60208110156131e257600080fd5b505160075460408051637464fc3d60e01b815290519293506001600160a01b0380851615159360009390911691637464fc3d916004808301926020929190829003018186803b15801561323457600080fd5b505afa158015613248573d6000803e3d6000fd5b505050506040513d602081101561325e57600080fd5b50519050811561330357801561330357600061327b888a02613352565b9050600061328883613352565b9050808211156133005760065460009081906001600160a01b03167310ed43c718714eb63d5aa57b78b54704e256024e14156132d8578284038802600802915082600802846011020190506132e6565b505080820386026005830282015b8082816132ef57fe5b04985088156132fd57968801965b50505b50505b878a0384613321576103e86133198b8302613352565b039650613344565b613341898683028161332f57fe5b0489878d028161333b57fe5b046133a3565b96505b505050505094509492505050565b60006003821115613395575080600160028204015b8181101561338f5780915060028182858161337e57fe5b04018161338757fe5b049050613367565b506112f8565b81156112f857506001919050565b60008183106133b257816122a1565b509091905056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636563616c6c6572206973206e6f7420746865206f776e6572000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208953b7f1b154404614dc2f940e1e373c45aa051a5339a40ca57e3840b761c6de64736f6c634300060c0033
Deployed Bytecode Sourcemap
21425:15159:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21739:71;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;21739:71:0;;;;;;;;;;;;;;23039:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14140:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15040:169;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15040:169:0;;;;;;;;:::i;22309:70::-;;;;;;;;;;;;;:::i;22867:25::-;;;;;;;;;;;;;:::i;21496:41::-;;;;;;;;;;;;;:::i;36010:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;36010:139:0;;;;;;;;:::i;:::-;;14455:108;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;25093:122;;;;;;;;;;;;;:::i;15215:355::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15215:355:0;;;;;;;;;;;;;;;;;:::i;36286:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36286:106:0;;;;:::i;22719:27::-;;;;;;;;;;;;;:::i;36155:125::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36155:125:0;;:::i;22229:73::-;;;;;;;;;;;;;:::i;14356:93::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35183:114;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35183:114:0;;:::i;15576:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15576:218:0;;;;;;;;:::i;22686:26::-;;;;;;;;;;;;;:::i;21544:29::-;;;;;;;;;;;;;:::i;21817:77::-;;;;;;;;;;;;;:::i;21580:73::-;;;;;;;;;;;;;:::i;22835:25::-;;;;;;;;;;;;;:::i;26005:125::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26005:125:0;-1:-1:-1;;;;;26005:125:0;;:::i;36398:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;36398:183:0;;;;;;;;;;:::i;25000:87::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25000:87:0;;:::i;25655:344::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25655:344:0;-1:-1:-1;;;;;25655:344:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;21980:73;;;;;;;;;;;;;:::i;33530:246::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33530:246:0;;;;;;;;;;;;;:::i;34486:181::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34486:181:0;;;;;;;;:::i;14569:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14569:127:0;-1:-1:-1;;;;;14569:127:0;;:::i;9969:148::-;;;;;;;;;;;;;:::i;33041:483::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33041:483:0;;-1:-1:-1;;33041:483:0;;;-1:-1:-1;33041:483:0;;-1:-1:-1;;33041:483:0:i;21901:72::-;;;;;;;;;;;;;:::i;32614:421::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;34290:190;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34290:190:0;;;;;;;;;;;;;;;;;:::i;9759:79::-;;;;;;;;;;;;;:::i;22141:::-;;;;;;;;;;;;;:::i;22060:74::-;;;;;;;;;;;;;:::i;14246:104::-;;;;;;;;;;;;;:::i;15800:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15800:269:0;;;;;;;;:::i;25221:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25221:175:0;;;;;;;;;;;;;;;;;;:::i;34848:329::-;;;;;;;;;;;;;;;;-1:-1:-1;34848:329:0;;:::i;14702:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14702:175:0;;;;;;;;:::i;34673:167::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34673:167:0;;;;;;;;:::i;25402:132::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25402:132:0;;;;;;;:::i;24798:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24798:97:0;-1:-1:-1;;;;;24798:97:0;;:::i;21660:72::-;;;;;;;;;;;;;:::i;24562:132::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24562:132:0;;;;;;;;;;:::i;24902:92::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24902:92:0;-1:-1:-1;;;;;24902:92:0;;:::i;22417:46::-;;;;;;;;;;;;;:::i;32393:213::-;;;;;;;;;;;;;:::i;35754:250::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;35754:250:0;;;;;;;;:::i;25540:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25540:109:0;;:::i;14883:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14883:151:0;;;;;;;;;;:::i;22793:35::-;;;;;;;;;;;;;:::i;10123:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10123:244:0;-1:-1:-1;;;;;10123:244:0;;:::i;24700:92::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24700:92:0;;:::i;22386:22::-;;;;;;;;;;;;;:::i;22585:32::-;;;;;;;;;;;;;:::i;21739:71::-;;;-1:-1:-1;;;;;21739:71:0;;:::o;23039:31::-;;;;;;:::o;14140:100::-;14227:5;14220:12;;;;;;;;-1:-1:-1;;14220:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14194:13;;14220:12;;14227:5;;14220:12;;14227:5;14220:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14140:100;:::o;15040:169::-;15123:4;15140:39;15149:12;:10;:12::i;:::-;15163:7;15172:6;15140:8;:39::i;:::-;-1:-1:-1;15197:4:0;15040:169;;;;;:::o;22309:70::-;;;-1:-1:-1;;;;;22309:70:0;;:::o;22867:25::-;;;;;;;;;:::o;21496:41::-;;;-1:-1:-1;;;;;21496:41:0;;:::o;36010:139::-;24495:13;;-1:-1:-1;;;;;24495:13:0;24481:10;:27;24473:63;;;;;-1:-1:-1;;;24473:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24473:63:0;;;;;;;;;;;;;;;36097:19:::1;::::0;:44:::1;::::0;;-1:-1:-1;;;36097:44:0;;-1:-1:-1;;;;;36097:44:0;;::::1;;::::0;::::1;::::0;;;;;;;;;:19;;;::::1;::::0;:28:::1;::::0;:44;;;;;:19:::1;::::0;:44;;;;;;;:19;;:44;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36010:139:::0;;:::o;14455:108::-;14543:12;;14455:108;:::o;25093:122::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;25160:19:::1;;;;;;;;;-1:-1:-1::0;;;;;25160:19:0::1;-1:-1:-1::0;;;;;25160:45:0::1;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25093:122::o:0;15215:355::-;15355:4;15372:36;15382:6;15390:9;15401:6;15372:9;:36::i;:::-;15419:121;15428:6;15436:12;:10;:12::i;:::-;15450:89;15488:6;15450:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15450:19:0;;;;;;:11;:19;;;;;;15470:12;:10;:12::i;:::-;-1:-1:-1;;;;;15450:33:0;;;;;;;;;;;;-1:-1:-1;15450:33:0;;;:89;:37;:89::i;:::-;15419:8;:121::i;:::-;-1:-1:-1;15558:4:0;15215:355;;;;;:::o;36286:106::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;36362:12:::1;:22:::0;;-1:-1:-1;;36362:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36286:106::o;22719:27::-;;;;:::o;36155:125::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;36225:19:::1;::::0;:47:::1;::::0;;-1:-1:-1;;;36225:47:0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;36225:19:0;;::::1;::::0;:39:::1;::::0;:47;;;;;:19:::1;::::0;:47;;;;;;;;:19;;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36155:125:::0;:::o;22229:73::-;;;-1:-1:-1;;;;;22229:73:0;;:::o;14356:93::-;14439:2;14356:93;:::o;35183:114::-;24495:13;;-1:-1:-1;;;;;24495:13:0;24481:10;:27;24473:63;;;;;-1:-1:-1;;;24473:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24473:63:0;;;;;;;;;;;;;;;35252:37:::1;35262:9;35281:6;35252:9;:37::i;:::-;35183:114:::0;:::o;15576:218::-;15664:4;15681:83;15690:12;:10;:12::i;:::-;15704:7;15713:50;15752:10;15713:11;:25;15725:12;:10;:12::i;:::-;-1:-1:-1;;;;;15713:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;15713:25:0;;;:34;;;;;;;;;;;:38;:50::i;22686:26::-;;;;:::o;21544:29::-;;;-1:-1:-1;;;;;21544:29:0;;:::o;21817:77::-;;;-1:-1:-1;;;;;21817:77:0;;:::o;21580:73::-;;;-1:-1:-1;;;;;21580:73:0;;:::o;22835:25::-;;;;;;;;;:::o;26005:125::-;-1:-1:-1;;;;;26094:28:0;;26070:4;26094:28;;;:19;:28;;;;;;;;26005:125;;;;:::o;36398:183::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;36484:40:::1;36501:4;36508:2:::0;-1:-1:-1;;36484:8:0::1;:40::i;:::-;36542:5;-1:-1:-1::0;;;;;36535:21:0::1;;36557:2;36570:1;36561:11;36535:38;;;;;;;;;;;;;-1:-1:-1::0;;;;;36535:38:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;25000:87:::0;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;25064:7:::1;:15:::0;25000:87::o;25655:344::-;25817:13;;25810:40;;;-1:-1:-1;;;25810:40:0;;-1:-1:-1;;;;;25810:40:0;;;;;;;;;25724:16;;;;;;25817:13;;;25810:31;;:40;;;;;;;;;;;;;;;25817:13;25810:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25810:40:0;-1:-1:-1;;;;;25889:18:0;;;25861:25;25889:18;;;:9;25810:40;25889:18;;;;25929:17;;25971:20;;;;;25929:17;;25971:20;;-1:-1:-1;25655:344:0;-1:-1:-1;;25655:344:0:o;21980:73::-;;;-1:-1:-1;;;;;21980:73:0;;:::o;33530:246::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33666:18:0;;::::1;33638:25;33666:18:::0;;;:9:::1;:18;::::0;;;;33695:28;;;33734:20:::1;;:34:::0;33530:246::o;34486:181::-;24495:13;;-1:-1:-1;;;;;24495:13:0;24481:10;:27;24473:63;;;;;-1:-1:-1;;;24473:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24473:63:0;;;;;;;;;;;;;;;34598:7:::1;;34585:9;:20;;34577:29;;;::::0;::::1;;34617:42;34641:4;34648:2;34652:6;34617:15;:42::i;:::-;34486:181:::0;;:::o;14569:127::-;-1:-1:-1;;;;;14670:18:0;14643:7;14670:18;;;;;;;;;;;;14569:127::o;9969:148::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;10060:6:::1;::::0;10039:40:::1;::::0;10076:1:::1;::::0;-1:-1:-1;;;;;10060:6:0::1;::::0;10039:40:::1;::::0;10076:1;;10039:40:::1;10090:6;:19:::0;;-1:-1:-1;;;;;;10090:19:0::1;::::0;;9969:148::o;33041:483::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;33152:15;;33138:11:::1;::::0;;33240:277:::1;33260:3;33256:1;:7;33240:277;;;33294:8;33303:1;33294:11;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;33331:18:0;;::::1;;::::0;;;:9:::1;:18:::0;;;;;;;33364:28;;;33407:20:::1;::::0;::::1;:31:::0;;;33457:19:::1;::::0;:37;;-1:-1:-1;;;33457:37:0;;::::1;::::0;::::1;::::0;;;;;;33294:11;;-1:-1:-1;33331:18:0;-1:-1:-1;33457:19:0;;::::1;::::0;:28:::1;::::0;:37;;;;;;;;;;33331:18;33457:19;:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;33453:53:::0;33264:3:::1;;33240:277;;21901:72:::0;;;-1:-1:-1;;;;;21901:72:0;;:::o;32614:421::-;32660:14;32676:13;32701:23;32742:13;;;;;;;;;-1:-1:-1;;;;;32742:13:0;32701:55;;32768:7;32777:10;32792:8;-1:-1:-1;;;;;32792:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32792:22:0;;;;;;;32767:47;;;;;-1:-1:-1;32767:47:0;;-1:-1:-1;32848:5:0;32889:4;-1:-1:-1;;;;;32868:26:0;;;32864:164;;;32920:2;32911:11;;32945:2;32937:10;;32864:164;;;32989:2;32980:11;;33014:2;33006:10;;32864:164;32614:421;;;;;;:::o;34290:190::-;24495:13;;-1:-1:-1;;;;;24495:13:0;24481:10;:27;24473:63;;;;;-1:-1:-1;;;24473:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24473:63:0;;;;;;;;;;;;;;;34419:7:::1;;34406:9;:20;;34398:29;;;::::0;::::1;;34445:5;-1:-1:-1::0;;;;;34438:22:0::1;;34461:2;34465:6;34438:34;;;;;;;;;;;;;-1:-1:-1::0;;;;;34438:34:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;9759:79:::0;9824:6;;-1:-1:-1;;;;;9824:6:0;9759:79;:::o;22141:::-;;;-1:-1:-1;;;;;22141:79:0;;:::o;22060:74::-;;;-1:-1:-1;;;;;22060:74:0;;:::o;14246:104::-;14335:7;14328:14;;;;;;;;-1:-1:-1;;14328:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14302:13;;14328:14;;14335:7;;14328:14;;14335:7;14328:14;;;;;;;;;;;;;;;;;;;;;;;;15800:269;15893:4;15910:129;15919:12;:10;:12::i;:::-;15933:7;15942:96;15981:15;15942:96;;;;;;;;;;;;;;;;;:11;:25;15954:12;:10;:12::i;:::-;-1:-1:-1;;;;;15942:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;15942:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;25221:175::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;25312:15:::1;:26:::0;;-1:-1:-1;;25312:26:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;25349:13:0::1;25312:26;25349:13:::0;::::1;;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;25373:15:0::1;::::0;;::::1;;::::0;;;::::1;;::::0;;25221:175::o;34848:329::-;24495:13;;-1:-1:-1;;;;;24495:13:0;24481:10;:27;24473:63;;;;;-1:-1:-1;;;24473:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24473:63:0;;;;;;;;;;;;;;;34939:1:::1;34926:9;:14;34923:26;;34942:7;;34923:26;34974:1;34962:8;:13;34959:25;;34977:7;;34959:25;34994:17;35014:26;35036:3;35014:17;:9;35028:2;35014:13;:17::i;:::-;:21:::0;::::1;:26::i;:::-;35058:10;::::0;35051:70:::1;::::0;;-1:-1:-1;;;35051:70:0;;35083:10:::1;35051:70;::::0;::::1;::::0;35103:6:::1;35051:70:::0;;;;;;;;;;;;34994:46;;-1:-1:-1;;;;;;35058:10:0;;::::1;::::0;35051:31:::1;::::0;:70;;;;;::::1;::::0;;;;;;;;;35058:10:::1;::::0;35051:70;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35132:37:0::1;::::0;-1:-1:-1;35142:9:0;35161:6:::1;35132:9;:37::i;14702:175::-:0;14788:4;14805:42;14815:12;:10;:12::i;:::-;14829:9;14840:6;14805:9;:42::i;34673:167::-;24495:13;;-1:-1:-1;;;;;24495:13:0;24481:10;:27;24473:63;;;;;-1:-1:-1;;;24473:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24473:63:0;;;;;;;;;;;;;;;34785:7:::1;;34772:9;:20;;34764:29;;;::::0;::::1;;34804:28;::::0;-1:-1:-1;;;;;34804:20:0;::::1;::::0;:28;::::1;;;::::0;34825:6;;34804:28:::1;::::0;;;34825:6;34804:20;:28;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;34673:167:::0;;:::o;25402:132::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;25481:6:::1;:16:::0;;;;25508:7:::1;:18:::0;25402:132::o;24798:97::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;24866:13:::1;:21:::0;;-1:-1:-1;;;;;;24866:21:0::1;-1:-1:-1::0;;;;;24866:21:0;;;::::1;::::0;;;::::1;::::0;;24798:97::o;21660:72::-;;;-1:-1:-1;;;;;21660:72:0;;:::o;24562:132::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24647:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;24647:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24562:132::o;24902:92::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;24968:10:::1;:18:::0;;-1:-1:-1;;;;;;24968:18:0::1;-1:-1:-1::0;;;;;24968:18:0;;;::::1;::::0;;;::::1;::::0;;24902:92::o;22417:46::-;;;-1:-1:-1;;;;;22417:46:0;;:::o;32393:213::-;32438:14;32454:13;32469:20;32519:15;:13;:15::i;:::-;32584:13;;32560:38;;;-1:-1:-1;;;32560:38:0;;-1:-1:-1;;;;;32584:13:0;;;32560:38;;;;;;32501:33;;-1:-1:-1;32501:33:0;;-1:-1:-1;32567:5:0;32560:23;;;;:38;;;;;;;;;;;;;;;:23;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32560:38:0;32393:213;;;;32560:38;32393:213;-1:-1:-1;32393:213:0:o;35754:250::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;35841:19:0;::::1;35837:160;;35876:36;::::0;35884:10:::1;::::0;35876:36;::::1;;;::::0;35905:6;;35876:36:::1;::::0;;;35905:6;35884:10;35876:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;35837:160;;;35943:42;::::0;;-1:-1:-1;;;35943:42:0;;35966:10:::1;35943:42;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;35943:22:0;::::1;::::0;::::1;::::0;:42;;;;;::::1;::::0;;;;;;;;-1:-1:-1;35943:22:0;:42;::::1;;::::0;::::1;;;;::::0;::::1;25540:109:::0;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;25616:14:::1;:25:::0;25540:109::o;14883:151::-;-1:-1:-1;;;;;14999:18:0;;;14972:7;14999:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14883:151::o;22793:35::-;;;;;;:::o;10123:244::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10212:22:0;::::1;10204:73;;;;-1:-1:-1::0;;;10204:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10314:6;::::0;10293:38:::1;::::0;-1:-1:-1;;;;;10293:38:0;;::::1;::::0;10314:6:::1;::::0;10293:38:::1;::::0;10314:6:::1;::::0;10293:38:::1;10342:6;:17:::0;;-1:-1:-1;;;;;;10342:17:0::1;-1:-1:-1::0;;;;;10342:17:0;;;::::1;::::0;;;::::1;::::0;;10123:244::o;24700:92::-;9894:12;:10;:12::i;:::-;9884:6;;-1:-1:-1;;;;;9884:6:0;;;:22;;;9876:67;;;;;-1:-1:-1;;;9876:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9876:67:0;;;;;;;;;;;;;;;24766:9:::1;:18:::0;24700:92::o;22386:22::-;;;;:::o;22585:32::-;;;;:::o;10421:179::-;10479:7;10511:5;;;10535:6;;;;10527:46;;;;;-1:-1:-1;;;10527:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10591:1;10421:179;-1:-1:-1;;;10421:179:0:o;1069:98::-;1149:10;1069:98;:::o;17450:378::-;-1:-1:-1;;;;;17586:19:0;;17578:68;;;;-1:-1:-1;;;17578:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17665:21:0;;17657:68;;;;-1:-1:-1;;;17657:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17736:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17788:32;;;;;;;;;;;;;;;;;17450:378;;;:::o;26136:3424::-;-1:-1:-1;;;;;26268:18:0;;26260:68;;;;-1:-1:-1;;;26260:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26347:16:0;;26339:64;;;;-1:-1:-1;;;26339:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26417:11;26414:92;;26445:28;26461:4;26467:2;26471:1;26445:15;:28::i;:::-;26488:7;;26414:92;26516:15;26534;26544:4;26534:9;:15::i;:::-;26516:33;;26579:6;26568:7;:17;;26560:33;;;;;-1:-1:-1;;;26560:33:0;;;;;;;;;;;;-1:-1:-1;;;26560:33:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26639:25:0;;26604:12;26639:25;;;:19;:25;;;;;;;;26638:26;:54;;;;-1:-1:-1;;;;;;26669:23:0;;;;;;:19;:23;;;;;;;;26668:24;26638:54;26635:100;;;-1:-1:-1;26719:4:0;26635:100;26865:13;;26766:9;;26747:16;;;;-1:-1:-1;;;;;26859:19:0;;;26865:13;;26859:19;:61;;;;-1:-1:-1;26904:15:0;;-1:-1:-1;;;;;26904:15:0;26882:10;:38;26859:61;:81;;;;;26936:4;-1:-1:-1;;;;;26924:16:0;:8;-1:-1:-1;;;;;26924:16:0;;26859:81;26855:345;;;26974:23;26990:6;26974:15;:23::i;:::-;26957:40;-1:-1:-1;27016:18:0;;27012:177;;-1:-1:-1;;;;;27100:19:0;;27065:5;27100:19;;;:9;:19;;;;;27138:35;;;;;;27065:5;;-1:-1:-1;27100:19:0;-1:-1:-1;27012:177:0;27260:13;;27212:25;;-1:-1:-1;;;;;27252:21:0;;;27260:13;;27252:21;27248:473;;;27310:26;27329:6;27310:18;:26::i;:::-;27290:46;-1:-1:-1;27355:21:0;;27351:359;;-1:-1:-1;;;;;27408:19:0;;;;;;:9;:19;;;;;27454:17;;27408:19;;-1:-1:-1;27454:38:0;-1:-1:-1;27454:38:0;;:71;;-1:-1:-1;;;;;;27496:29:0;;;;;;:19;:29;;;;;;;;27454:71;27446:80;;;;;;27545:38;;;;;;;-1:-1:-1;;;;;27606:29:0;;27545:17;27606:29;;;:19;:29;;;;;;;;27602:93;;;27670:5;27660:15;;27602:93;-1:-1:-1;;;;;27737:25:0;;;;;;:19;:25;;;;;;;;27736:26;:54;;;;-1:-1:-1;;;;;;27767:23:0;;;;;;:19;:23;;;;;;;;27766:24;27736:54;27733:1105;;;27818:13;;-1:-1:-1;;;;;27810:21:0;;;27818:13;;27810:21;;;;:44;;-1:-1:-1;27841:13:0;;-1:-1:-1;;;;;27835:19:0;;;27841:13;;27835:19;;27810:44;27807:98;;;27884:5;27874:15;;27807:98;27989:13;;27921:12;;;;-1:-1:-1;;;;;27981:21:0;;;27989:13;;27981:21;27977:527;;;28031:17;28027:1;:21;:32;;;;;28052:7;28027:32;28023:293;;;28092:15;;;;28084:37;;;;;-1:-1:-1;;;28084:37:0;;;;;;;;;;;;-1:-1:-1;;;28084:37:0;;;;;;;;;;;;;;;28023:293;;;28151:7;28147:169;;;28191:5;;;;;;;28183:14;;;;;;-1:-1:-1;28229:6:0;;28147:169;;;28290:5;;;;;;;28282:14;;;;;;27977:527;;;28360:19;;:30;;;;;28383:7;28360:30;28356:133;;;28423:6;;;;;;;28415:15;;;;;;-1:-1:-1;28462:7:0;;28356:133;28524:10;;28520:228;;28555:21;28579:28;28602:4;28579:18;:6;28590;28579:10;:18::i;:28::-;28656:19;;28555:52;;-1:-1:-1;28626:66:0;;28642:4;;-1:-1:-1;;;;;28656:19:0;28555:52;28626:15;:66::i;:::-;28711:21;;;;;28520:228;28768:8;;28764:63;;28807:4;28797:14;;;;28764:63;27733:1105;;;28848:33;28864:4;28870:2;28874:6;28848:15;:33::i;:::-;28897:11;;-1:-1:-1;;;;;28897:11:0;28894:48;;28924:11;:18;;-1:-1:-1;;;;;;28924:18:0;-1:-1:-1;;;;;28924:18:0;;;;;28894:48;28956:9;;-1:-1:-1;;;;;28956:9:0;28953:42;;28981:9;:14;;-1:-1:-1;;;;;;28981:14:0;-1:-1:-1;;;;;28981:14:0;;;;;28953:42;29029:11;;-1:-1:-1;;;;;29029:11:0;29012:29;;;;:16;:29;;;;;;;;29011:30;:62;;;;-1:-1:-1;29060:13:0;;29045:11;;-1:-1:-1;;;;;29045:11:0;;;29060:13;;29045:28;;29011:62;29008:127;;;29082:19;;29111:11;;29082:41;;;-1:-1:-1;;;29082:41:0;;-1:-1:-1;;;;;29111:11:0;;;29082:41;;;;;;:19;;;;;:28;;:41;;;;;:19;;:41;;;;;;;:19;;:41;;;;;;;;;;;;;;;;;;;;;;;;;29078:57;;29166:9;;-1:-1:-1;;;;;29166:9:0;29149:27;;;;:16;:27;;;;;;;;29148:28;:58;;;;-1:-1:-1;29193:13:0;;29180:9;;-1:-1:-1;;;;;29180:9:0;;;29193:13;;29180:26;;29148:58;29145:119;;;29213:19;;29242:9;;29213:39;;;-1:-1:-1;;;29213:39:0;;-1:-1:-1;;;;;29242:9:0;;;29213:39;;;;;;:19;;;;;:28;;:39;;;;;:19;;:39;;;;;;;:19;;:39;;;;;;;;;;;;;;;;;;;;;;;;;29209:55;;29274:11;:18;;-1:-1:-1;;;;;29274:18:0;;;-1:-1:-1;;;;;;29274:18:0;;;;;;;;29303:9;:14;;;;;;;;;;;;29347:4;29332:20;29329:224;;29433:15;29372:57;29419:9;;29372:19;;;;;;;;;-1:-1:-1;;;;;29372:19:0;-1:-1:-1;;;;;29372:40:0;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29372:42:0;;:46;:57::i;:::-;:76;29369:173;;29472:19;;29500:14;;29472:43;;;-1:-1:-1;;;;;;29472:43:0;;;;;;;;;;-1:-1:-1;;;;;29472:19:0;;;;:27;;:43;;;;;:19;;:43;;;;;;;;:19;;:43;;;;;;;;;;;;;;;;;;;;;;;;;29468:59;;26136:3424;;;;;;;;;:::o;10748:190::-;10834:7;10870:12;10862:6;;;;10854:29;;;;-1:-1:-1;;;10854:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10906:5:0;;;10748:190::o;35303:408::-;23173:6;:13;;-1:-1:-1;;23173:13:0;;;;;35409:16:::1;::::0;;35423:1:::1;35409:16:::0;;;35385:21:::1;35409:16:::0;;::::1;::::0;;35385:21;35409:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;35446:15:0::1;::::0;:22:::1;::::0;;-1:-1:-1;;;35446:22:0;;;;35385:40;;-1:-1:-1;;;;;;35446:15:0;;::::1;::::0;:20:::1;::::0;-1:-1:-1;35446:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35446:22:0;35436:7;;:4;;35441:1:::1;::::0;35436:7:::1;;;;;;;;;:32;-1:-1:-1::0;;;;;35436:32:0::1;;;-1:-1:-1::0;;;;;35436:32:0::1;;;::::0;::::1;35497:4;35479;35484:1;35479:7;;;;;;;;-1:-1:-1::0;;;;;35479:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;35515:15:::1;::::0;:188:::1;::::0;-1:-1:-1;;;35515:188:0;;:15:::1;:188;::::0;::::1;::::0;;;;;::::1;::::0;;;;35677:15:::1;35515:188:::0;;;;;;;;;;;;;;;;;;;;;:15;;;::::1;::::0;:66:::1;::::0;35589:11;;35515:15;;35632:4;;35659:2;;35515:188;;;;;;;;;::::1;::::0;::::1;::::0;;;:15;:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23209:6:0;:14;;-1:-1:-1;;23209:14:0;;;-1:-1:-1;;;;;;35303:408:0:o;16075:569::-;-1:-1:-1;;;;;16215:20:0;;16207:70;;;;-1:-1:-1;;;16207:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16296:23:0;;16288:71;;;;-1:-1:-1;;;16288:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16370:47;16391:6;16399:9;16410:6;16370:20;:47::i;:::-;16448:71;16470:6;16448:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16448:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;16428:17:0;;;:9;:17;;;;;;;;;;;:91;;;;16553:20;;;;;;;:32;;16578:6;16553:24;:32::i;:::-;-1:-1:-1;;;;;16530:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;16601:35;;;;;;;16530:20;;16601:35;;;;;;;;;;;;;16075:569;;;:::o;10944:246::-;11002:7;11026:6;11022:47;;-1:-1:-1;11056:1:0;11049:8;;11022:47;11091:5;;;11095:1;11091;:5;:1;11115:5;;;;;:10;11107:56;;;;-1:-1:-1;;;11107:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11196:132;11254:7;11281:39;11285:1;11288;11281:39;;;;;;;;;;;;;;;;;:3;:39::i;29568:447::-;29632:17;29662:14;29678:13;29693:20;29717:14;:12;:14::i;:::-;29661:70;;;;;;29742:19;29785:1;29776:6;:10;:23;;;;;29798:1;29790:5;:9;29776:23;29772:93;;;29848:5;29839:6;29830;:15;:23;;;;;;29816:37;;29772:93;29904:11;29895:6;:20;29879:12;:36;29875:133;;29947:49;29960:12;29974:6;29982;29990:5;29947:12;:49::i;:::-;-1:-1:-1;29932:64:0;-1:-1:-1;29875:133:0;29568:447;;;;;;;:::o;31785:600::-;31852:17;31882:14;31898:13;31913:20;31937:14;:12;:14::i;:::-;31881:70;;;;;;31981:6;31966:12;:21;31962:416;;;32082:13;;32099:6;;32072:24;;-1:-1:-1;;;;;32082:13:0;32072:9;:24::i;:::-;:33;32040:13;;;;;;;;;-1:-1:-1;;;;;32040:13:0;-1:-1:-1;;;;;32025:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32025:43:0;32016:52;;:90;;;;;;32004:102;;31962:416;;;32128:12;;;;32124:254;;;32157:19;32204:1;32195:6;:10;:23;;;;;32217:1;32209:5;:9;32195:23;32191:176;;;32280:6;32272:5;:14;32262:6;32253;:15;:34;;;;;;32239:48;;32344:6;32330:11;:20;32314:12;:36;;32306:45;;;;;32124:254;31785:600;;;;;;:::o;11334:189::-;11420:7;11455:12;11448:5;11440:28;;;;-1:-1:-1;;;11440:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11479:9;11495:1;11491;:5;;;;;;;11334:189;-1:-1:-1;;;;;11334:189:0:o;30023:1754::-;30168:17;30187:22;30222:23;30263:13;;;;;;;;;-1:-1:-1;;;;;30263:13:0;-1:-1:-1;;;;;30248:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30248:43:0;30336:15;;:25;;;-1:-1:-1;;;30336:25:0;;;;30248:43;;-1:-1:-1;30302:13:0;;-1:-1:-1;;;;;30336:15:0;;;;:23;;:25;;;;;30248:43;;30336:25;;;;;;;;:15;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30336:25:0;30318:52;;;-1:-1:-1;;;30318:52:0;;;;-1:-1:-1;;;;;30318:50:0;;;;;;:52;;;;;30336:25;;30318:52;;;;;;;;:50;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30318:52:0;30456:13;;30441:37;;;-1:-1:-1;;;30441:37:0;;;;30318:52;;-1:-1:-1;;;;;;30394:19:0;;;;;;30381:10;;30456:13;;;;30441:35;;:37;;;;;30318:52;;30441:37;;;;;;;30456:13;30441:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30441:37:0;;-1:-1:-1;30489:961:0;;;;30519:11;;30515:924;;30551:13;30567:18;30582:2;30577;:7;30567:9;:18::i;:::-;30551:34;;30604:17;30624;30634:6;30624:9;:17::i;:::-;30604:37;;30672:9;30664:5;:17;30660:764;;;30800:15;;30706:17;;;;-1:-1:-1;;;;;30800:15:0;30828:42;30792:79;30788:474;;;30953:9;30945:5;:17;30926:15;:37;30966:1;30926:41;30914:53;;31022:9;31034:1;31022:13;31008:5;31016:2;31008:10;:28;30994:42;;30788:474;;;-1:-1:-1;;31158:17:0;;;31139:37;;31225:1;31217:9;;:21;;30788:474;31313:11;31301:9;:23;;;;;;;-1:-1:-1;31351:18:0;;31347:57;;31371:33;;;;31347:57;30660:764;;;30515:924;;;31478:13;;;31506:20;31502:268;;31585:4;31555:27;31575:6;31565:7;:16;31555:9;:27::i;:::-;:34;31543:46;;31502:268;;;31634:124;31691:2;31672:15;31662:7;:25;31661:32;;;;;;31741:2;31722:15;31713:6;:24;31712:31;;;;;;31634:8;:124::i;:::-;31622:136;;31502:268;30023:1754;;;;;;;;;;;;:::o;11985:303::-;12030:6;12057:1;12053;:5;12049:232;;;-1:-1:-1;12079:1:0;12112;12108;12104:5;;:9;12128:92;12139:1;12135;:5;12128:92;;;12165:1;12161:5;;12203:1;12198;12194;12190;:5;;;;;;:9;12189:15;;;;;;12185:19;;12128:92;;;12049:232;;;;12241:6;;12237:44;;-1:-1:-1;12268:1:0;11985:303;;;:::o;11881:96::-;11933:6;11960:1;11956;:5;:13;;11968:1;11956:13;;;-1:-1:-1;11964:1:0;;11952:17;-1:-1:-1;11881:96:0:o
Swarm Source
ipfs://98e1b53b09c98ea75bb6b21035f688091325a0b592ffbfcfab9547eebf9f03eb
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.