Polygon Sponsored slots available. Book your slot here!
ERC-20
Overview
Max Total Supply
6,454,254.273890486611664106 FIT
Holders
275
Market
Price
$0.00 @ 0.000000 MATIC
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,692.955111008914368235 FITValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
FITToken
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-11-30 */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.0; 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract ERC20 is Context, IERC20, IERC20Metadata { 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_) { _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); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } 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); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(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 += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(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); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(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 {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract FITToken is ERC20, Ownable { using SafeMath for uint256; uint256 public constant INITIAL_TOKEN_PRICE = 0.01 ether; uint256 public constant INITIAL_SUPPLY_PRICE = 60000 ether; uint256 public constant MIN_PRICE = 0.01 ether; uint256 public constant TOKEN_PRICE_INCREASING_MONTHLY_PERCENT = 100; uint256 public constant TOKEN_PRICE_INCREASING_PERIOD = 30 days; uint256 public BUY_TOKENS_MARKUP_PERCENT = 20; uint256 public REINVEST_TOKENS_MARKUP_PERCENT = 10; uint256 public SELL_TOKENS_DISCOUNT_PERCENT = 20; uint256[6] public REFERRAL_PERCENTS = [5, 3, 2, 1, 1, 1]; uint256 public REFERRAL_TOTAL_PERCENT; uint256 public constant SERVICE_PERCENT = 10; uint256 public constant LIQUIDITY_PERCENT = 3; address payable public serviceAddress; address payable public constant DEFAULT_REFERRER = payable(0xda002E82937f0b31b63e1721701E6A6BfE4D81d5); address payable public constant INITIAL_LIQUIDITY = payable(0xa28cb54105F31B9B504CA510b37E4A9e5b3FA81f); uint256 public totalPlayers; uint256 public totalInvested; uint256 public totalPayout; uint256 public totalTokensBought; uint256 public totalReferralReward; struct Player { uint256 time; uint256 balance; uint256 deposit; uint256 payout; address referrer; uint256 referralReward; uint256[6] referralNumbers; } mapping(address => Player) public players; uint256 private periodStartTime; uint256 private periodStartPrice = INITIAL_TOKEN_PRICE; uint256 constant public TIME_STEP = 1 days; uint256 constant public PERCENTS_DIVIDER = 10000; address public flipTokenContractAddress = address(0x0); struct Stake { uint256 amount; uint256 checkpoint; uint256 checkpointHold; uint256 accumulatedReward; uint256 withdrawnReward; } mapping (address => Stake) stakes; uint256 constant public HOLD_BONUS_PERCENT_STAKE = 500; uint256 constant public HOLD_BONUS_PERCENT_LIMIT = 10000; uint256 constant public USER_DEPOSITS_STEP_STAKE = 1500 ether; uint256 constant public VIP_BONUS_PERCENT_STAKE = 100; uint256 constant public VIP_BONUS_PERCENT_LIMIT = 10000; uint256 public MULTIPLIER = 2; uint256 public DIVIDER = 10; event PriceChange(uint256 oldPrice, uint256 newPrice, uint256 time); event Staked(address indexed user, uint256 amount); event Unstaked(address indexed user, uint256 amount); event RewardWithdrawn(address indexed user, uint256 reward); event NewReferral(address indexed user, address indexed referral, uint256 amount, uint256 time); constructor() ERC20("Fractal Investment Token", "FIT") { serviceAddress = DEFAULT_REFERRER; players[serviceAddress].time = block.timestamp; periodStartTime = block.timestamp; register(serviceAddress, serviceAddress); _mint(INITIAL_LIQUIDITY, INITIAL_SUPPLY_PRICE.mul(10 ** uint256(decimals())).div(INITIAL_TOKEN_PRICE)); for (uint8 i = 0; i < REFERRAL_PERCENTS.length; i++) { REFERRAL_TOTAL_PERCENT = REFERRAL_TOTAL_PERCENT.add(REFERRAL_PERCENTS[i]); } } function register(address _addr, address _referrer) private { Player storage player = players[_addr]; player.referrer = _referrer; address ref = _referrer; for (uint8 i = 0; i < REFERRAL_PERCENTS.length; i++) { if (ref == serviceAddress) { break; } players[ref].referralNumbers[i] = players[ref].referralNumbers[i].add(1); ref = players[ref].referrer; } } function buy(address _referredBy) public payable { require(msg.value >= MIN_PRICE, "Invalid buy price"); Player storage player = players[msg.sender]; if (player.time == 0) { player.time = block.timestamp; totalPlayers++; if (_referredBy != address(0x0) && players[_referredBy].deposit > 0){ register(msg.sender, _referredBy); emit NewReferral(msg.sender, _referredBy, msg.value, block.timestamp); } else { register(msg.sender, serviceAddress); } } player.deposit = player.deposit.add(msg.value); if (block.timestamp.sub(periodStartTime) >= TOKEN_PRICE_INCREASING_PERIOD) { uint256 oldPrice = price(); periodStartPrice = periodStartPrice.mul(2); periodStartTime = block.timestamp; emit PriceChange(oldPrice, price(), block.timestamp); } uint256 tokensAmount = msg.value .mul(10 ** uint256(decimals())) .div(buyPrice()); _mint(msg.sender, tokensAmount); distributeRef(msg.value, player.referrer); totalInvested = totalInvested.add(msg.value); totalTokensBought = totalTokensBought.add(tokensAmount); payable(owner()).transfer(msg.value.mul(SERVICE_PERCENT).div(100)); payable(INITIAL_LIQUIDITY).transfer(msg.value.mul(LIQUIDITY_PERCENT).div(100)); } function sell(uint256 _amount) public { require(balanceOf(msg.sender) >= _amount, "Not enough tokens on the balance"); Player storage player = players[msg.sender]; if (player.time == 0) { player.time = block.timestamp; totalPlayers++; register(msg.sender, serviceAddress); } if (block.timestamp.sub(periodStartTime) >= TOKEN_PRICE_INCREASING_PERIOD) { uint256 oldPrice = price(); periodStartPrice = periodStartPrice.mul(2); periodStartTime = block.timestamp; emit PriceChange(oldPrice, price(), block.timestamp); } player.balance = player.balance.add( _amount .mul(sellPrice()) .div(10 ** uint256(decimals())) ); _burn(msg.sender, _amount); } function reinvest() public { require(players[msg.sender].time > 0, "You didn't buy tokens yet"); Player storage player = players[msg.sender]; require(player.balance > 0, "Nothing to reinvest"); if (block.timestamp.sub(periodStartTime) >= TOKEN_PRICE_INCREASING_PERIOD) { uint256 oldPrice = price(); periodStartPrice = periodStartPrice.mul(2); periodStartTime = block.timestamp; emit PriceChange(oldPrice, price(), block.timestamp); } uint256 trxAmount = player.balance; uint256 tokensAmount = trxAmount .mul(10 ** uint256(decimals())) .div(reinvestPrice()); player.balance = 0; _mint(msg.sender, tokensAmount); distributeRef(trxAmount, player.referrer); totalInvested = totalInvested.add(trxAmount); player.deposit = player.deposit.add(trxAmount); totalTokensBought = totalTokensBought.add(tokensAmount); payable(owner()).transfer(trxAmount.mul(SERVICE_PERCENT).div(100)); } function withdraw() public { require(players[msg.sender].time > 0, "You didn't buy tokens yet"); require(players[msg.sender].balance > 0, "Nothing to withdraw"); Player storage player = players[msg.sender]; uint256 amount = player.balance; player.balance = 0; player.payout = player.payout.add(amount); totalPayout = totalPayout.add(amount); payable(msg.sender).transfer(amount); } function price() public view returns (uint256) { return periodStartPrice.add( periodStartPrice .mul(TOKEN_PRICE_INCREASING_MONTHLY_PERCENT) .mul(block.timestamp.sub(periodStartTime)) .div(TOKEN_PRICE_INCREASING_PERIOD) .div(100) ); } function buyPrice() public view returns (uint256) { return price() .mul(100 + BUY_TOKENS_MARKUP_PERCENT) .div(100); } function reinvestPrice() public view returns (uint256) { return price() .mul(100 + REINVEST_TOKENS_MARKUP_PERCENT) .div(100); } function sellPrice() public view returns (uint256) { return price() .mul(100 - SELL_TOKENS_DISCOUNT_PERCENT) .div(100); } function distributeRef(uint256 _amount, address _referrer) private { uint256 totalReward = (_amount.mul(REFERRAL_TOTAL_PERCENT)).div(100); address ref = _referrer; uint256 refReward; for (uint8 i = 0; i < REFERRAL_PERCENTS.length; i++) { refReward = _amount.mul(REFERRAL_PERCENTS[i]).div(100); totalReward = totalReward.sub(refReward); players[ref].referralReward = players[ref].referralReward.add(refReward); totalReferralReward = totalReferralReward.add(refReward); if (refReward > 0) { if (ref != address(0x0)) { payable(ref).transfer(refReward); } else { serviceAddress.transfer(refReward); } } ref = players[ref].referrer; } if (totalReward > 0) { serviceAddress.transfer(totalReward); } } function changeServiceAddress(address payable _address) public onlyOwner { require(_address != address(0x0), "Invalid address"); require(_address != serviceAddress, "Nothing to change"); serviceAddress = _address; players[serviceAddress].time = block.timestamp; register(serviceAddress, serviceAddress); } function getStatistics() public view returns (uint256[9] memory) { return [ totalPlayers, totalInvested, totalPayout, totalTokensBought, totalReferralReward, price(), buyPrice(), reinvestPrice(), sellPrice() ]; } function getReferralNumbersByLevels(address _address) public view returns(uint256[6] memory) { return players[_address].referralNumbers; } function setFlipTokenContractAddress(address _flipTokenContractAddress) external onlyOwner { require(flipTokenContractAddress == address(0x0), "LP token address already configured"); require(isContract(_flipTokenContractAddress), "Provided address is not an LP token contract address"); flipTokenContractAddress = _flipTokenContractAddress; } function getStakeVIPBonusRate(address userAddress) public view returns (uint256) { uint256 vipBonusRate = stakes[userAddress].amount.div(USER_DEPOSITS_STEP_STAKE).mul(VIP_BONUS_PERCENT_STAKE); if (vipBonusRate > VIP_BONUS_PERCENT_LIMIT) { return VIP_BONUS_PERCENT_LIMIT; } return vipBonusRate; } function getStakeHOLDBonusRate(address userAddress) public view returns (uint256) { if (stakes[userAddress].checkpointHold == 0) { return 0; } uint256 holdBonusRate = (block.timestamp.sub(stakes[userAddress].checkpointHold)).div(TIME_STEP).mul(HOLD_BONUS_PERCENT_STAKE); if (holdBonusRate > HOLD_BONUS_PERCENT_LIMIT) { return HOLD_BONUS_PERCENT_LIMIT; } return holdBonusRate; } function getUserStakePercentRate(address userAddress) public view returns (uint256) { return getStakeVIPBonusRate(userAddress) .add(getStakeHOLDBonusRate(userAddress)); } function stake(uint256 _amount) external returns (bool) { require(_amount > 0, "Invalid tokens amount value"); if (!IERC20(flipTokenContractAddress).transferFrom(msg.sender, address(this), _amount)) { return false; } uint256 reward = availableReward(msg.sender); if (reward > 0) { stakes[msg.sender].accumulatedReward = stakes[msg.sender].accumulatedReward.add(reward); } stakes[msg.sender].amount = stakes[msg.sender].amount.add(_amount); stakes[msg.sender].checkpoint = block.timestamp; if (stakes[msg.sender].checkpointHold == 0) { stakes[msg.sender].checkpointHold = block.timestamp; } emit Staked(msg.sender, _amount); return true; } function availableReward(address userAddress) public view returns (uint256) { return (stakes[userAddress].amount .mul(PERCENTS_DIVIDER.add(getUserStakePercentRate(userAddress))).div(PERCENTS_DIVIDER)) .mul(MULTIPLIER) .mul(block.timestamp.sub(stakes[userAddress].checkpoint)) .div(DIVIDER) .div(TIME_STEP); } function withdrawReward() external { uint256 reward = stakes[msg.sender].accumulatedReward .add(availableReward(msg.sender)); if (reward > 0) { stakes[msg.sender].checkpoint = block.timestamp; stakes[msg.sender].accumulatedReward = 0; stakes[msg.sender].withdrawnReward = stakes[msg.sender].withdrawnReward.add(reward); _mint(msg.sender, reward); emit RewardWithdrawn(msg.sender, reward); } } function unstake(uint256 _amount) external { require(_amount > 0, "Invalid tokens amount value"); require(_amount <= stakes[msg.sender].amount, "Not enough tokens on the stake balance"); uint256 reward = availableReward(msg.sender); if (reward > 0) { stakes[msg.sender].accumulatedReward = stakes[msg.sender].accumulatedReward.add(reward); } stakes[msg.sender].amount = stakes[msg.sender].amount.sub(_amount); stakes[msg.sender].checkpoint = block.timestamp; if (stakes[msg.sender].amount > 0) { stakes[msg.sender].checkpointHold = block.timestamp; } else { stakes[msg.sender].checkpointHold = 0; } require(IERC20(flipTokenContractAddress).transfer(msg.sender, _amount)); emit Unstaked(msg.sender, _amount); } function getUserStakeStats(address _userAddress) public view returns (uint256, uint256, uint256, uint256, uint256) { return ( stakes[_userAddress].amount, stakes[_userAddress].accumulatedReward, stakes[_userAddress].withdrawnReward, getStakeVIPBonusRate(_userAddress), getStakeHOLDBonusRate(_userAddress) ); } function getUserStakeTimeCheckpoints(address _userAddress) public view returns (uint256, uint256) { return ( stakes[_userAddress].checkpoint, stakes[_userAddress].checkpointHold ); } function updateMultiplier(uint256 multiplier) external onlyOwner { require(multiplier > 0 && multiplier <= 50, "Multiplier is out of range"); MULTIPLIER = multiplier; } function updateDivider(uint256 divider) external onlyOwner { require(divider > 0, "Divider is out of range"); DIVIDER = divider; } function isContract(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } function buy() external payable { payable(msg.sender).transfer(msg.value); } }
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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referral","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"NewReferral","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":false,"internalType":"uint256","name":"oldPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"PriceChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"BUY_TOKENS_MARKUP_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_REFERRER","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DIVIDER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HOLD_BONUS_PERCENT_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HOLD_BONUS_PERCENT_STAKE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_LIQUIDITY","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_SUPPLY_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_TOKEN_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDITY_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENTS_DIVIDER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"REFERRAL_PERCENTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERRAL_TOTAL_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REINVEST_TOKENS_MARKUP_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELL_TOKENS_DISCOUNT_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SERVICE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_PRICE_INCREASING_MONTHLY_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_PRICE_INCREASING_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USER_DEPOSITS_STEP_STAKE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VIP_BONUS_PERCENT_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VIP_BONUS_PERCENT_STAKE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"userAddress","type":"address"}],"name":"availableReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_referredBy","type":"address"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"changeServiceAddress","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":"flipTokenContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getReferralNumbersByLevels","outputs":[{"internalType":"uint256[6]","name":"","type":"uint256[6]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getStakeHOLDBonusRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getStakeVIPBonusRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStatistics","outputs":[{"internalType":"uint256[9]","name":"","type":"uint256[9]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserStakePercentRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"}],"name":"getUserStakeStats","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"}],"name":"getUserStakeTimeCheckpoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","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":[],"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":[{"internalType":"address","name":"","type":"address"}],"name":"players","outputs":[{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"referralReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reinvestPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"serviceAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_flipTokenContractAddress","type":"address"}],"name":"setFlipTokenContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalInvested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPlayers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReferralReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensBought","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":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divider","type":"uint256"}],"name":"updateDivider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"updateMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60146006818155600a60075560089190915561014060405260056080908152600360a052600260c052600160e081905261010081905261012052620000489160099190620004f4565b50662386f26fc10000601855601980546001600160a01b03191690556002601b55600a601c553480156200007b57600080fd5b506040518060400160405280601881526020017f4672616374616c20496e766573746d656e7420546f6b656e00000000000000008152506040518060400160405280600381526020016211925560ea1b8152508160039080519060200190620000e69291906200053c565b508051620000fc9060049060208401906200053c565b50505062000119620001136200025560201b60201c565b62000259565b601080546001600160a01b03191673da002e82937f0b31b63e1721701e6a6bfe4d81d590811790915560008190526016602052427f2936d56f9023a363b6bfd1f9f0efbc9cbe0f88f05c1cac59c10fcf93f41cc9b9819055601755620001809080620002ab565b620001f073a28cb54105f31b9b504ca510b37e4a9e5b3fa81f620001ea662386f26fc10000620001d6620001b76012600a620006e3565b690cb49b44ba602d800000620003d960201b6200215f1790919060201c565b620003f060201b620021721790919060201c565b620003fe565b60005b60068160ff1610156200024e576200023660098260ff16600681106200021d576200021d620006f1565b0154600f54620004e660201b6200217e1790919060201c565b600f5580620002458162000707565b915050620001f3565b50620007c7565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382811660009081526016602052604081206004810180546001600160a01b0319169385169390931790925582905b60068160ff161015620003d2576010546001600160a01b03838116911614156200030b57620003d2565b62000366600160166000856001600160a01b03166001600160a01b031681526020019081526020016000206006018360ff1660068110620003505762000350620006f1565b0154620004e660201b6200217e1790919060201c565b6001600160a01b038316600090815260166020526040902060069081019060ff84169081106200039a576200039a620006f1565b01556001600160a01b039182166000908152601660205260409020600401549091169080620003c98162000707565b915050620002e1565b5050505050565b6000620003e782846200072a565b90505b92915050565b6000620003e782846200074c565b6001600160a01b038216620004595760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200046d91906200076f565b90915550506001600160a01b038216600090815260208190526040812080548392906200049c9084906200076f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000620003e782846200076f565b82600681019282156200052a579160200282015b828111156200052a578251829060ff1690559160200191906001019062000508565b5062000538929150620005b9565b5090565b8280546200054a906200078a565b90600052602060002090601f0160209004810192826200056e57600085556200052a565b82601f106200058957805160ff19168380011785556200052a565b828001600101855582156200052a579182015b828111156200052a5782518255916020019190600101906200059c565b5b80821115620005385760008155600101620005ba565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006275781600019048211156200060b576200060b620005d0565b808516156200061957918102915b93841c9390800290620005eb565b509250929050565b6000826200064057506001620003ea565b816200064f57506000620003ea565b8160018114620006685760028114620006735762000693565b6001915050620003ea565b60ff841115620006875762000687620005d0565b50506001821b620003ea565b5060208310610133831016604e8410600b8410161715620006b8575081810a620003ea565b620006c48383620005e6565b8060001904821115620006db57620006db620005d0565b029392505050565b6000620003e783836200062f565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415620007215762000721620005d0565b60010192915050565b6000816000190483118215151615620007475762000747620005d0565b500290565b6000826200076a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620007855762000785620005d0565b500190565b600181811c908216806200079f57607f821691505b60208210811415620007c157634e487b7160e01b600052602260045260246000fd5b50919050565b612e4680620007d76000396000f3fe6080604052600436106103fa5760003560e01c8063781e65e311610213578063ad9f20a611610123578063e2eb41ff116100ab578063f60cdcf61161007a578063f60cdcf614610bf1578063f7618ba714610c07578063f9dbe52014610a50578063fdb5a03e14610c1c578063fec259d3146103ff57600080fd5b8063e2eb41ff14610b0c578063e4849b3214610b9e578063f088d54714610bbe578063f2fde38b14610bd157600080fd5b8063c0dff139116100f2578063c0dff13914610a7b578063c58a232714610a1f578063c885bc5814610a9b578063d0d7809014610ab0578063dd62ed3e14610ac657600080fd5b8063ad9f20a614610a1f578063af6efdbc14610a3a578063b3296d3b14610a50578063baa9e53114610a6557600080fd5b80639a92a058116101a6578063a457c2d711610175578063a457c2d7146109a1578063a694fc3a146109c1578063a6f2ae3a146109e1578063a9059cbb146109e9578063a91f880314610a0957600080fd5b80639a92a058146109355780639d6c54f9146109555780639f6582ee14610975578063a035b1fe1461098c57600080fd5b80638da5cb5b116101e25780638da5cb5b146108ce57806392da08b0146108ec5780639482e5841461090a57806395d89b411461092057600080fd5b8063781e65e31461085b57806385f8ba14146108835780638620410b146108995780638d5b87b6146108ae57600080fd5b80633b2449251161030e57806355097bf1116102a1578063612b54b411610270578063612b54b41461078457806362043bd8146107da578063643d70b6146107f057806370a0823114610810578063715018a61461084657600080fd5b806355097bf1146106e75780635a9d21b2146107275780635ffe614614610744578063600d20ce1461076457600080fd5b8063454f7b8f116102dd578063454f7b8f146106795780634b7503341461068f5780634dfd2624146106a45780635216aeec146106d157600080fd5b80633b244925146106195780633ccfbabf146106395780633ccfd60b1461064e578063403e512d1461066357600080fd5b80632c26347d11610391578063328952fe11610360578063328952fe1461055857806332bc298c146105a057806333862708146105b7578063372d6b27146105d757806339509351146105f957600080fd5b80632c26347d146103ff5780632e17de78146104fa5780632fba1d831461051c578063313ce5671461053c57600080fd5b8063095ea7b3116103cd578063095ea7b31461048057806318160ddd146104b0578063212bda4f146104c557806323b872dd146104da57600080fd5b806301c234a8146103ff578063059f8b1614610428578063066fd8991461043e57806306fdde031461045e575b600080fd5b34801561040b57600080fd5b5061041561271081565b6040519081526020015b60405180910390f35b34801561043457600080fd5b50610415601b5481565b34801561044a57600080fd5b50610415610459366004612a2c565b610c31565b34801561046a57600080fd5b50610473610cc1565b60405161041f9190612a49565b34801561048c57600080fd5b506104a061049b366004612a9e565b610d53565b604051901515815260200161041f565b3480156104bc57600080fd5b50600254610415565b3480156104d157600080fd5b50610415600a81565b3480156104e657600080fd5b506104a06104f5366004612aca565b610d69565b34801561050657600080fd5b5061051a610515366004612b0b565b610e18565b005b34801561052857600080fd5b5061051a610537366004612a2c565b611038565b34801561054857600080fd5b506040516012815260200161041f565b34801561056457600080fd5b50610578610573366004612a2c565b611154565b604080519586526020860194909452928401919091526060830152608082015260a00161041f565b3480156105ac57600080fd5b506104156201518081565b3480156105c357600080fd5b5061051a6105d2366004612a2c565b6111a6565b3480156105e357600080fd5b506105ec6112aa565b60405161041f9190612b24565b34801561060557600080fd5b506104a0610614366004612a9e565b61131c565b34801561062557600080fd5b50610415610634366004612a2c565b611358565b34801561064557600080fd5b50610415600381565b34801561065a57600080fd5b5061051a611375565b34801561066f57600080fd5b50610415600f5481565b34801561068557600080fd5b5061041560135481565b34801561069b57600080fd5b50610415611493565b3480156106b057600080fd5b506106c46106bf366004612a2c565b6114b9565b60405161041f9190612b56565b3480156106dd57600080fd5b5061041560125481565b3480156106f357600080fd5b5061070f73a28cb54105f31b9b504ca510b37e4a9e5b3fa81f81565b6040516001600160a01b03909116815260200161041f565b34801561073357600080fd5b50610415685150ae84a8cdf0000081565b34801561075057600080fd5b5061051a61075f366004612b0b565b61150f565b34801561077057600080fd5b5061041561077f366004612b0b565b61159b565b34801561079057600080fd5b506107c561079f366004612a2c565b6001600160a01b03166000908152601a6020526040902060018101546002909101549091565b6040805192835260208301919091520161041f565b3480156107e657600080fd5b50610415601c5481565b3480156107fc57600080fd5b5060195461070f906001600160a01b031681565b34801561081c57600080fd5b5061041561082b366004612a2c565b6001600160a01b031660009081526020819052604090205490565b34801561085257600080fd5b5061051a6115b2565b34801561086757600080fd5b5061070f73da002e82937f0b31b63e1721701e6a6bfe4d81d581565b34801561088f57600080fd5b5061041560085481565b3480156108a557600080fd5b506104156115e8565b3480156108ba57600080fd5b5060105461070f906001600160a01b031681565b3480156108da57600080fd5b506005546001600160a01b031661070f565b3480156108f857600080fd5b50610415690cb49b44ba602d80000081565b34801561091657600080fd5b506104156101f481565b34801561092c57600080fd5b50610473611601565b34801561094157600080fd5b5061051a610950366004612b0b565b611610565b34801561096157600080fd5b50610415610970366004612a2c565b61168f565b34801561098157600080fd5b5061041562278d0081565b34801561099857600080fd5b50610415611705565b3480156109ad57600080fd5b506104a06109bc366004612a9e565b611745565b3480156109cd57600080fd5b506104a06109dc366004612b0b565b6117de565b61051a611989565b3480156109f557600080fd5b506104a0610a04366004612a9e565b6119b5565b348015610a1557600080fd5b5061041560155481565b348015610a2b57600080fd5b50610415662386f26fc1000081565b348015610a4657600080fd5b5061041560065481565b348015610a5c57600080fd5b50610415606481565b348015610a7157600080fd5b5061041560145481565b348015610a8757600080fd5b50610415610a96366004612a2c565b6119c2565b348015610aa757600080fd5b5061051a6119f7565b348015610abc57600080fd5b5061041560075481565b348015610ad257600080fd5b50610415610ae1366004612b7e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b1857600080fd5b50610b68610b27366004612a2c565b60166020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b039091169086565b6040805196875260208701959095529385019290925260608401526001600160a01b0316608083015260a082015260c00161041f565b348015610baa57600080fd5b5061051a610bb9366004612b0b565b611aa9565b61051a610bcc366004612a2c565b611c19565b348015610bdd57600080fd5b5061051a610bec366004612a2c565b611ed2565b348015610bfd57600080fd5b5061041560115481565b348015610c1357600080fd5b50610415611f6a565b348015610c2857600080fd5b5061051a611f83565b601c546001600160a01b0382166000908152601a60205260408120600101549091610cbb916201518091610caf918290610c6c90429061218a565b610cb5601b54610cb5612710610caf610c90610c878e611358565b6127109061217e565b6001600160a01b038e166000908152601a60205260409020549061215f565b90612172565b9061215f565b92915050565b606060038054610cd090612bb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfc90612bb7565b8015610d495780601f10610d1e57610100808354040283529160200191610d49565b820191906000526020600020905b815481529060010190602001808311610d2c57829003601f168201915b5050505050905090565b6000610d60338484612196565b50600192915050565b6000610d768484846122ba565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e005760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610e0d8533858403612196565b506001949350505050565b60008111610e685760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420746f6b656e7320616d6f756e742076616c756500000000006044820152606401610df7565b336000908152601a6020526040902054811115610ed65760405162461bcd60e51b815260206004820152602660248201527f4e6f7420656e6f75676820746f6b656e73206f6e20746865207374616b652062604482015265616c616e636560d01b6064820152608401610df7565b6000610ee133610c31565b90508015610f1a57336000908152601a6020526040902060030154610f06908261217e565b336000908152601a60205260409020600301555b336000908152601a6020526040902054610f34908361218a565b336000908152601a602052604090208181554260019091015515610f6d57336000908152601a6020526040902042600290910155610f81565b336000908152601a60205260408120600201555b60195460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff69190612bf2565b610fff57600080fd5b60405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a25050565b6005546001600160a01b031633146110625760405162461bcd60e51b8152600401610df790612c14565b6019546001600160a01b0316156110c75760405162461bcd60e51b815260206004820152602360248201527f4c5020746f6b656e206164647265737320616c726561647920636f6e666967756044820152621c995960ea1b6064820152608401610df7565b803b6111325760405162461bcd60e51b815260206004820152603460248201527f50726f76696465642061646472657373206973206e6f7420616e204c5020746f6044820152736b656e20636f6e7472616374206164647265737360601b6064820152608401610df7565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152601a602052604081208054600382015460049092015483928392839283929061118b896119c2565b6111948a61168f565b939a9299509097509550909350915050565b6005546001600160a01b031633146111d05760405162461bcd60e51b8152600401610df790612c14565b6001600160a01b0381166112185760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610df7565b6010546001600160a01b038281169116141561126a5760405162461bcd60e51b81526020600482015260116024820152704e6f7468696e6720746f206368616e676560781b6044820152606401610df7565b601080546001600160a01b0319166001600160a01b03838116918217835560009182526016602052604090912042905590546112a7911680612488565b50565b6112b26129da565b604051806101200160405280601154815260200160125481526020016013548152602001601454815260200160155481526020016112ee611705565b81526020016112fb6115e8565b8152602001611308611f6a565b8152602001611315611493565b9052919050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d60918590611353908690612c5f565b612196565b6000610cbb6113668361168f565b61136f846119c2565b9061217e565b336000908152601660205260409020546113cd5760405162461bcd60e51b8152602060048201526019602482015278165bdd48191a591b89dd08189d5e481d1bdad95b9cc81e595d603a1b6044820152606401610df7565b336000908152601660205260409020600101546114225760405162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b6044820152606401610df7565b336000908152601660205260408120600181018054929055600381015490919061144c908261217e565b600383015560135461145e908261217e565b601355604051339082156108fc029083906000818181858888f1935050505015801561148e573d6000803e3d6000fd5b505050565b60006114b46064610caf60085460646114ac9190612c77565b610cb5611705565b905090565b6114c16129f9565b6001600160a01b03821660009081526016602052604090819020815160c0810192839052916006918201919082845b8154815260200190600101908083116114f05750505050509050919050565b6005546001600160a01b031633146115395760405162461bcd60e51b8152600401610df790612c14565b60008111801561154a575060328111155b6115965760405162461bcd60e51b815260206004820152601a60248201527f4d756c7469706c696572206973206f7574206f662072616e67650000000000006044820152606401610df7565b601b55565b600981600681106115ab57600080fd5b0154905081565b6005546001600160a01b031633146115dc5760405162461bcd60e51b8152600401610df790612c14565b6115e6600061259b565b565b60006114b46064610caf60065460646114ac9190612c5f565b606060048054610cd090612bb7565b6005546001600160a01b0316331461163a5760405162461bcd60e51b8152600401610df790612c14565b6000811161168a5760405162461bcd60e51b815260206004820152601760248201527f44697669646572206973206f7574206f662072616e67650000000000000000006044820152606401610df7565b601c55565b6001600160a01b0381166000908152601a60205260408120600201546116b757506000919050565b6001600160a01b0382166000908152601a60205260408120600201546116ef906101f490610cb5906201518090610caf90429061218a565b9050612710811115610cbb575061271092915050565b60006114b461173c6064610caf62278d00610caf61172e6017544261218a90919063ffffffff16565b601854610cb590606461215f565b6018549061217e565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117c75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610df7565b6117d43385858403612196565b5060019392505050565b600080821161182f5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420746f6b656e7320616d6f756e742076616c756500000000006044820152606401610df7565b6019546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118aa9190612bf2565b6118b657506000919050565b60006118c133610c31565b905080156118fa57336000908152601a60205260409020600301546118e6908261217e565b336000908152601a60205260409020600301555b336000908152601a6020526040902054611914908461217e565b336000908152601a602052604090209081554260018201556002015461194b57336000908152601a60205260409020426002909101555b60405183815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9060200160405180910390a250600192915050565b60405133903480156108fc02916000818181858888f193505050501580156112a7573d6000803e3d6000fd5b6000610d603384846122ba565b6001600160a01b0381166000908152601a602052604081205481906116ef90606490610cb590685150ae84a8cdf00000612172565b6000611a1e611a0533610c31565b336000908152601a60205260409020600301549061217e565b905080156112a757336000908152601a60205260408120426001820155600381019190915560040154611a51908261217e565b336000818152601a6020526040902060040191909155611a7190826125ed565b60405181815233907f1d3eee4ca001cff39eec6ec7615aacf2f2bd61791273830728ba00ccbd6e13379060200160405180910390a250565b33600090815260208190526040902054811115611b085760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f75676820746f6b656e73206f6e207468652062616c616e63656044820152606401610df7565b3360009081526016602052604090208054611b4c5742815560118054906000611b3083612c8e565b9091555050601054611b4c9033906001600160a01b0316612488565b62278d00611b656017544261218a90919063ffffffff16565b10611bd7576000611b74611705565b601854909150611b8590600261215f565b601855426017557f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed181611bb6611705565b604080519283526020830191909152429082015260600160405180910390a1505b611c06611bfb611be96012600a612d8d565b610caf611bf4611493565b869061215f565b60018301549061217e565b6001820155611c1533836126cc565b5050565b662386f26fc10000341015611c645760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642062757920707269636560781b6044820152606401610df7565b3360009081526016602052604090208054611d335742815560118054906000611c8c83612c8e565b90915550506001600160a01b03821615801590611cc357506001600160a01b03821660009081526016602052604090206002015415155b15611d1c57611cd23383612488565b604080513481524260208201526001600160a01b0384169133917fb2904c5f39db544e60271ae289267505ad9fa45b3dfad7e14bd54686dc6ddf03910160405180910390a3611d33565b601054611d339033906001600160a01b0316612488565b6002810154611d42903461217e565b600282015560175462278d0090611d5a90429061218a565b10611dcc576000611d69611705565b601854909150611d7a90600261215f565b601855426017557f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed181611dab611705565b604080519283526020830191909152429082015260600160405180910390a1505b6000611def611dd96115e8565b610caf611de86012600a612d8d565b349061215f565b9050611dfb33826125ed565b6004820154611e149034906001600160a01b031661281a565b601254611e21903461217e565b601255601454611e31908261217e565b6014556005546001600160a01b03166108fc611e536064610caf34600a61215f565b6040518115909202916000818181858888f19350505050158015611e7b573d6000803e3d6000fd5b5073a28cb54105f31b9b504ca510b37e4a9e5b3fa81f6108fc611ea46064610caf34600361215f565b6040518115909202916000818181858888f19350505050158015611ecc573d6000803e3d6000fd5b50505050565b6005546001600160a01b03163314611efc5760405162461bcd60e51b8152600401610df790612c14565b6001600160a01b038116611f615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610df7565b6112a78161259b565b60006114b46064610caf60075460646114ac9190612c5f565b33600090815260166020526040902054611fdb5760405162461bcd60e51b8152602060048201526019602482015278165bdd48191a591b89dd08189d5e481d1bdad95b9cc81e595d603a1b6044820152606401610df7565b33600090815260166020526040902060018101546120315760405162461bcd60e51b8152602060048201526013602482015272139bdd1a1a5b99c81d1bc81c995a5b9d995cdd606a1b6044820152606401610df7565b62278d0061204a6017544261218a90919063ffffffff16565b106120bc576000612059611705565b60185490915061206a90600261215f565b601855426017557f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed18161209b611705565b604080519283526020830191909152429082015260600160405180910390a1505b600181015460006120e46120ce611f6a565b610caf6120dd6012600a612d8d565b859061215f565b6000600185015590506120f733826125ed565b60048301546121109083906001600160a01b031661281a565b60125461211d908361217e565b601255600283015461212f908361217e565b6002840155601454612141908261217e565b6014556005546001600160a01b03166108fc611ea46064610caf86600a5b600061216b8284612d99565b9392505050565b600061216b8284612db8565b600061216b8284612c5f565b600061216b8284612c77565b6001600160a01b0383166121f85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610df7565b6001600160a01b0382166122595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610df7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661231e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610df7565b6001600160a01b0382166123805760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610df7565b6001600160a01b038316600090815260208190526040902054818110156123f85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610df7565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061242f908490612c5f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161247b91815260200190565b60405180910390a3611ecc565b6001600160a01b0382811660009081526016602052604081206004810180546001600160a01b0319169385169390931790925582905b60068160ff161015612594576010546001600160a01b03838116911614156124e557612594565b61252e600160166000856001600160a01b03166001600160a01b031681526020019081526020016000206006018360ff166006811061252657612526612dda565b01549061217e565b6001600160a01b038316600090815260166020526040902060069081019060ff841690811061255f5761255f612dda565b01556001600160a01b03918216600090815260166020526040902060040154909116908061258c81612df0565b9150506124be565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166126435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610df7565b80600260008282546126559190612c5f565b90915550506001600160a01b03821660009081526020819052604081208054839290612682908490612c5f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661272c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610df7565b6001600160a01b038216600090815260208190526040902054818110156127a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610df7565b6001600160a01b03831660009081526020819052604081208383039055600280548492906127cf908490612c77565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60006128366064610caf600f548661215f90919063ffffffff16565b9050816000805b60068160ff161015612991576128706064610caf60098460ff166006811061286757612867612dda565b0154899061215f565b915061287c848361218a565b6001600160a01b0384166000908152601660205260409020600501549094506128a5908361217e565b6001600160a01b0384166000908152601660205260409020600501556015546128ce908361217e565b601555811561295e576001600160a01b03831615612922576040516001600160a01b0384169083156108fc029084906000818181858888f1935050505015801561291c573d6000803e3d6000fd5b5061295e565b6010546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561295c573d6000803e3d6000fd5b505b6001600160a01b03928316600090815260166020526040902060040154909216918061298981612df0565b91505061283d565b508215612594576010546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156129d2573d6000803e3d6000fd5b505050505050565b6040518061012001604052806009906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b6001600160a01b03811681146112a757600080fd5b600060208284031215612a3e57600080fd5b813561216b81612a17565b600060208083528351808285015260005b81811015612a7657858101830151858201604001528201612a5a565b81811115612a88576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612ab157600080fd5b8235612abc81612a17565b946020939093013593505050565b600080600060608486031215612adf57600080fd5b8335612aea81612a17565b92506020840135612afa81612a17565b929592945050506040919091013590565b600060208284031215612b1d57600080fd5b5035919050565b6101208101818360005b6009811015612b4d578151835260209283019290910190600101612b2e565b50505092915050565b60c08101818360005b6006811015612b4d578151835260209283019290910190600101612b5f565b60008060408385031215612b9157600080fd5b8235612b9c81612a17565b91506020830135612bac81612a17565b809150509250929050565b600181811c90821680612bcb57607f821691505b60208210811415612bec57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612c0457600080fd5b8151801515811461216b57600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612c7257612c72612c49565b500190565b600082821015612c8957612c89612c49565b500390565b6000600019821415612ca257612ca2612c49565b5060010190565b600181815b80851115612ce4578160001904821115612cca57612cca612c49565b80851615612cd757918102915b93841c9390800290612cae565b509250929050565b600082612cfb57506001610cbb565b81612d0857506000610cbb565b8160018114612d1e5760028114612d2857612d44565b6001915050610cbb565b60ff841115612d3957612d39612c49565b50506001821b610cbb565b5060208310610133831016604e8410600b8410161715612d67575081810a610cbb565b612d718383612ca9565b8060001904821115612d8557612d85612c49565b029392505050565b600061216b8383612cec565b6000816000190483118215151615612db357612db3612c49565b500290565b600082612dd557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612e0757612e07612c49565b6001019291505056fea26469706673582212201040824d23dcc0756347381c9984dc4062e7478fca074190a2104a2d44dfed4864736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106103fa5760003560e01c8063781e65e311610213578063ad9f20a611610123578063e2eb41ff116100ab578063f60cdcf61161007a578063f60cdcf614610bf1578063f7618ba714610c07578063f9dbe52014610a50578063fdb5a03e14610c1c578063fec259d3146103ff57600080fd5b8063e2eb41ff14610b0c578063e4849b3214610b9e578063f088d54714610bbe578063f2fde38b14610bd157600080fd5b8063c0dff139116100f2578063c0dff13914610a7b578063c58a232714610a1f578063c885bc5814610a9b578063d0d7809014610ab0578063dd62ed3e14610ac657600080fd5b8063ad9f20a614610a1f578063af6efdbc14610a3a578063b3296d3b14610a50578063baa9e53114610a6557600080fd5b80639a92a058116101a6578063a457c2d711610175578063a457c2d7146109a1578063a694fc3a146109c1578063a6f2ae3a146109e1578063a9059cbb146109e9578063a91f880314610a0957600080fd5b80639a92a058146109355780639d6c54f9146109555780639f6582ee14610975578063a035b1fe1461098c57600080fd5b80638da5cb5b116101e25780638da5cb5b146108ce57806392da08b0146108ec5780639482e5841461090a57806395d89b411461092057600080fd5b8063781e65e31461085b57806385f8ba14146108835780638620410b146108995780638d5b87b6146108ae57600080fd5b80633b2449251161030e57806355097bf1116102a1578063612b54b411610270578063612b54b41461078457806362043bd8146107da578063643d70b6146107f057806370a0823114610810578063715018a61461084657600080fd5b806355097bf1146106e75780635a9d21b2146107275780635ffe614614610744578063600d20ce1461076457600080fd5b8063454f7b8f116102dd578063454f7b8f146106795780634b7503341461068f5780634dfd2624146106a45780635216aeec146106d157600080fd5b80633b244925146106195780633ccfbabf146106395780633ccfd60b1461064e578063403e512d1461066357600080fd5b80632c26347d11610391578063328952fe11610360578063328952fe1461055857806332bc298c146105a057806333862708146105b7578063372d6b27146105d757806339509351146105f957600080fd5b80632c26347d146103ff5780632e17de78146104fa5780632fba1d831461051c578063313ce5671461053c57600080fd5b8063095ea7b3116103cd578063095ea7b31461048057806318160ddd146104b0578063212bda4f146104c557806323b872dd146104da57600080fd5b806301c234a8146103ff578063059f8b1614610428578063066fd8991461043e57806306fdde031461045e575b600080fd5b34801561040b57600080fd5b5061041561271081565b6040519081526020015b60405180910390f35b34801561043457600080fd5b50610415601b5481565b34801561044a57600080fd5b50610415610459366004612a2c565b610c31565b34801561046a57600080fd5b50610473610cc1565b60405161041f9190612a49565b34801561048c57600080fd5b506104a061049b366004612a9e565b610d53565b604051901515815260200161041f565b3480156104bc57600080fd5b50600254610415565b3480156104d157600080fd5b50610415600a81565b3480156104e657600080fd5b506104a06104f5366004612aca565b610d69565b34801561050657600080fd5b5061051a610515366004612b0b565b610e18565b005b34801561052857600080fd5b5061051a610537366004612a2c565b611038565b34801561054857600080fd5b506040516012815260200161041f565b34801561056457600080fd5b50610578610573366004612a2c565b611154565b604080519586526020860194909452928401919091526060830152608082015260a00161041f565b3480156105ac57600080fd5b506104156201518081565b3480156105c357600080fd5b5061051a6105d2366004612a2c565b6111a6565b3480156105e357600080fd5b506105ec6112aa565b60405161041f9190612b24565b34801561060557600080fd5b506104a0610614366004612a9e565b61131c565b34801561062557600080fd5b50610415610634366004612a2c565b611358565b34801561064557600080fd5b50610415600381565b34801561065a57600080fd5b5061051a611375565b34801561066f57600080fd5b50610415600f5481565b34801561068557600080fd5b5061041560135481565b34801561069b57600080fd5b50610415611493565b3480156106b057600080fd5b506106c46106bf366004612a2c565b6114b9565b60405161041f9190612b56565b3480156106dd57600080fd5b5061041560125481565b3480156106f357600080fd5b5061070f73a28cb54105f31b9b504ca510b37e4a9e5b3fa81f81565b6040516001600160a01b03909116815260200161041f565b34801561073357600080fd5b50610415685150ae84a8cdf0000081565b34801561075057600080fd5b5061051a61075f366004612b0b565b61150f565b34801561077057600080fd5b5061041561077f366004612b0b565b61159b565b34801561079057600080fd5b506107c561079f366004612a2c565b6001600160a01b03166000908152601a6020526040902060018101546002909101549091565b6040805192835260208301919091520161041f565b3480156107e657600080fd5b50610415601c5481565b3480156107fc57600080fd5b5060195461070f906001600160a01b031681565b34801561081c57600080fd5b5061041561082b366004612a2c565b6001600160a01b031660009081526020819052604090205490565b34801561085257600080fd5b5061051a6115b2565b34801561086757600080fd5b5061070f73da002e82937f0b31b63e1721701e6a6bfe4d81d581565b34801561088f57600080fd5b5061041560085481565b3480156108a557600080fd5b506104156115e8565b3480156108ba57600080fd5b5060105461070f906001600160a01b031681565b3480156108da57600080fd5b506005546001600160a01b031661070f565b3480156108f857600080fd5b50610415690cb49b44ba602d80000081565b34801561091657600080fd5b506104156101f481565b34801561092c57600080fd5b50610473611601565b34801561094157600080fd5b5061051a610950366004612b0b565b611610565b34801561096157600080fd5b50610415610970366004612a2c565b61168f565b34801561098157600080fd5b5061041562278d0081565b34801561099857600080fd5b50610415611705565b3480156109ad57600080fd5b506104a06109bc366004612a9e565b611745565b3480156109cd57600080fd5b506104a06109dc366004612b0b565b6117de565b61051a611989565b3480156109f557600080fd5b506104a0610a04366004612a9e565b6119b5565b348015610a1557600080fd5b5061041560155481565b348015610a2b57600080fd5b50610415662386f26fc1000081565b348015610a4657600080fd5b5061041560065481565b348015610a5c57600080fd5b50610415606481565b348015610a7157600080fd5b5061041560145481565b348015610a8757600080fd5b50610415610a96366004612a2c565b6119c2565b348015610aa757600080fd5b5061051a6119f7565b348015610abc57600080fd5b5061041560075481565b348015610ad257600080fd5b50610415610ae1366004612b7e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b1857600080fd5b50610b68610b27366004612a2c565b60166020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b039091169086565b6040805196875260208701959095529385019290925260608401526001600160a01b0316608083015260a082015260c00161041f565b348015610baa57600080fd5b5061051a610bb9366004612b0b565b611aa9565b61051a610bcc366004612a2c565b611c19565b348015610bdd57600080fd5b5061051a610bec366004612a2c565b611ed2565b348015610bfd57600080fd5b5061041560115481565b348015610c1357600080fd5b50610415611f6a565b348015610c2857600080fd5b5061051a611f83565b601c546001600160a01b0382166000908152601a60205260408120600101549091610cbb916201518091610caf918290610c6c90429061218a565b610cb5601b54610cb5612710610caf610c90610c878e611358565b6127109061217e565b6001600160a01b038e166000908152601a60205260409020549061215f565b90612172565b9061215f565b92915050565b606060038054610cd090612bb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfc90612bb7565b8015610d495780601f10610d1e57610100808354040283529160200191610d49565b820191906000526020600020905b815481529060010190602001808311610d2c57829003601f168201915b5050505050905090565b6000610d60338484612196565b50600192915050565b6000610d768484846122ba565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e005760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610e0d8533858403612196565b506001949350505050565b60008111610e685760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420746f6b656e7320616d6f756e742076616c756500000000006044820152606401610df7565b336000908152601a6020526040902054811115610ed65760405162461bcd60e51b815260206004820152602660248201527f4e6f7420656e6f75676820746f6b656e73206f6e20746865207374616b652062604482015265616c616e636560d01b6064820152608401610df7565b6000610ee133610c31565b90508015610f1a57336000908152601a6020526040902060030154610f06908261217e565b336000908152601a60205260409020600301555b336000908152601a6020526040902054610f34908361218a565b336000908152601a602052604090208181554260019091015515610f6d57336000908152601a6020526040902042600290910155610f81565b336000908152601a60205260408120600201555b60195460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff69190612bf2565b610fff57600080fd5b60405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a25050565b6005546001600160a01b031633146110625760405162461bcd60e51b8152600401610df790612c14565b6019546001600160a01b0316156110c75760405162461bcd60e51b815260206004820152602360248201527f4c5020746f6b656e206164647265737320616c726561647920636f6e666967756044820152621c995960ea1b6064820152608401610df7565b803b6111325760405162461bcd60e51b815260206004820152603460248201527f50726f76696465642061646472657373206973206e6f7420616e204c5020746f6044820152736b656e20636f6e7472616374206164647265737360601b6064820152608401610df7565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152601a602052604081208054600382015460049092015483928392839283929061118b896119c2565b6111948a61168f565b939a9299509097509550909350915050565b6005546001600160a01b031633146111d05760405162461bcd60e51b8152600401610df790612c14565b6001600160a01b0381166112185760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610df7565b6010546001600160a01b038281169116141561126a5760405162461bcd60e51b81526020600482015260116024820152704e6f7468696e6720746f206368616e676560781b6044820152606401610df7565b601080546001600160a01b0319166001600160a01b03838116918217835560009182526016602052604090912042905590546112a7911680612488565b50565b6112b26129da565b604051806101200160405280601154815260200160125481526020016013548152602001601454815260200160155481526020016112ee611705565b81526020016112fb6115e8565b8152602001611308611f6a565b8152602001611315611493565b9052919050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d60918590611353908690612c5f565b612196565b6000610cbb6113668361168f565b61136f846119c2565b9061217e565b336000908152601660205260409020546113cd5760405162461bcd60e51b8152602060048201526019602482015278165bdd48191a591b89dd08189d5e481d1bdad95b9cc81e595d603a1b6044820152606401610df7565b336000908152601660205260409020600101546114225760405162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b6044820152606401610df7565b336000908152601660205260408120600181018054929055600381015490919061144c908261217e565b600383015560135461145e908261217e565b601355604051339082156108fc029083906000818181858888f1935050505015801561148e573d6000803e3d6000fd5b505050565b60006114b46064610caf60085460646114ac9190612c77565b610cb5611705565b905090565b6114c16129f9565b6001600160a01b03821660009081526016602052604090819020815160c0810192839052916006918201919082845b8154815260200190600101908083116114f05750505050509050919050565b6005546001600160a01b031633146115395760405162461bcd60e51b8152600401610df790612c14565b60008111801561154a575060328111155b6115965760405162461bcd60e51b815260206004820152601a60248201527f4d756c7469706c696572206973206f7574206f662072616e67650000000000006044820152606401610df7565b601b55565b600981600681106115ab57600080fd5b0154905081565b6005546001600160a01b031633146115dc5760405162461bcd60e51b8152600401610df790612c14565b6115e6600061259b565b565b60006114b46064610caf60065460646114ac9190612c5f565b606060048054610cd090612bb7565b6005546001600160a01b0316331461163a5760405162461bcd60e51b8152600401610df790612c14565b6000811161168a5760405162461bcd60e51b815260206004820152601760248201527f44697669646572206973206f7574206f662072616e67650000000000000000006044820152606401610df7565b601c55565b6001600160a01b0381166000908152601a60205260408120600201546116b757506000919050565b6001600160a01b0382166000908152601a60205260408120600201546116ef906101f490610cb5906201518090610caf90429061218a565b9050612710811115610cbb575061271092915050565b60006114b461173c6064610caf62278d00610caf61172e6017544261218a90919063ffffffff16565b601854610cb590606461215f565b6018549061217e565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117c75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610df7565b6117d43385858403612196565b5060019392505050565b600080821161182f5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420746f6b656e7320616d6f756e742076616c756500000000006044820152606401610df7565b6019546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118aa9190612bf2565b6118b657506000919050565b60006118c133610c31565b905080156118fa57336000908152601a60205260409020600301546118e6908261217e565b336000908152601a60205260409020600301555b336000908152601a6020526040902054611914908461217e565b336000908152601a602052604090209081554260018201556002015461194b57336000908152601a60205260409020426002909101555b60405183815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9060200160405180910390a250600192915050565b60405133903480156108fc02916000818181858888f193505050501580156112a7573d6000803e3d6000fd5b6000610d603384846122ba565b6001600160a01b0381166000908152601a602052604081205481906116ef90606490610cb590685150ae84a8cdf00000612172565b6000611a1e611a0533610c31565b336000908152601a60205260409020600301549061217e565b905080156112a757336000908152601a60205260408120426001820155600381019190915560040154611a51908261217e565b336000818152601a6020526040902060040191909155611a7190826125ed565b60405181815233907f1d3eee4ca001cff39eec6ec7615aacf2f2bd61791273830728ba00ccbd6e13379060200160405180910390a250565b33600090815260208190526040902054811115611b085760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f75676820746f6b656e73206f6e207468652062616c616e63656044820152606401610df7565b3360009081526016602052604090208054611b4c5742815560118054906000611b3083612c8e565b9091555050601054611b4c9033906001600160a01b0316612488565b62278d00611b656017544261218a90919063ffffffff16565b10611bd7576000611b74611705565b601854909150611b8590600261215f565b601855426017557f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed181611bb6611705565b604080519283526020830191909152429082015260600160405180910390a1505b611c06611bfb611be96012600a612d8d565b610caf611bf4611493565b869061215f565b60018301549061217e565b6001820155611c1533836126cc565b5050565b662386f26fc10000341015611c645760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642062757920707269636560781b6044820152606401610df7565b3360009081526016602052604090208054611d335742815560118054906000611c8c83612c8e565b90915550506001600160a01b03821615801590611cc357506001600160a01b03821660009081526016602052604090206002015415155b15611d1c57611cd23383612488565b604080513481524260208201526001600160a01b0384169133917fb2904c5f39db544e60271ae289267505ad9fa45b3dfad7e14bd54686dc6ddf03910160405180910390a3611d33565b601054611d339033906001600160a01b0316612488565b6002810154611d42903461217e565b600282015560175462278d0090611d5a90429061218a565b10611dcc576000611d69611705565b601854909150611d7a90600261215f565b601855426017557f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed181611dab611705565b604080519283526020830191909152429082015260600160405180910390a1505b6000611def611dd96115e8565b610caf611de86012600a612d8d565b349061215f565b9050611dfb33826125ed565b6004820154611e149034906001600160a01b031661281a565b601254611e21903461217e565b601255601454611e31908261217e565b6014556005546001600160a01b03166108fc611e536064610caf34600a61215f565b6040518115909202916000818181858888f19350505050158015611e7b573d6000803e3d6000fd5b5073a28cb54105f31b9b504ca510b37e4a9e5b3fa81f6108fc611ea46064610caf34600361215f565b6040518115909202916000818181858888f19350505050158015611ecc573d6000803e3d6000fd5b50505050565b6005546001600160a01b03163314611efc5760405162461bcd60e51b8152600401610df790612c14565b6001600160a01b038116611f615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610df7565b6112a78161259b565b60006114b46064610caf60075460646114ac9190612c5f565b33600090815260166020526040902054611fdb5760405162461bcd60e51b8152602060048201526019602482015278165bdd48191a591b89dd08189d5e481d1bdad95b9cc81e595d603a1b6044820152606401610df7565b33600090815260166020526040902060018101546120315760405162461bcd60e51b8152602060048201526013602482015272139bdd1a1a5b99c81d1bc81c995a5b9d995cdd606a1b6044820152606401610df7565b62278d0061204a6017544261218a90919063ffffffff16565b106120bc576000612059611705565b60185490915061206a90600261215f565b601855426017557f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed18161209b611705565b604080519283526020830191909152429082015260600160405180910390a1505b600181015460006120e46120ce611f6a565b610caf6120dd6012600a612d8d565b859061215f565b6000600185015590506120f733826125ed565b60048301546121109083906001600160a01b031661281a565b60125461211d908361217e565b601255600283015461212f908361217e565b6002840155601454612141908261217e565b6014556005546001600160a01b03166108fc611ea46064610caf86600a5b600061216b8284612d99565b9392505050565b600061216b8284612db8565b600061216b8284612c5f565b600061216b8284612c77565b6001600160a01b0383166121f85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610df7565b6001600160a01b0382166122595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610df7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661231e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610df7565b6001600160a01b0382166123805760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610df7565b6001600160a01b038316600090815260208190526040902054818110156123f85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610df7565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061242f908490612c5f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161247b91815260200190565b60405180910390a3611ecc565b6001600160a01b0382811660009081526016602052604081206004810180546001600160a01b0319169385169390931790925582905b60068160ff161015612594576010546001600160a01b03838116911614156124e557612594565b61252e600160166000856001600160a01b03166001600160a01b031681526020019081526020016000206006018360ff166006811061252657612526612dda565b01549061217e565b6001600160a01b038316600090815260166020526040902060069081019060ff841690811061255f5761255f612dda565b01556001600160a01b03918216600090815260166020526040902060040154909116908061258c81612df0565b9150506124be565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166126435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610df7565b80600260008282546126559190612c5f565b90915550506001600160a01b03821660009081526020819052604081208054839290612682908490612c5f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661272c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610df7565b6001600160a01b038216600090815260208190526040902054818110156127a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610df7565b6001600160a01b03831660009081526020819052604081208383039055600280548492906127cf908490612c77565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60006128366064610caf600f548661215f90919063ffffffff16565b9050816000805b60068160ff161015612991576128706064610caf60098460ff166006811061286757612867612dda565b0154899061215f565b915061287c848361218a565b6001600160a01b0384166000908152601660205260409020600501549094506128a5908361217e565b6001600160a01b0384166000908152601660205260409020600501556015546128ce908361217e565b601555811561295e576001600160a01b03831615612922576040516001600160a01b0384169083156108fc029084906000818181858888f1935050505015801561291c573d6000803e3d6000fd5b5061295e565b6010546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561295c573d6000803e3d6000fd5b505b6001600160a01b03928316600090815260166020526040902060040154909216918061298981612df0565b91505061283d565b508215612594576010546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156129d2573d6000803e3d6000fd5b505050505050565b6040518061012001604052806009906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b6001600160a01b03811681146112a757600080fd5b600060208284031215612a3e57600080fd5b813561216b81612a17565b600060208083528351808285015260005b81811015612a7657858101830151858201604001528201612a5a565b81811115612a88576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612ab157600080fd5b8235612abc81612a17565b946020939093013593505050565b600080600060608486031215612adf57600080fd5b8335612aea81612a17565b92506020840135612afa81612a17565b929592945050506040919091013590565b600060208284031215612b1d57600080fd5b5035919050565b6101208101818360005b6009811015612b4d578151835260209283019290910190600101612b2e565b50505092915050565b60c08101818360005b6006811015612b4d578151835260209283019290910190600101612b5f565b60008060408385031215612b9157600080fd5b8235612b9c81612a17565b91506020830135612bac81612a17565b809150509250929050565b600181811c90821680612bcb57607f821691505b60208210811415612bec57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612c0457600080fd5b8151801515811461216b57600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612c7257612c72612c49565b500190565b600082821015612c8957612c89612c49565b500390565b6000600019821415612ca257612ca2612c49565b5060010190565b600181815b80851115612ce4578160001904821115612cca57612cca612c49565b80851615612cd757918102915b93841c9390800290612cae565b509250929050565b600082612cfb57506001610cbb565b81612d0857506000610cbb565b8160018114612d1e5760028114612d2857612d44565b6001915050610cbb565b60ff841115612d3957612d39612c49565b50506001821b610cbb565b5060208310610133831016604e8410600b8410161715612d67575081810a610cbb565b612d718383612ca9565b8060001904821115612d8557612d85612c49565b029392505050565b600061216b8383612cec565b6000816000190483118215151615612db357612db3612c49565b500290565b600082612dd557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612e0757612e07612c49565b6001019291505056fea26469706673582212201040824d23dcc0756347381c9984dc4062e7478fca074190a2104a2d44dfed4864736f6c634300080a0033
Deployed Bytecode Sourcemap
9971:14464:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11558:48;;;;;;;;;;;;11601:5;11558:48;;;;;160:25:1;;;148:2;133:18;11558:48:0;;;;;;;;12195:29;;;;;;;;;;;;;;;;21623:351;;;;;;;;;;-1:-1:-1;21623:351:0;;;;;:::i;:::-;;:::i;1744:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2700:169::-;;;;;;;;;;-1:-1:-1;2700:169:0;;;;;:::i;:::-;;:::i;:::-;;;1671:14:1;;1664:22;1646:41;;1634:2;1619:18;2700:169:0;1506:187:1;2083:108:0;;;;;;;;;;-1:-1:-1;2171:12:0;;2083:108;;10633:44;;;;;;;;;;;;10675:2;10633:44;;2883:492;;;;;;;;;;-1:-1:-1;2883:492:0;;;;;:::i;:::-;;:::i;22452:802::-;;;;;;;;;;-1:-1:-1;22452:802:0;;;;;:::i;:::-;;:::i;:::-;;19555:362;;;;;;;;;;-1:-1:-1;19555:362:0;;;;;:::i;:::-;;:::i;1976:93::-;;;;;;;;;;-1:-1:-1;1976:93:0;;2059:2;2486:36:1;;2474:2;2459:18;1976:93:0;2344:184:1;23260:365:0;;;;;;;;;;-1:-1:-1;23260:365:0;;;;;:::i;:::-;;:::i;:::-;;;;2792:25:1;;;2848:2;2833:18;;2826:34;;;;2876:18;;;2869:34;;;;2934:2;2919:18;;2912:34;2977:3;2962:19;;2955:35;2779:3;2764:19;23260:365:0;2533:463:1;11511:42:0;;;;;;;;;;;;11547:6;11511:42;;18752:335;;;;;;;;;;-1:-1:-1;18752:335:0;;;;;:::i;:::-;;:::i;19099:292::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3389:215::-;;;;;;;;;;-1:-1:-1;3389:215:0;;;;;:::i;:::-;;:::i;20694:185::-;;;;;;;;;;-1:-1:-1;20694:185:0;;;;;:::i;:::-;;:::i;10682:45::-;;;;;;;;;;;;10726:1;10682:45;;16701:434;;;;;;;;;;;;;:::i;10589:37::-;;;;;;;;;;;;;;;;11058:26;;;;;;;;;;;;;;;;17740:143;;;;;;;;;;;;;:::i;19397:146::-;;;;;;;;;;-1:-1:-1;19397:146:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11025:28::-;;;;;;;;;;;;;;;;10883:103;;;;;;;;;;;;10943:42;10883:103;;;;;-1:-1:-1;;;;;4441:32:1;;;4423:51;;4411:2;4396:18;10883:103:0;4261:219:1;12006:61:0;;;;;;;;;;;;12057:10;12006:61;;23846:183;;;;;;;;;;-1:-1:-1;23846:183:0;;;;;:::i;:::-;;:::i;10527:56::-;;;;;;;;;;-1:-1:-1;10527:56:0;;;;;:::i;:::-;;:::i;23631:209::-;;;;;;;;;;-1:-1:-1;23631:209:0;;;;;:::i;:::-;-1:-1:-1;;;;;23752:20:0;23711:7;23752:20;;;:6;:20;;;;;:31;;;;23792:35;;;;;23752:31;;23631:209;;;;;4659:25:1;;;4715:2;4700:18;;4693:34;;;;4632:18;23631:209:0;4485:248:1;12229:27:0;;;;;;;;;;;;;;;;11613:54;;;;;;;;;;-1:-1:-1;11613:54:0;;;;-1:-1:-1;;;;;11613:54:0;;;2205:127;;;;;;;;;;-1:-1:-1;2205:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2306:18:0;2279:7;2306:18;;;;;;;;;;;;2205:127;6952:94;;;;;;;;;;;;;:::i;10776:102::-;;;;;;;;;;;;10835:42;10776:102;;10472:48;;;;;;;;;;;;;;;;17440:139;;;;;;;;;;;;;:::i;10732:37::-;;;;;;;;;;-1:-1:-1;10732:37:0;;;;-1:-1:-1;;;;;10732:37:0;;;6717:87;;;;;;;;;;-1:-1:-1;6790:6:0;;-1:-1:-1;;;;;6790:6:0;6717:87;;10108:58;;;;;;;;;;;;10155:11;10108:58;;11878:54;;;;;;;;;;;;11929:3;11878:54;;1858:104;;;;;;;;;;;;;:::i;24035:145::-;;;;;;;;;;-1:-1:-1;24035:145:0;;;;;:::i;:::-;;:::i;20258:430::-;;;;;;;;;;-1:-1:-1;20258:430:0;;;;;:::i;:::-;;:::i;10297:63::-;;;;;;;;;;;;10353:7;10297:63;;17145:289;;;;;;;;;;;;;:::i;3618:413::-;;;;;;;;;;-1:-1:-1;3618:413:0;;;;;:::i;:::-;;:::i;20885:732::-;;;;;;;;;;-1:-1:-1;20885:732:0;;;;;:::i;:::-;;:::i;24346:84::-;;;:::i;2346:175::-;;;;;;;;;;-1:-1:-1;2346:175:0;;;;;:::i;:::-;;:::i;11128:34::-;;;;;;;;;;;;;;;;10171:46;;;;;;;;;;;;10207:10;10171:46;;10367:45;;;;;;;;;;;;;;;;10224:68;;;;;;;;;;;;10289:3;10224:68;;11089:32;;;;;;;;;;;;;;;;19923:329;;;;;;;;;;-1:-1:-1;19923:329:0;;;;;:::i;:::-;;:::i;21980:466::-;;;;;;;;;;;;;:::i;10417:50::-;;;;;;;;;;;;;;;;2535:151;;;;;;;;;;-1:-1:-1;2535:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2651:18:0;;;2624:7;2651:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2535:151;11366:41;;;;;;;;;;-1:-1:-1;11366:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11366:41:0;;;;;;;;;;5626:25:1;;;5682:2;5667:18;;5660:34;;;;5710:18;;;5703:34;;;;5768:2;5753:18;;5746:34;-1:-1:-1;;;;;5817:32:1;5811:3;5796:19;;5789:61;5837:3;5866:19;;5859:35;5613:3;5598:19;11366:41:0;5339:561:1;14912:768:0;;;;;;;;;;-1:-1:-1;14912:768:0;;;;;:::i;:::-;;:::i;13564:1338::-;;;;;;:::i;:::-;;:::i;7060:192::-;;;;;;;;;;-1:-1:-1;7060:192:0;;;;;:::i;:::-;;:::i;10993:27::-;;;;;;;;;;;;;;;;17585:149;;;;;;;;;;;;;:::i;15690:1001::-;;;;;;;;;;;;;:::i;21623:351::-;21937:7;;-1:-1:-1;;;;;21892:19:0;;21690:7;21892:19;;;:6;:19;;;;;:30;;;21690:7;;21713:255;;11547:6;;21713:232;;;;21872:51;;:15;;:19;:51::i;:::-;21713:146;21848:10;;21714:120;11601:5;21714:98;21753:58;21774:36;21798:11;21774:23;:36::i;:::-;11601:5;;21753:20;:58::i;:::-;-1:-1:-1;;;;;21714:19:0;;;;;;:6;:19;;;;;:26;;:38;:98::i;:::-;:102;;:120::i;:::-;21713:134;;:146::i;:255::-;21706:262;21623:351;-1:-1:-1;;21623:351:0:o;1744:100::-;1798:13;1831:5;1824:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1744:100;:::o;2700:169::-;2783:4;2800:39;1192:10;2823:7;2832:6;2800:8;:39::i;:::-;-1:-1:-1;2857:4:0;2700:169;;;;:::o;2883:492::-;3023:4;3040:36;3050:6;3058:9;3069:6;3040:9;:36::i;:::-;-1:-1:-1;;;;;3116:19:0;;3089:24;3116:19;;;:11;:19;;;;;;;;1192:10;3116:33;;;;;;;;3168:26;;;;3160:79;;;;-1:-1:-1;;;3160:79:0;;6492:2:1;3160:79:0;;;6474:21:1;6531:2;6511:18;;;6504:30;6570:34;6550:18;;;6543:62;-1:-1:-1;;;6621:18:1;;;6614:38;6669:19;;3160:79:0;;;;;;;;;3275:57;3284:6;1192:10;3325:6;3306:16;:25;3275:8;:57::i;:::-;-1:-1:-1;3363:4:0;;2883:492;-1:-1:-1;;;;2883:492:0:o;22452:802::-;22520:1;22510:7;:11;22502:51;;;;-1:-1:-1;;;22502:51:0;;6901:2:1;22502:51:0;;;6883:21:1;6940:2;6920:18;;;6913:30;6979:29;6959:18;;;6952:57;7026:18;;22502:51:0;6699:351:1;22502:51:0;22586:10;22579:18;;;;:6;:18;;;;;:25;22568:36;;;22560:87;;;;-1:-1:-1;;;22560:87:0;;7257:2:1;22560:87:0;;;7239:21:1;7296:2;7276:18;;;7269:30;7335:34;7315:18;;;7308:62;-1:-1:-1;;;7386:18:1;;;7379:36;7432:19;;22560:87:0;7055:402:1;22560:87:0;22656:14;22673:27;22689:10;22673:15;:27::i;:::-;22656:44;-1:-1:-1;22711:10:0;;22707:120;;22778:10;22771:18;;;;:6;:18;;;;;:36;;;:48;;22812:6;22771:40;:48::i;:::-;22739:10;22732:18;;;;:6;:18;;;;;:36;;:87;22707:120;22870:10;22863:18;;;;:6;:18;;;;;:25;:38;;22893:7;22863:29;:38::i;:::-;22842:10;22835:18;;;;:6;:18;;;;;:66;;;22940:15;22908:29;;;;:47;22966:29;22962:164;;23013:10;23006:18;;;;:6;:18;;;;;23042:15;23006:33;;;;:51;22962:164;;;23087:10;23116:1;23080:18;;;:6;:18;;;;;:33;;:37;22962:164;23149:24;;23142:62;;-1:-1:-1;;;23142:62:0;;23184:10;23142:62;;;7636:51:1;7703:18;;;7696:34;;;-1:-1:-1;;;;;23149:24:0;;;;23142:41;;7609:18:1;;23142:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23134:71;;;;;;23219:29;;160:25:1;;;23228:10:0;;23219:29;;148:2:1;133:18;23219:29:0;;;;;;;22495:759;22452:802;:::o;19555:362::-;6790:6;;-1:-1:-1;;;;;6790:6:0;1192:10;6858:23;6850:68;;;;-1:-1:-1;;;6850:68:0;;;;;;;:::i;:::-;19661:24:::1;::::0;-1:-1:-1;;;;;19661:24:0::1;:40:::0;19653:88:::1;;;::::0;-1:-1:-1;;;19653:88:0;;8586:2:1;19653:88:0::1;::::0;::::1;8568:21:1::0;8625:2;8605:18;;;8598:30;8664:34;8644:18;;;8637:62;-1:-1:-1;;;8715:18:1;;;8708:33;8758:19;;19653:88:0::1;8384:399:1::0;19653:88:0::1;24294:17:::0;;19748:102:::1;;;::::0;-1:-1:-1;;;19748:102:0;;8990:2:1;19748:102:0::1;::::0;::::1;8972:21:1::0;9029:2;9009:18;;;9002:30;9068:34;9048:18;;;9041:62;-1:-1:-1;;;9119:18:1;;;9112:50;9179:19;;19748:102:0::1;8788:416:1::0;19748:102:0::1;19859:24;:52:::0;;-1:-1:-1;;;;;;19859:52:0::1;-1:-1:-1::0;;;;;19859:52:0;;;::::1;::::0;;;::::1;::::0;;19555:362::o;23260:365::-;-1:-1:-1;;;;;23406:20:0;;23335:7;23406:20;;;:6;:20;;;;;:27;;23442:38;;;;23489:36;;;;;23335:7;;;;;;;;23442:38;23534:34;23413:12;23534:20;:34::i;:::-;23577:35;23599:12;23577:21;:35::i;:::-;23390:229;;;;-1:-1:-1;23390:229:0;;-1:-1:-1;23390:229:0;-1:-1:-1;23390:229:0;;-1:-1:-1;23260:365:0;-1:-1:-1;;23260:365:0:o;18752:335::-;6790:6;;-1:-1:-1;;;;;6790:6:0;1192:10;6858:23;6850:68;;;;-1:-1:-1;;;6850:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18840:24:0;::::1;18832:52;;;::::0;-1:-1:-1;;;18832:52:0;;9411:2:1;18832:52:0::1;::::0;::::1;9393:21:1::0;9450:2;9430:18;;;9423:30;-1:-1:-1;;;9469:18:1;;;9462:45;9524:18;;18832:52:0::1;9209:339:1::0;18832:52:0::1;18911:14;::::0;-1:-1:-1;;;;;18899:26:0;;::::1;18911:14:::0;::::1;18899:26;;18891:56;;;::::0;-1:-1:-1;;;18891:56:0;;9755:2:1;18891:56:0::1;::::0;::::1;9737:21:1::0;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;18891:56:0::1;9553:341:1::0;18891:56:0::1;18956:14;:25:::0;;-1:-1:-1;;;;;;18956:25:0::1;-1:-1:-1::0;;;;;18956:25:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;18988:23:0;;;:7:::1;:23;::::0;;;;;19019:15:::1;18988:46:::0;;19050:14;;19041:40:::1;::::0;19050:14:::1;::::0;19041:8:::1;:40::i;:::-;18752:335:::0;:::o;19099:292::-;19145:17;;:::i;:::-;19171:214;;;;;;;;19187:12;;19171:214;;;;19208:13;;19171:214;;;;19230:11;;19171:214;;;;19250:17;;19171:214;;;;19278:19;;19171:214;;;;19308:7;:5;:7::i;:::-;19171:214;;;;19324:10;:8;:10::i;:::-;19171:214;;;;19343:15;:13;:15::i;:::-;19171:214;;;;19367:11;:9;:11::i;:::-;19171:214;;;19099:292;-1:-1:-1;19099:292:0:o;3389:215::-;1192:10;3477:4;3526:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3526:34:0;;;;;;;;;;3477:4;;3494:80;;3517:7;;3526:47;;3563:10;;3526:47;:::i;:::-;3494:8;:80::i;20694:185::-;20769:7;20792:81;20838:34;20860:11;20838:21;:34::i;:::-;20792:33;20813:11;20792:20;:33::i;:::-;:45;;:81::i;16701:434::-;16751:10;16770:1;16743:19;;;:7;:19;;;;;:24;16735:66;;;;-1:-1:-1;;;16735:66:0;;10366:2:1;16735:66:0;;;10348:21:1;10405:2;10385:18;;;10378:30;-1:-1:-1;;;10424:18:1;;;10417:55;10489:18;;16735:66:0;10164:349:1;16735:66:0;16824:10;16846:1;16816:19;;;:7;:19;;;;;:27;;;16808:63;;;;-1:-1:-1;;;16808:63:0;;10720:2:1;16808:63:0;;;10702:21:1;10759:2;10739:18;;;10732:30;-1:-1:-1;;;10778:18:1;;;10771:49;10837:18;;16808:63:0;10518:343:1;16808:63:0;16910:10;16878:21;16902:19;;;:7;:19;;;;;16951:14;;;;;16972:18;;;17013:13;;;;16902:19;;16951:14;17013:25;;16951:14;17013:17;:25::i;:::-;16997:13;;;:41;17061:11;;:23;;17077:6;17061:15;:23::i;:::-;17047:11;:37;17093:36;;17101:10;;17093:36;;;;;17122:6;;17093:36;;;;17122:6;17101:10;17093:36;;;;;;;;;;;;;;;;;;;;;16728:407;;16701:434::o;17740:143::-;17782:7;17805:72;17873:3;17805:55;17831:28;;17825:3;:34;;;;:::i;:::-;17805:7;:5;:7::i;:72::-;17798:79;;17740:143;:::o;19397:146::-;19471:17;;:::i;:::-;-1:-1:-1;;;;;19504:17:0;;;;;;:7;:17;;;;;;;19497:40;;;;;;;;;;19504:33;;;;;;;19497:40;;;;;;;;;;;;;;;;;;;;;;;;19397:146;;;:::o;23846:183::-;6790:6;;-1:-1:-1;;;;;6790:6:0;1192:10;6858:23;6850:68;;;;-1:-1:-1;;;6850:68:0;;;;;;;:::i;:::-;23939:1:::1;23926:10;:14;:34;;;;;23958:2;23944:10;:16;;23926:34;23918:73;;;::::0;-1:-1:-1;;;23918:73:0;;11198:2:1;23918:73:0::1;::::0;::::1;11180:21:1::0;11237:2;11217:18;;;11210:30;11276:28;11256:18;;;11249:56;11322:18;;23918:73:0::1;10996:350:1::0;23918:73:0::1;24000:10;:23:::0;23846:183::o;10527:56::-;;;;;;;;;;;;;;;-1:-1:-1;10527:56:0;:::o;6952:94::-;6790:6;;-1:-1:-1;;;;;6790:6:0;1192:10;6858:23;6850:68;;;;-1:-1:-1;;;6850:68:0;;;;;;;:::i;:::-;7017:21:::1;7035:1;7017:9;:21::i;:::-;6952:94::o:0;17440:139::-;17481:7;17504:69;17569:3;17504:52;17530:25;;17524:3;:31;;;;:::i;1858:104::-;1914:13;1947:7;1940:14;;;;;:::i;24035:145::-;6790:6;;-1:-1:-1;;;;;6790:6:0;1192:10;6858:23;6850:68;;;;-1:-1:-1;;;6850:68:0;;;;;;;:::i;:::-;24119:1:::1;24109:7;:11;24101:47;;;::::0;-1:-1:-1;;;24101:47:0;;11553:2:1;24101:47:0::1;::::0;::::1;11535:21:1::0;11592:2;11572:18;;;11565:30;11631:25;11611:18;;;11604:53;11674:18;;24101:47:0::1;11351:347:1::0;24101:47:0::1;24157:7;:17:::0;24035:145::o;20258:430::-;-1:-1:-1;;;;;20351:19:0;;20331:7;20351:19;;;:6;:19;;;;;:34;;;20347:70;;-1:-1:-1;20408:1:0;;20258:430;-1:-1:-1;20258:430:0:o;20347:70::-;-1:-1:-1;;;;;20470:19:0;;20425:21;20470:19;;;:6;:19;;;;;:34;;;20449:102;;11929:3;;20449:72;;11547:6;;20450:55;;:15;;:19;:55::i;20449:102::-;20425:126;;11989:5;20564:13;:40;20560:94;;;-1:-1:-1;11989:5:0;;20258:430;-1:-1:-1;;20258:430:0:o;17145:289::-;17183:7;17206:222;17235:186;17417:3;17235:167;10353:7;17235:122;17320:36;17340:15;;17320;:19;;:36;;;;:::i;:::-;17235:16;;:70;;10289:3;17235:30;:70::i;:186::-;17206:16;;;:20;:222::i;3618:413::-;1192:10;3711:4;3755:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3755:34:0;;;;;;;;;;3808:35;;;;3800:85;;;;-1:-1:-1;;;3800:85:0;;11905:2:1;3800:85:0;;;11887:21:1;11944:2;11924:18;;;11917:30;11983:34;11963:18;;;11956:62;-1:-1:-1;;;12034:18:1;;;12027:35;12079:19;;3800:85:0;11703:401:1;3800:85:0;3921:67;1192:10;3944:7;3972:15;3953:16;:34;3921:8;:67::i;:::-;-1:-1:-1;4019:4:0;;3618:413;-1:-1:-1;;;3618:413:0:o;20885:732::-;20935:4;20966:1;20956:7;:11;20948:51;;;;-1:-1:-1;;;20948:51:0;;6901:2:1;20948:51:0;;;6883:21:1;6940:2;6920:18;;;6913:30;6979:29;6959:18;;;6952:57;7026:18;;20948:51:0;6699:351:1;20948:51:0;21020:24;;21013:81;;-1:-1:-1;;;21013:81:0;;21059:10;21013:81;;;12349:34:1;21079:4:0;12399:18:1;;;12392:43;12451:18;;;12444:34;;;-1:-1:-1;;;;;21020:24:0;;;;21013:45;;12284:18:1;;21013:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21008:117;;-1:-1:-1;21112:5:0;;20885:732;-1:-1:-1;20885:732:0:o;21008:117::-;21133:14;21150:27;21166:10;21150:15;:27::i;:::-;21133:44;-1:-1:-1;21188:10:0;;21184:120;;21255:10;21248:18;;;;:6;:18;;;;;:36;;;:48;;21289:6;21248:40;:48::i;:::-;21216:10;21209:18;;;;:6;:18;;;;;:36;;:87;21184:120;21347:10;21340:18;;;;:6;:18;;;;;:25;:38;;21370:7;21340:29;:38::i;:::-;21319:10;21312:18;;;;:6;:18;;;;;:66;;;21417:15;21385:29;;;:47;21443:33;;;21439:112;;21499:10;21492:18;;;;:6;:18;;;;;21528:15;21492:33;;;;:51;21439:112;21564:27;;160:25:1;;;21571:10:0;;21564:27;;148:2:1;133:18;21564:27:0;;;;;;;-1:-1:-1;21607:4:0;;20885:732;-1:-1:-1;;20885:732:0:o;24346:84::-;24385:39;;24393:10;;24414:9;24385:39;;;;;;;;;24414:9;24393:10;24385:39;;;;;;;;;;;;;;;;;;;2346:175;2432:4;2449:42;1192:10;2473:9;2484:6;2449:9;:42::i;19923:329::-;-1:-1:-1;;;;;20034:19:0;;19995:7;20034:19;;;:6;:19;;;;;:26;19995:7;;20034:85;;12123:3;;20034:56;;12057:10;20034:30;:56::i;21980:466::-;22022:14;22039:77;22088:27;22104:10;22088:15;:27::i;:::-;22046:10;22039:18;;;;:6;:18;;;;;:36;;;;:48;:77::i;:::-;22022:94;-1:-1:-1;22129:10:0;;22125:316;;22165:10;22158:18;;;;:6;:18;;;;;22190:15;22158:29;;;:47;22214:36;;;:40;;;;22300:34;;;:46;;22339:6;22300:38;:46::i;:::-;22270:10;22263:18;;;;:6;:18;;;;;:34;;:83;;;;22357:25;;22375:6;22357:5;:25::i;:::-;22398:35;;160:25:1;;;22414:10:0;;22398:35;;148:2:1;133:18;22398:35:0;;;;;;;22015:431;21980:466::o;14912:768::-;14975:10;2279:7;2306:18;;;;;;;;;;;14990:7;-1:-1:-1;14965:32:0;14957:77;;;;-1:-1:-1;;;14957:77:0;;12691:2:1;14957:77:0;;;12673:21:1;;;12710:18;;;12703:30;12769:34;12749:18;;;12742:62;12821:18;;14957:77:0;12489:356:1;14957:77:0;15073:10;15041:21;15065:19;;;:7;:19;;;;;15095:11;;15091:136;;15136:15;15122:29;;15160:12;:14;;;15122:11;15160:14;;;:::i;:::-;;;;-1:-1:-1;;15204:14:0;;15183:36;;15192:10;;-1:-1:-1;;;;;15204:14:0;15183:8;:36::i;:::-;10353:7;15239:36;15259:15;;15239;:19;;:36;;;;:::i;:::-;:69;15235:272;;15319:16;15338:7;:5;:7::i;:::-;15373:16;;15319:26;;-1:-1:-1;15373:23:0;;15394:1;15373:20;:23::i;:::-;15354:16;:42;15423:15;15405;:33;15452:47;15464:8;15474:7;:5;:7::i;:::-;15452:47;;;13192:25:1;;;13248:2;13233:18;;13226:34;;;;15483:15:0;13276:18:1;;;13269:34;13180:2;13165:18;15452:47:0;;;;;;;15310:197;15235:272;15532:109;15559:75;15608:25;2059:2;15608;:25;:::i;:::-;15559:34;15581:11;:9;:11::i;:::-;15559:7;;:21;:34::i;:75::-;15532:14;;;;;:18;:109::i;:::-;15515:14;;;:126;15648:26;15654:10;15666:7;15648:5;:26::i;:::-;14950:730;14912:768;:::o;13564:1338::-;10207:10;13628:9;:22;;13620:52;;;;-1:-1:-1;;;13620:52:0;;14890:2:1;13620:52:0;;;14872:21:1;14929:2;14909:18;;;14902:30;-1:-1:-1;;;14948:18:1;;;14941:47;15005:18;;13620:52:0;14688:341:1;13620:52:0;13711:10;13679:21;13703:19;;;:7;:19;;;;;13735:11;;13731:366;;13776:15;13762:29;;13800:12;:14;;;13762:11;13800:14;;;:::i;:::-;;;;-1:-1:-1;;;;;;;13827:27:0;;;;;;:63;;-1:-1:-1;;;;;;13858:20:0;;13889:1;13858:20;;;:7;:20;;;;;:28;;;:32;;13827:63;13823:267;;;13902:33;13911:10;13923:11;13902:8;:33::i;:::-;13953:64;;;13990:9;4659:25:1;;14001:15:0;4715:2:1;4700:18;;4693:34;-1:-1:-1;;;;;13953:64:0;;;13965:10;;13953:64;;4632:18:1;13953:64:0;;;;;;;13823:267;;;14065:14;;14044:36;;14053:10;;-1:-1:-1;;;;;14065:14:0;14044:8;:36::i;:::-;14120:14;;;;:29;;14139:9;14120:18;:29::i;:::-;14103:14;;;:46;14182:15;;10353:7;;14162:36;;:15;;:19;:36::i;:::-;:69;14158:272;;14242:16;14261:7;:5;:7::i;:::-;14296:16;;14242:26;;-1:-1:-1;14296:23:0;;14317:1;14296:20;:23::i;:::-;14277:16;:42;14346:15;14328;:33;14375:47;14387:8;14397:7;:5;:7::i;:::-;14375:47;;;13192:25:1;;;13248:2;13233:18;;13226:34;;;;14406:15:0;13276:18:1;;;13269:34;13180:2;13165:18;14375:47:0;;;;;;;14233:197;14158:272;14438:20;14461:72;14522:10;:8;:10::i;:::-;14461:48;14483:25;2059:2;14483;:25;:::i;:::-;14461:9;;:21;:48::i;:72::-;14438:95;;14540:31;14546:10;14558:12;14540:5;:31::i;:::-;14605:15;;;;14580:41;;14594:9;;-1:-1:-1;;;;;14605:15:0;14580:13;:41::i;:::-;14646:13;;:28;;14664:9;14646:17;:28::i;:::-;14630:13;:44;14701:17;;:35;;14723:12;14701:21;:35::i;:::-;14681:17;:55;6790:6;;-1:-1:-1;;;;;6790:6:0;14745:66;14771:39;14806:3;14771:30;:9;10675:2;14771:13;:30::i;:39::-;14745:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10943:42:0;14818:78;14854:41;14891:3;14854:32;:9;10726:1;14854:13;:32::i;:41::-;14818:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13613:1289;;13564:1338;:::o;7060:192::-;6790:6;;-1:-1:-1;;;;;6790:6:0;1192:10;6858:23;6850:68;;;;-1:-1:-1;;;6850:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7149:22:0;::::1;7141:73;;;::::0;-1:-1:-1;;;7141:73:0;;15236:2:1;7141:73:0::1;::::0;::::1;15218:21:1::0;15275:2;15255:18;;;15248:30;15314:34;15294:18;;;15287:62;-1:-1:-1;;;15365:18:1;;;15358:36;15411:19;;7141:73:0::1;15034:402:1::0;7141:73:0::1;7225:19;7235:8;7225:9;:19::i;17585:149::-:0;17631:7;17654:74;17724:3;17654:57;17680:30;;17674:3;:36;;;;:::i;15690:1001::-;15740:10;15759:1;15732:19;;;:7;:19;;;;;:24;15724:66;;;;-1:-1:-1;;;15724:66:0;;10366:2:1;15724:66:0;;;10348:21:1;10405:2;10385:18;;;10378:30;-1:-1:-1;;;10424:18:1;;;10417:55;10489:18;;15724:66:0;10164:349:1;15724:66:0;15829:10;15797:21;15821:19;;;:7;:19;;;;;15857:14;;;;15849:50;;;;-1:-1:-1;;;15849:50:0;;15643:2:1;15849:50:0;;;15625:21:1;15682:2;15662:18;;;15655:30;-1:-1:-1;;;15701:18:1;;;15694:49;15760:18;;15849:50:0;15441:343:1;15849:50:0;10353:7;15912:36;15932:15;;15912;:19;;:36;;;;:::i;:::-;:69;15908:272;;15992:16;16011:7;:5;:7::i;:::-;16046:16;;15992:26;;-1:-1:-1;16046:23:0;;16067:1;16046:20;:23::i;:::-;16027:16;:42;16096:15;16078;:33;16125:47;16137:8;16147:7;:5;:7::i;:::-;16125:47;;;13192:25:1;;;13248:2;13233:18;;13226:34;;;;16156:15:0;13276:18:1;;;13269:34;13180:2;13165:18;16125:47:0;;;;;;;15983:197;15908:272;16208:14;;;;16188:17;16252:77;16313:15;:13;:15::i;:::-;16252:48;16274:25;2059:2;16274;:25;:::i;:::-;16252:9;;:21;:48::i;:77::-;16353:1;16336:14;;;:18;16229:100;-1:-1:-1;16361:31:0;16367:10;16229:100;16361:5;:31::i;:::-;16426:15;;;;16401:41;;16415:9;;-1:-1:-1;;;;;16426:15:0;16401:13;:41::i;:::-;16467:13;;:28;;16485:9;16467:17;:28::i;:::-;16451:13;:44;16519:14;;;;:29;;16538:9;16519:18;:29::i;:::-;16502:14;;;:46;16575:17;;:35;;16597:12;16575:21;:35::i;:::-;16555:17;:55;6790:6;;-1:-1:-1;;;;;6790:6:0;16619:66;16645:39;16680:3;16645:30;:9;10675:2;8882:98;8940:7;8967:5;8971:1;8967;:5;:::i;:::-;8960:12;8882:98;-1:-1:-1;;;8882:98:0:o;8994:::-;9052:7;9079:5;9083:1;9079;:5;:::i;8658:98::-;8716:7;8743:5;8747:1;8743;:5;:::i;8770:98::-;8828:7;8855:5;8859:1;8855;:5;:::i;5810:380::-;-1:-1:-1;;;;;5946:19:0;;5938:68;;;;-1:-1:-1;;;5938:68:0;;16386:2:1;5938:68:0;;;16368:21:1;16425:2;16405:18;;;16398:30;16464:34;16444:18;;;16437:62;-1:-1:-1;;;16515:18:1;;;16508:34;16559:19;;5938:68:0;16184:400:1;5938:68:0;-1:-1:-1;;;;;6025:21:0;;6017:68;;;;-1:-1:-1;;;6017:68:0;;16791:2:1;6017:68:0;;;16773:21:1;16830:2;16810:18;;;16803:30;16869:34;16849:18;;;16842:62;-1:-1:-1;;;16920:18:1;;;16913:32;16962:19;;6017:68:0;16589:398:1;6017:68:0;-1:-1:-1;;;;;6098:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6150:32;;160:25:1;;;6150:32:0;;133:18:1;6150:32:0;;;;;;;5810:380;;;:::o;4045:733::-;-1:-1:-1;;;;;4185:20:0;;4177:70;;;;-1:-1:-1;;;4177:70:0;;17194:2:1;4177:70:0;;;17176:21:1;17233:2;17213:18;;;17206:30;17272:34;17252:18;;;17245:62;-1:-1:-1;;;17323:18:1;;;17316:35;17368:19;;4177:70:0;16992:401:1;4177:70:0;-1:-1:-1;;;;;4266:23:0;;4258:71;;;;-1:-1:-1;;;4258:71:0;;17600:2:1;4258:71:0;;;17582:21:1;17639:2;17619:18;;;17612:30;17678:34;17658:18;;;17651:62;-1:-1:-1;;;17729:18:1;;;17722:33;17772:19;;4258:71:0;17398:399:1;4258:71:0;-1:-1:-1;;;;;4426:17:0;;4402:21;4426:17;;;;;;;;;;;4462:23;;;;4454:74;;;;-1:-1:-1;;;4454:74:0;;18004:2:1;4454:74:0;;;17986:21:1;18043:2;18023:18;;;18016:30;18082:34;18062:18;;;18055:62;-1:-1:-1;;;18133:18:1;;;18126:36;18179:19;;4454:74:0;17802:402:1;4454:74:0;-1:-1:-1;;;;;4564:17:0;;;:9;:17;;;;;;;;;;;4584:22;;;4564:42;;4628:20;;;;;;;;:30;;4600:6;;4564:9;4628:30;;4600:6;;4628:30;:::i;:::-;;;;;;;;4693:9;-1:-1:-1;;;;;4676:35:0;4685:6;-1:-1:-1;;;;;4676:35:0;;4704:6;4676:35;;;;160:25:1;;148:2;133:18;;14:177;4676:35:0;;;;;;;;4724:46;16701:434;13134:424;-1:-1:-1;;;;;13225:14:0;;;13201:21;13225:14;;;:7;:14;;;;;13246:15;;;:27;;-1:-1:-1;;;;;;13246:27:0;;;;;;;;;;;;;13312:241;13334:24;13330:1;:28;;;13312:241;;;13385:14;;-1:-1:-1;;;;;13378:21:0;;;13385:14;;13378:21;13374:53;;;13412:5;;13374:53;13469:38;13505:1;13469:7;:12;13477:3;-1:-1:-1;;;;;13469:12:0;-1:-1:-1;;;;;13469:12:0;;;;;;;;;;;;:28;;13498:1;13469:31;;;;;;;;;:::i;:::-;;;;:35;:38::i;:::-;-1:-1:-1;;;;;13435:12:0;;;;;;:7;:12;;;;;:28;;;;;:31;;;;;;;;;;:::i;:::-;;:72;-1:-1:-1;;;;;13524:12:0;;;;;;;:7;:12;;;;;:21;;;;;;;13360:3;;;;:::i;:::-;;;;13312:241;;;;13194:364;;13134:424;;:::o;7260:173::-;7335:6;;;-1:-1:-1;;;;;7352:17:0;;;-1:-1:-1;;;;;;7352:17:0;;;;;;;7385:40;;7335:6;;;7352:17;7335:6;;7385:40;;7316:16;;7385:40;7305:128;7260:173;:::o;4792:399::-;-1:-1:-1;;;;;4876:21:0;;4868:65;;;;-1:-1:-1;;;4868:65:0;;18723:2:1;4868:65:0;;;18705:21:1;18762:2;18742:18;;;18735:30;18801:33;18781:18;;;18774:61;18852:18;;4868:65:0;18521:355:1;4868:65:0;5024:6;5008:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5041:18:0;;:9;:18;;;;;;;;;;:28;;5063:6;;5041:9;:28;;5063:6;;5041:28;:::i;:::-;;;;-1:-1:-1;;5085:37:0;;160:25:1;;;-1:-1:-1;;;;;5085:37:0;;;5102:1;;5085:37;;148:2:1;133:18;5085:37:0;;;;;;;14950:730;14912:768;:::o;5205:591::-;-1:-1:-1;;;;;5289:21:0;;5281:67;;;;-1:-1:-1;;;5281:67:0;;19083:2:1;5281:67:0;;;19065:21:1;19122:2;19102:18;;;19095:30;19161:34;19141:18;;;19134:62;-1:-1:-1;;;19212:18:1;;;19205:31;19253:19;;5281:67:0;18881:397:1;5281:67:0;-1:-1:-1;;;;;5448:18:0;;5423:22;5448:18;;;;;;;;;;;5485:24;;;;5477:71;;;;-1:-1:-1;;;5477:71:0;;19485:2:1;5477:71:0;;;19467:21:1;19524:2;19504:18;;;19497:30;19563:34;19543:18;;;19536:62;-1:-1:-1;;;19614:18:1;;;19607:32;19656:19;;5477:71:0;19283:398:1;5477:71:0;-1:-1:-1;;;;;5584:18:0;;:9;:18;;;;;;;;;;5605:23;;;5584:44;;5650:12;:22;;5622:6;;5584:9;5650:22;;5622:6;;5650:22;:::i;:::-;;;;-1:-1:-1;;5690:37:0;;160:25:1;;;5716:1:0;;-1:-1:-1;;;;;5690:37:0;;;;;148:2:1;133:18;5690:37:0;;;;;;;17093:36;16728:407;;16701:434::o;17893:847::-;17967:19;17989:46;18031:3;17990:35;18002:22;;17990:7;:11;;:35;;;;:::i;17989:46::-;17967:68;-1:-1:-1;18058:9:0;18044:11;;18098:555;18120:24;18116:1;:28;;;18098:555;;;18172:42;18210:3;18172:33;18184:17;18202:1;18184:20;;;;;;;;;:::i;:::-;;;18172:7;;:11;:33::i;:42::-;18160:54;-1:-1:-1;18237:26:0;:11;18160:54;18237:15;:26::i;:::-;-1:-1:-1;;;;;18304:12:0;;;;;;:7;:12;;;;;:27;;;18223:40;;-1:-1:-1;18304:42:0;;18336:9;18304:31;:42::i;:::-;-1:-1:-1;;;;;18274:12:0;;;;;;:7;:12;;;;;:27;;:72;18377:19;;:34;;18401:9;18377:23;:34::i;:::-;18355:19;:56;18426:13;;18422:186;;-1:-1:-1;;;;;18456:19:0;;;18452:147;;18490:32;;-1:-1:-1;;;;;18490:21:0;;;:32;;;;;18512:9;;18490:32;;;;18512:9;18490:21;:32;;;;;;;;;;;;;;;;;;;;;18452:147;;;18553:14;;:34;;-1:-1:-1;;;;;18553:14:0;;;;:34;;;;;18577:9;;18553:14;:34;:14;:34;18577:9;18553:14;:34;;;;;;;;;;;;;;;;;;;;;18452:147;-1:-1:-1;;;;;18624:12:0;;;;;;;:7;:12;;;;;:21;;;;;;;18146:3;;;;:::i;:::-;;;;18098:555;;;-1:-1:-1;18665:15:0;;18661:74;;18691:14;;:36;;-1:-1:-1;;;;;18691:14:0;;;;:36;;;;;18715:11;;18691:14;:36;:14;:36;18715:11;18691:14;:36;;;;;;;;;;;;;;;;;;;;;17960:780;;;17893:847;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:131:1:-;-1:-1:-1;;;;;271:31:1;;261:42;;251:70;;317:1;314;307:12;332:247;391:6;444:2;432:9;423:7;419:23;415:32;412:52;;;460:1;457;450:12;412:52;499:9;486:23;518:31;543:5;518:31;:::i;584:597::-;696:4;725:2;754;743:9;736:21;786:6;780:13;829:6;824:2;813:9;809:18;802:34;854:1;864:140;878:6;875:1;872:13;864:140;;;973:14;;;969:23;;963:30;939:17;;;958:2;935:26;928:66;893:10;;864:140;;;1022:6;1019:1;1016:13;1013:91;;;1092:1;1087:2;1078:6;1067:9;1063:22;1059:31;1052:42;1013:91;-1:-1:-1;1165:2:1;1144:15;-1:-1:-1;;1140:29:1;1125:45;;;;1172:2;1121:54;;584:597;-1:-1:-1;;;584:597:1:o;1186:315::-;1254:6;1262;1315:2;1303:9;1294:7;1290:23;1286:32;1283:52;;;1331:1;1328;1321:12;1283:52;1370:9;1357:23;1389:31;1414:5;1389:31;:::i;:::-;1439:5;1491:2;1476:18;;;;1463:32;;-1:-1:-1;;;1186:315:1:o;1698:456::-;1775:6;1783;1791;1844:2;1832:9;1823:7;1819:23;1815:32;1812:52;;;1860:1;1857;1850:12;1812:52;1899:9;1886:23;1918:31;1943:5;1918:31;:::i;:::-;1968:5;-1:-1:-1;2025:2:1;2010:18;;1997:32;2038:33;1997:32;2038:33;:::i;:::-;1698:456;;2090:7;;-1:-1:-1;;;2144:2:1;2129:18;;;;2116:32;;1698:456::o;2159:180::-;2218:6;2271:2;2259:9;2250:7;2246:23;2242:32;2239:52;;;2287:1;2284;2277:12;2239:52;-1:-1:-1;2310:23:1;;2159:180;-1:-1:-1;2159:180:1:o;3261:495::-;3441:3;3426:19;;3430:9;3522:6;3399:4;3556:194;3570:4;3567:1;3564:11;3556:194;;;3629:13;;3617:26;;3666:4;3690:12;;;;3725:15;;;;3590:1;3583:9;3556:194;;;3560:3;;;3261:495;;;;:::o;3761:::-;3941:3;3926:19;;3930:9;4022:6;3899:4;4056:194;4070:4;4067:1;4064:11;4056:194;;;4129:13;;4117:26;;4166:4;4190:12;;;;4225:15;;;;4090:1;4083:9;4056:194;;4946:388;5014:6;5022;5075:2;5063:9;5054:7;5050:23;5046:32;5043:52;;;5091:1;5088;5081:12;5043:52;5130:9;5117:23;5149:31;5174:5;5149:31;:::i;:::-;5199:5;-1:-1:-1;5256:2:1;5241:18;;5228:32;5269:33;5228:32;5269:33;:::i;:::-;5321:7;5311:17;;;4946:388;;;;;:::o;5905:380::-;5984:1;5980:12;;;;6027;;;6048:61;;6102:4;6094:6;6090:17;6080:27;;6048:61;6155:2;6147:6;6144:14;6124:18;6121:38;6118:161;;;6201:10;6196:3;6192:20;6189:1;6182:31;6236:4;6233:1;6226:15;6264:4;6261:1;6254:15;6118:161;;5905:380;;;:::o;7741:277::-;7808:6;7861:2;7849:9;7840:7;7836:23;7832:32;7829:52;;;7877:1;7874;7867:12;7829:52;7909:9;7903:16;7962:5;7955:13;7948:21;7941:5;7938:32;7928:60;;7984:1;7981;7974:12;8023:356;8225:2;8207:21;;;8244:18;;;8237:30;8303:34;8298:2;8283:18;;8276:62;8370:2;8355:18;;8023:356::o;9899:127::-;9960:10;9955:3;9951:20;9948:1;9941:31;9991:4;9988:1;9981:15;10015:4;10012:1;10005:15;10031:128;10071:3;10102:1;10098:6;10095:1;10092:13;10089:39;;;10108:18;;:::i;:::-;-1:-1:-1;10144:9:1;;10031:128::o;10866:125::-;10906:4;10934:1;10931;10928:8;10925:34;;;10939:18;;:::i;:::-;-1:-1:-1;10976:9:1;;10866:125::o;12850:135::-;12889:3;-1:-1:-1;;12910:17:1;;12907:43;;;12930:18;;:::i;:::-;-1:-1:-1;12977:1:1;12966:13;;12850:135::o;13314:422::-;13403:1;13446:5;13403:1;13460:270;13481:7;13471:8;13468:21;13460:270;;;13540:4;13536:1;13532:6;13528:17;13522:4;13519:27;13516:53;;;13549:18;;:::i;:::-;13599:7;13589:8;13585:22;13582:55;;;13619:16;;;;13582:55;13698:22;;;;13658:15;;;;13460:270;;;13464:3;13314:422;;;;;:::o;13741:806::-;13790:5;13820:8;13810:80;;-1:-1:-1;13861:1:1;13875:5;;13810:80;13909:4;13899:76;;-1:-1:-1;13946:1:1;13960:5;;13899:76;13991:4;14009:1;14004:59;;;;14077:1;14072:130;;;;13984:218;;14004:59;14034:1;14025:10;;14048:5;;;14072:130;14109:3;14099:8;14096:17;14093:43;;;14116:18;;:::i;:::-;-1:-1:-1;;14172:1:1;14158:16;;14187:5;;13984:218;;14286:2;14276:8;14273:16;14267:3;14261:4;14258:13;14254:36;14248:2;14238:8;14235:16;14230:2;14224:4;14221:12;14217:35;14214:77;14211:159;;;-1:-1:-1;14323:19:1;;;14355:5;;14211:159;14402:34;14427:8;14421:4;14402:34;:::i;:::-;14472:6;14468:1;14464:6;14460:19;14451:7;14448:32;14445:58;;;14483:18;;:::i;:::-;14521:20;;13741:806;-1:-1:-1;;;13741:806:1:o;14552:131::-;14612:5;14641:36;14668:8;14662:4;14641:36;:::i;15789:168::-;15829:7;15895:1;15891;15887:6;15883:14;15880:1;15877:21;15872:1;15865:9;15858:17;15854:45;15851:71;;;15902:18;;:::i;:::-;-1:-1:-1;15942:9:1;;15789:168::o;15962:217::-;16002:1;16028;16018:132;;16072:10;16067:3;16063:20;16060:1;16053:31;16107:4;16104:1;16097:15;16135:4;16132:1;16125:15;16018:132;-1:-1:-1;16164:9:1;;15962:217::o;18209:127::-;18270:10;18265:3;18261:20;18258:1;18251:31;18301:4;18298:1;18291:15;18325:4;18322:1;18315:15;18341:175;18378:3;18422:4;18415:5;18411:16;18451:4;18442:7;18439:17;18436:43;;;18459:18;;:::i;:::-;18508:1;18495:15;;18341:175;-1:-1:-1;;18341:175:1:o
Swarm Source
ipfs://1040824d23dcc0756347381c9984dc4062e7478fca074190a2104a2d44dfed48
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.