Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
92,038,787.377734562163903666 HXYF
Holders
58
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
HXYFINANCE
Compiler Version
v0.6.4+commit.1dca32f3
Contract Source Code (Solidity Multiple files format)
//HXYF.sol // // pragma solidity 0.6.4; import "./SafeMath.sol"; import "./IERC20.sol"; import "./Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; } //////////////////////////////////////////////// ////////////////////EVENTS///////////////////// ////////////////////////////////////////////// contract TokenEvents { //when a user freezes tokens event LpFreeze( address indexed user, uint value, address indexed lpToken ); //when a user unfreezes tokens event LpUnfreeze( address indexed user, uint value, address indexed lpToken ); } ////////////////////////////////////// //////////HXYFINANCE TOKEN CONTRACT//////// //////////////////////////////////// contract HXYFINANCE is IERC20, TokenEvents { using SafeMath for uint256; using SafeMath for uint64; using SafeMath for uint32; using SafeMath for uint16; using SafeMath for uint8; using SafeERC20 for HXYFINANCE; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; //uniswap setup address public uniETHHXYF = address(0); address public uniETHHXY = address(0x8349fBbd8F229b0B6298e7c14b3778eaDf4426DD); address public uniHEXHXB = address(0x938Af9DE4Fe7Fd683F9eDf29E12457181E01Ca46); address public uniETHHXP = address(0x55dB1Ca87CB8f0e6AaEa44BeE5E6DcE5B72DA9c0); IUniswapV2Pair internal uniETHHXYFInterface = IUniswapV2Pair(uniETHHXYF); IUniswapV2Pair internal uniETHHXYInterface = IUniswapV2Pair(uniETHHXY); IUniswapV2Pair internal uniHEXHXBInterface = IUniswapV2Pair(uniHEXHXB); IUniswapV2Pair internal uniETHHXPInterface = IUniswapV2Pair(uniETHHXP); //apy setup uint32 public hxyfApy = 100; uint32 public hxyApy = 333; uint32 public hxbApy = 500; uint32 public hxpApy = 1000; uint32 public globalApy = 100; uint16 public halvening = 1; //lp freeze setup uint constant internal MINUTESECONDS = 60; uint256 public totalHxyfLpFrozen = 0; uint256 public totalHxyLpFrozen = 0; uint256 public totalHxbLpFrozen = 0; uint256 public totalHxpLpFrozen = 0; mapping (address => uint) public hxyfLpFrozenBalances;//balance of ETHHXYF LP frozen mapped by user mapping (address => uint) public hxyLpFrozenBalances;//balance of ETHHXY LP frozen mapped by user mapping (address => uint) public hxbLpFrozenBalances;//balance of HEXHXB LP frozen mapped by user mapping (address => uint) public hxpLpFrozenBalances;//balance of HXPETH LP frozen mapped by user //tokenomics uint256 internal _totalSupply; string public constant name = "hxy.finance"; string public constant symbol = "HXYF"; uint8 public constant decimals = 18; //airdrop contract address payable public airdropContract = address(0); //admin address payable internal _p1 = 0x55db05F51b31F45EBEDefdD4467ebEc2D026a820; address payable internal _p2 = 0x993e189a1b8B9D0D8259E09479ADD07c084b8e75; bool private sync; mapping(address => bool) admins; mapping (address => Farmer) public farmer; struct Farmer{ uint256 hxyfFreezeStartTimestamp; uint256 hxyFreezeStartTimestamp; uint256 hxbFreezeStartTimestamp; uint256 hxpFreezeStartTimestamp; uint256 totalFarmedHxyf; } modifier onlyAdmins(){ require(admins[msg.sender], "not an admin"); _; } //protects against potential reentrancy modifier synchronized { require(!sync, "Sync lock"); sync = true; _; sync = false; } constructor(uint256 initialTokens) public { admins[_p1] = true; admins[_p2] = true; admins[msg.sender] = true; //mint initial tokens mintInitialTokens(initialTokens); } receive() external payable{ donate(); } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient` * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply unless mintBLock is true * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { uint256 amt = amount; require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amt); _balances[account] = _balances[account].add(amt); emit Transfer(address(0), account, amt); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal { 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); } /** * @dev Destroys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See {_burn} and {_approve}. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount, "ERC20: burn amount exceeds allowance")); } /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value);//from address(0) for minting /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); //mint HXYF initial tokens (only ever called in constructor) function mintInitialTokens(uint amount) internal synchronized { _mint(_p1, amount.div(4).mul(3));//mint HXYF to p1 _mint(_p2, amount.div(4));//mint HXYF to p2 } //////////////////////////////////////////////////////// /////////////////PUBLIC FACING - HXYF CONTROL////////// ////////////////////////////////////////////////////// //freeze ETHHXYF LP tokens to contract, approval needed function FreezeEthHxyfLP(uint amt) public { require(amt > 0, "zero input"); require(lpBalance(uniETHHXYF) >= amt, "Error: insufficient balance");//ensure user has enough funds if(isHarvestable(msg.sender, uniETHHXYF)){ uint256 interest = calcHarvestRewards(msg.sender, uniETHHXYF); if(interest > 0){ harvest(interest); } } //update balances hxyfLpFrozenBalances[msg.sender] = hxyfLpFrozenBalances[msg.sender].add(amt); totalHxyfLpFrozen = totalHxyfLpFrozen.add(amt); farmer[msg.sender].hxyfFreezeStartTimestamp = now; uniETHHXYFInterface.transferFrom(msg.sender, address(this), amt);//make transfer emit LpFreeze(msg.sender, amt, uniETHHXYF); } //unfreeze ETHHXYF LP tokens from contract function UnfreezeEthHxyfLP() public synchronized { require(hxyfLpFrozenBalances[msg.sender] > 0,"Error: unsufficient frozen balance");//ensure user has enough frozen funds uint amt = hxyfLpFrozenBalances[msg.sender]; if(isHarvestable(msg.sender, uniETHHXYF)){ uint256 interest = calcHarvestRewards(msg.sender, uniETHHXYF); if(interest > 0){ harvest(interest); } } hxyfLpFrozenBalances[msg.sender] = 0; farmer[msg.sender].hxyfFreezeStartTimestamp = 0; totalHxyfLpFrozen = totalHxyfLpFrozen.sub(amt); uniETHHXYFInterface.transfer(msg.sender, amt);//make transfer emit LpUnfreeze(msg.sender, amt, uniETHHXYF); } //freeze ETHHXY LP tokens to contract, approval needed function FreezeEthHxyLP(uint amt) public { require(amt > 0, "zero input"); require(lpBalance(uniETHHXY) >= amt, "Error: insufficient balance");//ensure user has enough funds if(isHarvestable(msg.sender, uniETHHXY)){ uint256 interest = calcHarvestRewards(msg.sender, uniETHHXY); if(interest > 0){ harvest(interest); } } //update balances hxyLpFrozenBalances[msg.sender] = hxyLpFrozenBalances[msg.sender].add(amt); totalHxyLpFrozen = totalHxyLpFrozen.add(amt); farmer[msg.sender].hxyFreezeStartTimestamp = now; uniETHHXYInterface.transferFrom(msg.sender, address(this), amt);//make transfer emit LpFreeze(msg.sender, amt, uniETHHXY); } //unfreeze ETHHXY LP tokens from contract function UnfreezeEthHxyLP() public synchronized { require(hxyLpFrozenBalances[msg.sender] > 0,"Error: unsufficient frozen balance");//ensure user has enough frozen funds uint amt = hxyLpFrozenBalances[msg.sender]; if(isHarvestable(msg.sender, uniETHHXY)){ uint256 interest = calcHarvestRewards(msg.sender, uniETHHXY); if(interest > 0){ harvest(interest); } } hxyLpFrozenBalances[msg.sender] = 0; farmer[msg.sender].hxyFreezeStartTimestamp = 0; totalHxyLpFrozen = totalHxyLpFrozen.sub(amt); uniETHHXYInterface.transfer(msg.sender, amt);//make transfer emit LpUnfreeze(msg.sender, amt, uniETHHXY); } //freeze HEXHXB LP tokens to contract, approval needed function FreezeHexHxbLP(uint amt) public { require(amt > 0, "zero input"); require(lpBalance(uniHEXHXB) >= amt, "Error: insufficient balance");//ensure user has enough funds if(isHarvestable(msg.sender, uniHEXHXB)){ uint256 interest = calcHarvestRewards(msg.sender, uniHEXHXB); if(interest > 0){ harvest(interest); } } //update balances hxbLpFrozenBalances[msg.sender] = hxbLpFrozenBalances[msg.sender].add(amt); totalHxbLpFrozen = totalHxbLpFrozen.add(amt); farmer[msg.sender].hxbFreezeStartTimestamp = now; uniHEXHXBInterface.transferFrom(msg.sender, address(this), amt);//make transfer emit LpFreeze(msg.sender, amt, uniHEXHXB); } //unfreeze HEXHXB LP tokens from contract function UnfreezeHexHxbLP() public synchronized { require(hxbLpFrozenBalances[msg.sender] > 0,"Error: unsufficient frozen balance");//ensure user has enough frozen funds uint amt = hxbLpFrozenBalances[msg.sender]; if(isHarvestable(msg.sender, uniHEXHXB)){ uint256 interest = calcHarvestRewards(msg.sender, uniHEXHXB); if(interest > 0){ harvest(interest); } } hxbLpFrozenBalances[msg.sender] = 0; farmer[msg.sender].hxbFreezeStartTimestamp = 0; totalHxbLpFrozen = totalHxbLpFrozen.sub(amt); uniHEXHXBInterface.transfer(msg.sender, amt);//make transfer emit LpUnfreeze(msg.sender, amt, uniHEXHXB); } //freeze HXPETH LP tokens to contract, approval needed function FreezeEthHxpLP(uint amt) public { require(amt > 0, "zero input"); require(lpBalance(uniETHHXP) >= amt, "Error: insufficient balance");//ensure user has enough funds if(isHarvestable(msg.sender, uniETHHXP)){ uint256 interest = calcHarvestRewards(msg.sender, uniETHHXP); if(interest > 0){ harvest(interest); } } //update balances hxpLpFrozenBalances[msg.sender] = hxpLpFrozenBalances[msg.sender].add(amt); totalHxpLpFrozen = totalHxpLpFrozen.add(amt); farmer[msg.sender].hxpFreezeStartTimestamp = now; uniETHHXPInterface.transferFrom(msg.sender, address(this), amt);//make transfer emit LpFreeze(msg.sender, amt, uniETHHXP); } //unfreeze HXPETH LP tokens from contract function UnfreezeEthHxpLP() public synchronized { require(hxpLpFrozenBalances[msg.sender] > 0,"Error: unsufficient frozen balance");//ensure user has enough frozen funds uint amt = hxpLpFrozenBalances[msg.sender]; if(isHarvestable(msg.sender, uniETHHXP)){ uint256 interest = calcHarvestRewards(msg.sender, uniETHHXP); if(interest > 0){ harvest(interest); } } hxpLpFrozenBalances[msg.sender] = 0; farmer[msg.sender].hxpFreezeStartTimestamp = 0; totalHxpLpFrozen = totalHxpLpFrozen.sub(amt); uniETHHXPInterface.transfer(msg.sender, amt);//make transfer emit LpUnfreeze(msg.sender, amt, uniETHHXP); } function harvest(uint rewards) internal { _mint(msg.sender, rewards); _mint(airdropContract, rewards); _mint(_p1, rewards.div(2)); _mint(_p2, rewards.div(2)); } //harvest HXYF from ETHHXYF lp function HarvestHxyfLp() public { require(hxyfLpFrozenBalances[msg.sender] > 0,"Error: unsufficient lp balance");//ensure user has enough lp frozen uint256 interest = calcHarvestRewards(msg.sender, uniETHHXYF); if(interest > 0){ harvest(interest); farmer[msg.sender].hxyfFreezeStartTimestamp = now; farmer[msg.sender].totalFarmedHxyf += interest; } } //harvest HXYF from ETHHXY lp function HarvestHxyLp() public { require(hxyLpFrozenBalances[msg.sender] > 0,"Error: unsufficient lp balance");//ensure user has enough lp frozen uint256 interest = calcHarvestRewards(msg.sender, uniETHHXY); if(interest > 0){ harvest(interest); farmer[msg.sender].hxyFreezeStartTimestamp = now; farmer[msg.sender].totalFarmedHxyf += interest; } } //harvest HXYF from HEXHXB lp function HarvestHxbLp() public { require(hxbLpFrozenBalances[msg.sender] > 0,"Error: unsufficient lp balance");//ensure user has enough lp frozen uint256 interest = calcHarvestRewards(msg.sender, uniHEXHXB); if(interest > 0){ harvest(interest); farmer[msg.sender].hxbFreezeStartTimestamp = now; farmer[msg.sender].totalFarmedHxyf += interest; } } //harvest HXYF from HEXHXP lp function HarvestHxpLp() public { require(hxpLpFrozenBalances[msg.sender] > 0,"Error: unsufficient lp balance");//ensure user has enough lp frozen uint256 interest = calcHarvestRewards(msg.sender, uniETHHXP); if(interest > 0){ harvest(interest); farmer[msg.sender].hxpFreezeStartTimestamp = now; farmer[msg.sender].totalFarmedHxyf += interest; } } //returns freezing reward in HXY function calcHarvestRewards(address _user, address _lp) public view returns(uint) { if(_lp == uniETHHXYF){ return ((hxyfLpFrozenBalances[_user].mul(globalApy.div(halvening)).div(hxyfApy)).mul(minsPastFreezeTime(_user, _lp))); } else if(_lp == uniETHHXY){ return ((hxyLpFrozenBalances[_user].mul(globalApy.div(halvening)).div(hxyApy)).mul(minsPastFreezeTime(_user, _lp))); } else if(_lp == uniHEXHXB){ return ((hxbLpFrozenBalances[_user].mul(globalApy.div(halvening)).div(hxbApy)).mul(minsPastFreezeTime(_user, _lp))); } else if(_lp == uniETHHXP){ return ((hxpLpFrozenBalances[_user].mul(globalApy.div(halvening)).div(hxpApy)).mul(minsPastFreezeTime(_user, _lp))); } else{ revert(); } } //returns amount of minutes past since lp freeze start - min 1 minute function minsPastFreezeTime(address _user, address _lp) public view returns(uint) { if(_lp == uniETHHXYF){ if(farmer[_user].hxyfFreezeStartTimestamp == 0){ return 0; } uint minsPast = now.sub(farmer[_user].hxyfFreezeStartTimestamp).div(MINUTESECONDS); if(minsPast >= 1){ return minsPast;// returns 0 if under 1 min passed } else{ return 0; } } else if(_lp == uniETHHXY){ if(farmer[_user].hxyFreezeStartTimestamp == 0){ return 0; } uint minsPast = now.sub(farmer[_user].hxyFreezeStartTimestamp).div(MINUTESECONDS); if(minsPast >= 1){ return minsPast;// returns 0 if under 1 min passed } else{ return 0; } } else if(_lp == uniHEXHXB){ if(farmer[_user].hxbFreezeStartTimestamp == 0){ return 0; } uint minsPast = now.sub(farmer[_user].hxbFreezeStartTimestamp).div(MINUTESECONDS); if(minsPast >= 1){ return minsPast;// returns 0 if under 1 min passed } else{ return 0; } } else if(_lp == uniETHHXP){ if(farmer[_user].hxpFreezeStartTimestamp == 0){ return 0; } uint minsPast = now.sub(farmer[_user].hxpFreezeStartTimestamp).div(MINUTESECONDS); if(minsPast >= 1){ return minsPast;// returns 0 if under 1 min passed } else{ return 0; } } else{ revert(); } } function burnHxyf(uint amt) public { require(amt > 0, "value must be greater than 0"); _burn(msg.sender, amt); } /////////////////////////////// ////////ADMIN ONLY////////////// /////////////////////////////// function newHalvening() public onlyAdmins { halvening = halvening * 2; } function setGlobalApy(uint32 _apy) public onlyAdmins { globalApy = _apy; } function setApy(uint32 _apy, address _lp) public onlyAdmins { if(_lp == uniETHHXYF){ hxyfApy = _apy; } else if(_lp == uniETHHXY){ hxyApy = _apy; } else if(_lp == uniHEXHXB){ hxbApy = _apy; } else if(_lp == uniETHHXP){ hxpApy = _apy; } else{ revert(); } } //set airdropcontract for can only be set once function setAirdropContract(address payable _airdropContract) public onlyAdmins { require(_airdropContract != address(0), "cannot be null address"); airdropContract = _airdropContract; } function setHXYFExchange(address exchange) public onlyAdmins { uniETHHXYF = exchange; uniETHHXYFInterface = IUniswapV2Pair(uniETHHXYF); } function setHXYExchange(address exchange) public onlyAdmins { uniETHHXY = exchange; uniETHHXYInterface = IUniswapV2Pair(uniETHHXY); } function setHXBExchange(address exchange) public onlyAdmins { uniHEXHXB = exchange; uniHEXHXBInterface = IUniswapV2Pair(uniHEXHXB); } function setHXPExchange(address exchange) public onlyAdmins { uniETHHXP = exchange; uniETHHXPInterface = IUniswapV2Pair(uniETHHXP); } /////////////////////////////// ////////VIEW ONLY////////////// /////////////////////////////// //total HXY frozen in contract function totalFrozenLpBalance(address _lp) public view returns (uint256) { if(_lp == uniETHHXYF){ return totalHxyfLpFrozen; } else if(_lp == uniETHHXY){ return totalHxyLpFrozen; } else if(_lp == uniHEXHXB){ return totalHxbLpFrozen; } else if(_lp == uniETHHXP){ return totalHxpLpFrozen; } else{ revert(); } } //HXYF balance of caller function hxyfBalance() public view returns (uint256) { return balanceOf(msg.sender); } //LP balance of caller function lpBalance(address _lp) public view returns (uint256) { if(_lp == uniETHHXYF){ return uniETHHXYFInterface.balanceOf(msg.sender); } else if(_lp == uniETHHXY){ return uniETHHXYInterface.balanceOf(msg.sender); } else if(_lp == uniHEXHXB){ return uniHEXHXBInterface.balanceOf(msg.sender); } else if(_lp == uniETHHXP){ return uniETHHXPInterface.balanceOf(msg.sender); } else{ revert(); } } //check if user can harvest HXYF yet function isHarvestable(address _user, address _lp) public view returns(bool) { if(_lp == uniETHHXYF){ if(farmer[_user].hxyfFreezeStartTimestamp == 0){ return false; } else{ return farmer[_user].hxyfFreezeStartTimestamp.add((MINUTESECONDS.div(24))) <= now; } } else if(_lp == uniETHHXY){ if(farmer[_user].hxyFreezeStartTimestamp == 0){ return false; } else{ return farmer[_user].hxyFreezeStartTimestamp.add((MINUTESECONDS.div(24))) <= now; } } else if(_lp == uniHEXHXB){ if(farmer[_user].hxbFreezeStartTimestamp == 0){ return false; } else{ return farmer[_user].hxbFreezeStartTimestamp.add((MINUTESECONDS.div(24))) <= now; } } else if(_lp == uniETHHXP){ if(farmer[_user].hxpFreezeStartTimestamp == 0){ return false; } else{ return farmer[_user].hxpFreezeStartTimestamp.add((MINUTESECONDS.div(24))) <= now; } } else{ revert(); } } function donate() public payable { require(msg.value > 0); bool success = false; uint256 balance = msg.value; //distribute (success, ) = _p1.call{value:balance.mul(50).div(100)}{gas:21000}(''); require(success, "Transfer failed"); (success, ) = _p2.call{value:balance.mul(50).div(100)}{gas:21000}(''); require(success, "Transfer failed"); } }
pragma solidity 0.6.4; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } }
pragma solidity 0.6.4; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value);//from address(0) for minting /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
pragma solidity 0.6.4; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"initialTokens","type":"uint256"}],"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":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"lpToken","type":"address"}],"name":"LpFreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"lpToken","type":"address"}],"name":"LpUnfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"FreezeEthHxpLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"FreezeEthHxyLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"FreezeEthHxyfLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"FreezeHexHxbLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"HarvestHxbLp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"HarvestHxpLp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"HarvestHxyLp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"HarvestHxyfLp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UnfreezeEthHxpLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UnfreezeEthHxyLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UnfreezeEthHxyfLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UnfreezeHexHxbLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"airdropContract","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnHxyf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_lp","type":"address"}],"name":"calcHarvestRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"donate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"farmer","outputs":[{"internalType":"uint256","name":"hxyfFreezeStartTimestamp","type":"uint256"},{"internalType":"uint256","name":"hxyFreezeStartTimestamp","type":"uint256"},{"internalType":"uint256","name":"hxbFreezeStartTimestamp","type":"uint256"},{"internalType":"uint256","name":"hxpFreezeStartTimestamp","type":"uint256"},{"internalType":"uint256","name":"totalFarmedHxyf","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalApy","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halvening","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hxbApy","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hxbLpFrozenBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hxpApy","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hxpLpFrozenBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hxyApy","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hxyLpFrozenBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hxyfApy","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hxyfBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hxyfLpFrozenBalances","outputs":[{"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":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_lp","type":"address"}],"name":"isHarvestable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lp","type":"address"}],"name":"lpBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_lp","type":"address"}],"name":"minsPastFreezeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newHalvening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_airdropContract","type":"address"}],"name":"setAirdropContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_apy","type":"uint32"},{"internalType":"address","name":"_lp","type":"address"}],"name":"setApy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_apy","type":"uint32"}],"name":"setGlobalApy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"exchange","type":"address"}],"name":"setHXBExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"exchange","type":"address"}],"name":"setHXPExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"exchange","type":"address"}],"name":"setHXYExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"exchange","type":"address"}],"name":"setHXYFExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lp","type":"address"}],"name":"totalFrozenLpBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHxbLpFrozen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHxpLpFrozen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHxyLpFrozen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHxyfLpFrozen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniETHHXP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniETHHXY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniETHHXYF","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniHEXHXB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811690915560038054738349fbbd8f229b0b6298e7c14b3778eadf4426dd90831617908190556004805473938af9de4fe7fd683f9edf29e12457181e01ca469084161790819055600580547355db1ca87cb8f0e6aaea44bee5e6dce5b72da9c090851617908190556006805485169055600780546001600160a01b03948516908616179055600880549284169285169290921790915560098054929091169183169190911763ffffffff60a01b1916601960a21b1763ffffffff60c01b191661014d60c01b176001600160e01b0316607d60e21b179055600a8054680100000000000000006103e863ffffffff199092169190911763ffffffff60201b19166464000000001761ffff60401b19161790556000600b819055600c819055600d819055600e556014805482169055601580547355db05f51b31f45ebedefdd4467ebec2d026a8209083161790556016805473993e189a1b8b9d0d8259e09479add07c084b8e7592169190911790553480156200018c57600080fd5b506040516200407f3803806200407f83398181016040526020811015620001b257600080fd5b50516015546001600160a01b039081166000908152601760205260408082208054600160ff19918216811790925560165490941683528183208054851682179055338352912080549092161790556200020b8162000212565b50620005b6565b601654600160a01b900460ff16156200025e576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b60168054600160a01b60ff60a01b19909116179055601554620002c6906001600160a01b0316620002b76003620002a385600462000300602090811b620031e417901c565b6200035360201b620031841790919060201c565b6001600160e01b03620003b116565b601654620002f0906001600160a01b0316620002b783600462000300602090811b620031e417901c565b506016805460ff60a01b19169055565b60006200034a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004b460201b60201c565b90505b92915050565b60008262000364575060006200034d565b828202828482816200037257fe5b04146200034a5760405162461bcd60e51b81526004018080602001828103825260218152602001806200405e6021913960400191505060405180910390fd5b806001600160a01b0383166200040e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200042a816013546200055b60201b6200328d1790919060201c565b6013556001600160a01b038316600090815260208181526040909120546200045d9183906200328d6200055b821b17901c565b6001600160a01b0384166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3505050565b60008183620005445760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000508578181015183820152602001620004ee565b50505050905090810190601f168015620005365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200055157fe5b0495945050505050565b6000828201838110156200034a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b613a9880620005c66000396000f3fe60806040526004361061038e5760003560e01c8063779729a8116101dc578063ab2be72611610102578063dd62ed3e116100a0578063ed88c68e1161006f578063ed88c68e14610cc2578063f541ec0414610cca578063fd71ea5014610cdf578063fdc55aa814610cf45761039d565b8063dd62ed3e14610c2a578063e29e097414610c65578063ea12b54814610c98578063ebe5086814610cad5761039d565b8063bb941b6a116100dc578063bb941b6a14610b5f578063c2ea510414610b89578063ce661a4814610bc4578063d8e8a49014610bf75761039d565b8063ab2be72614610ad7578063adc4e83914610aec578063b559cf7b14610b4a5761039d565b8063955474641161017a578063a457c2d711610149578063a457c2d714610a1d578063a48724e914610a56578063a9059cbb14610a6b578063a9a1285214610aa45761039d565b8063955474641461099657806395d89b41146109c057806397be5069146109d55780639933f9ac14610a085761039d565b80637f9797e7116101b65780637f9797e7146108eb5780637fc7d7cf1461091b5780638a2a68b21461094e57806394dc3afd146109635761039d565b8063779729a81461088e57806378b78232146108a357806379ce7b26146108b85761039d565b8063313ce567116102c15780634afe28b71161025f578063653355051161022e57806365335505146107e95780636f011538146107fe57806370a082311461083157806371f8d58a146108645761039d565b80634afe28b71461074d5780634e480ba9146107625780634eeeccb91461079557806350942535146107d45761039d565b80633a7935aa1161029b5780633a7935aa146106d35780633c5d56fe1461070e5780633e3ef1621461072357806348e51e20146107385761039d565b8063313ce5671461065a578063339be50a14610685578063395093511461069a5761039d565b806318160ddd1161032e57806323b872dd1161030857806323b872dd146105d857806326519ae51461061b578063280f08e514610630578063299c66da146106455761039d565b806318160ddd146105645780631fdc97721461057957806320dc7db4146105a55761039d565b806304abe44d1161036a57806304abe44d1461040f57806306fdde0314610440578063095ea7b3146104ca5780630ef75fb6146105175761039d565b8062368297146103a2578062a634f6146103cc578063046c93c3146103e15761039d565b3661039d5761039b610d1e565b005b600080fd5b3480156103ae57600080fd5b5061039b600480360360208110156103c557600080fd5b5035610ea6565b3480156103d857600080fd5b5061039b61109c565b3480156103ed57600080fd5b506103f6611294565b6040805163ffffffff9092168252519081900360200190f35b34801561041b57600080fd5b506104246112a7565b604080516001600160a01b039092168252519081900360200190f35b34801561044c57600080fd5b506104556112b6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561048f578181015183820152602001610477565b50505050905090810190601f1680156104bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d657600080fd5b50610503600480360360408110156104ed57600080fd5b506001600160a01b0381351690602001356112dd565b604080519115158252519081900360200190f35b34801561052357600080fd5b506105526004803603604081101561053a57600080fd5b506001600160a01b03813581169160200135166112f4565b60408051918252519081900360200190f35b34801561057057600080fd5b506105526114d4565b34801561058557600080fd5b5061058e6114da565b6040805161ffff9092168252519081900360200190f35b3480156105b157600080fd5b50610552600480360360208110156105c857600080fd5b50356001600160a01b03166114eb565b3480156105e457600080fd5b50610503600480360360608110156105fb57600080fd5b506001600160a01b038135811691602081013590911690604001356114fd565b34801561062757600080fd5b5061039b61156c565b34801561063c57600080fd5b5061039b611608565b34801561065157600080fd5b506103f6611688565b34801561066657600080fd5b5061066f61169c565b6040805160ff9092168252519081900360200190f35b34801561069157600080fd5b5061039b6116a1565b3480156106a657600080fd5b50610503600480360360408110156106bd57600080fd5b506001600160a01b03813516906020013561189c565b3480156106df57600080fd5b50610503600480360360408110156106f657600080fd5b506001600160a01b03813581169160200135166118d8565b34801561071a57600080fd5b50610552611ace565b34801561072f57600080fd5b50610552611ad4565b34801561074457600080fd5b5061039b611ae4565b34801561075957600080fd5b50610424611cdf565b34801561076e57600080fd5b5061039b6004803603602081101561078557600080fd5b50356001600160a01b0316611cee565b3480156107a157600080fd5b5061039b600480360360408110156107b857600080fd5b50803563ffffffff1690602001356001600160a01b0316611d70565b3480156107e057600080fd5b50610552611e9d565b3480156107f557600080fd5b50610552611ea3565b34801561080a57600080fd5b5061039b6004803603602081101561082157600080fd5b50356001600160a01b0316611ea9565b34801561083d57600080fd5b506105526004803603602081101561085457600080fd5b50356001600160a01b0316611f72565b34801561087057600080fd5b5061039b6004803603602081101561088757600080fd5b5035611f91565b34801561089a57600080fd5b5061042461218b565b3480156108af57600080fd5b5061039b61219a565b3480156108c457600080fd5b50610552600480360360208110156108db57600080fd5b50356001600160a01b0316612235565b3480156108f757600080fd5b5061039b6004803603602081101561090e57600080fd5b503563ffffffff16612247565b34801561092757600080fd5b506105526004803603602081101561093e57600080fd5b50356001600160a01b03166122c2565b34801561095a57600080fd5b5061039b6122d4565b34801561096f57600080fd5b5061039b6004803603602081101561098657600080fd5b50356001600160a01b03166124cf565b3480156109a257600080fd5b5061039b600480360360208110156109b957600080fd5b5035612551565b3480156109cc57600080fd5b5061045561274b565b3480156109e157600080fd5b5061039b600480360360208110156109f857600080fd5b50356001600160a01b031661276b565b348015610a1457600080fd5b506103f66127ed565b348015610a2957600080fd5b5061050360048036036040811015610a4057600080fd5b506001600160a01b038135169060200135612800565b348015610a6257600080fd5b506103f6612855565b348015610a7757600080fd5b5061050360048036036040811015610a8e57600080fd5b506001600160a01b038135169060200135612868565b348015610ab057600080fd5b5061055260048036036020811015610ac757600080fd5b50356001600160a01b0316612875565b348015610ae357600080fd5b50610424612887565b348015610af857600080fd5b50610b1f60048036036020811015610b0f57600080fd5b50356001600160a01b0316612896565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610b5657600080fd5b5061039b6128c5565b348015610b6b57600080fd5b5061039b60048036036020811015610b8257600080fd5b503561295d565b348015610b9557600080fd5b5061055260048036036040811015610bac57600080fd5b506001600160a01b03813581169160200135166129bc565b348015610bd057600080fd5b5061055260048036036020811015610be757600080fd5b50356001600160a01b0316612be8565b348015610c0357600080fd5b5061039b60048036036020811015610c1a57600080fd5b50356001600160a01b0316612c67565b348015610c3657600080fd5b5061055260048036036040811015610c4d57600080fd5b506001600160a01b0381358116916020013516612ce9565b348015610c7157600080fd5b5061055260048036036020811015610c8857600080fd5b50356001600160a01b0316612d14565b348015610ca457600080fd5b50610552612ece565b348015610cb957600080fd5b5061039b612ed4565b61039b610d1e565b348015610cd657600080fd5b506103f6612f6f565b348015610ceb57600080fd5b50610424612f7b565b348015610d0057600080fd5b5061039b60048036036020811015610d1757600080fd5b5035612f8a565b60003411610d2b57600080fd5b60155460009034906001600160a01b0316610d5e6064610d5284603263ffffffff61318416565b9063ffffffff6131e416565b60405161520891906000818181858888f193505050503d8060008114610da0576040519150601f19603f3d011682016040523d82523d6000602084013e610da5565b606091505b50508092505081610def576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6016546001600160a01b0316610e116064610d5284603263ffffffff61318416565b60405161520891906000818181858888f193505050503d8060008114610e53576040519150601f19603f3d011682016040523d82523d6000602084013e610e58565b606091505b50508092505081610ea2576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b5050565b60008111610ee8576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b6002548190610eff906001600160a01b0316612d14565b1015610f40576040805162461bcd60e51b815260206004820152601b60248201526000805160206138e9833981519152604482015290519081900360640190fd5b600254610f579033906001600160a01b03166118d8565b15610f8957600254600090610f769033906001600160a01b03166129bc565b90508015610f8757610f8781613226565b505b336000908152600f6020526040902054610fa9908263ffffffff61328d16565b336000908152600f6020526040902055600b54610fcc908263ffffffff61328d16565b600b5533600081815260186020908152604080832042905560065481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b505050506040513d602081101561106457600080fd5b50506002546040805183815290516001600160a01b0390921691339160008051602061392b833981519152919081900360200190a350565b601654600160a01b900460ff16156110e7576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6016805460ff60a01b1916600160a01b179055336000908152600f60205260409020546111455760405162461bcd60e51b81526004018080602001828103825260228152602001806139096022913960400191505060405180910390fd5b336000818152600f6020526040902054600254909161116c916001600160a01b03166118d8565b1561119e5760025460009061118b9033906001600160a01b03166129bc565b9050801561119c5761119c81613226565b505b336000908152600f602090815260408083208390556018909152812055600b546111ce908263ffffffff6132e716565b600b556006546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561122557600080fd5b505af1158015611239573d6000803e3d6000fd5b505050506040513d602081101561124f57600080fd5b50506002546040805183815290516001600160a01b03909216913391600080516020613a1e833981519152919081900360200190a3506016805460ff60a01b19169055565b600954600160a01b900463ffffffff1681565b6005546001600160a01b031681565b6040518060400160405280600b81526020016a6878792e66696e616e636560a81b81525081565b60006112ea338484613329565b5060015b92915050565b6002546000906001600160a01b038381169116141561137e576001600160a01b038316600090815260186020526040902054611332575060006112ee565b6001600160a01b03831660009081526018602052604081205461136390603c90610d5290429063ffffffff6132e716565b9050600181106113745790506112ee565b60009150506112ee565b6003546001600160a01b03838116911614156113f0576001600160a01b0383166000908152601860205260409020600101546113bc575060006112ee565b6001600160a01b03831660009081526018602052604081206001015461136390603c90610d5290429063ffffffff6132e716565b6004546001600160a01b0383811691161415611462576001600160a01b03831660009081526018602052604090206002015461142e575060006112ee565b6001600160a01b03831660009081526018602052604081206002015461136390603c90610d5290429063ffffffff6132e716565b6005546001600160a01b038381169116141561039d576001600160a01b0383166000908152601860205260409020600301546114a0575060006112ee565b6001600160a01b03831660009081526018602052604081206003015461136390603c90610d5290429063ffffffff6132e716565b60135490565b600a54600160401b900461ffff1681565b600f6020526000908152604090205481565b600061150a848484613415565b611562843361155d8560405180606001604052806028815260200161396c602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919063ffffffff61357116565b613329565b5060019392505050565b336000908152601160205260409020546115bb576040805162461bcd60e51b815260206004820152601e6024820152600080516020613994833981519152604482015290519081900360640190fd5b6004546000906115d59033906001600160a01b03166129bc565b90508015611605576115e681613226565b3360009081526018602052604090204260028201556004018054820190555b50565b3360009081526017602052604090205460ff1661165b576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600a8054600261ffff600160401b808404821692909202160269ffff000000000000000019909116179055565b600a54640100000000900463ffffffff1681565b601281565b601654600160a01b900460ff16156116ec576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6016805460ff60a01b1916600160a01b1790553360009081526011602052604090205461174a5760405162461bcd60e51b81526004018080602001828103825260228152602001806139096022913960400191505060405180910390fd5b336000818152601160205260409020546004549091611771916001600160a01b03166118d8565b156117a3576004546000906117909033906001600160a01b03166129bc565b905080156117a1576117a181613226565b505b3360009081526011602090815260408083208390556018909152812060020155600d546117d6908263ffffffff6132e716565b600d556008546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561182d57600080fd5b505af1158015611841573d6000803e3d6000fd5b505050506040513d602081101561185757600080fd5b50506004546040805183815290516001600160a01b03909216913391600080516020613a1e833981519152919081900360200190a3506016805460ff60a01b19169055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916112ea91859061155d908663ffffffff61328d16565b6002546000906001600160a01b038381169116141561195a576001600160a01b038316600090815260186020526040902054611916575060006112ee565b4261195161192c603c601863ffffffff6131e416565b6001600160a01b0386166000908152601860205260409020549063ffffffff61328d16565b111590506112ee565b6003546001600160a01b03838116911614156119d6576001600160a01b038316600090815260186020526040902060010154611998575060006112ee565b426119516119ae603c601863ffffffff6131e416565b6001600160a01b0386166000908152601860205260409020600101549063ffffffff61328d16565b6004546001600160a01b0383811691161415611a52576001600160a01b038316600090815260186020526040902060020154611a14575060006112ee565b42611951611a2a603c601863ffffffff6131e416565b6001600160a01b0386166000908152601860205260409020600201549063ffffffff61328d16565b6005546001600160a01b038381169116141561039d576001600160a01b038316600090815260186020526040902060030154611a90575060006112ee565b42611951611aa6603c601863ffffffff6131e416565b6001600160a01b0386166000908152601860205260409020600301549063ffffffff61328d16565b600c5481565b6000611adf33611f72565b905090565b601654600160a01b900460ff1615611b2f576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6016805460ff60a01b1916600160a01b17905533600090815260126020526040902054611b8d5760405162461bcd60e51b81526004018080602001828103825260228152602001806139096022913960400191505060405180910390fd5b336000818152601260205260409020546005549091611bb4916001600160a01b03166118d8565b15611be657600554600090611bd39033906001600160a01b03166129bc565b90508015611be457611be481613226565b505b3360009081526012602090815260408083208390556018909152812060030155600e54611c19908263ffffffff6132e716565b600e556009546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611c7057600080fd5b505af1158015611c84573d6000803e3d6000fd5b505050506040513d6020811015611c9a57600080fd5b50506005546040805183815290516001600160a01b03909216913391600080516020613a1e833981519152919081900360200190a3506016805460ff60a01b19169055565b6004546001600160a01b031681565b3360009081526017602052604090205460ff16611d41576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600580546001600160a01b03199081166001600160a01b03938416179182905560098054929093169116179055565b3360009081526017602052604090205460ff16611dc3576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b6002546001600160a01b0382811691161415611dfc576009805463ffffffff60a01b1916600160a01b63ffffffff851602179055610ea2565b6003546001600160a01b0382811691161415611e35576009805463ffffffff60c01b1916600160c01b63ffffffff851602179055610ea2565b6004546001600160a01b0382811691161415611e6d57600980546001600160e01b0316600160e01b63ffffffff851602179055610ea2565b6005546001600160a01b038281169116141561039d57600a805463ffffffff191663ffffffff8416179055610ea2565b600e5481565b600b5481565b3360009081526017602052604090205460ff16611efc576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b6001600160a01b038116611f50576040805162461bcd60e51b815260206004820152601660248201527563616e6e6f74206265206e756c6c206164647265737360501b604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152602081905260409020545b919050565b60008111611fd3576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b6003548190611fea906001600160a01b0316612d14565b101561202b576040805162461bcd60e51b815260206004820152601b60248201526000805160206138e9833981519152604482015290519081900360640190fd5b6003546120429033906001600160a01b03166118d8565b15612074576003546000906120619033906001600160a01b03166129bc565b905080156120725761207281613226565b505b33600090815260106020526040902054612094908263ffffffff61328d16565b33600090815260106020526040902055600c546120b7908263ffffffff61328d16565b600c553360008181526018602090815260408083204260019091015560075481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b15801561212957600080fd5b505af115801561213d573d6000803e3d6000fd5b505050506040513d602081101561215357600080fd5b50506003546040805183815290516001600160a01b0390921691339160008051602061392b833981519152919081900360200190a350565b6002546001600160a01b031681565b336000908152601260205260409020546121e9576040805162461bcd60e51b815260206004820152601e6024820152600080516020613994833981519152604482015290519081900360640190fd5b6005546000906122039033906001600160a01b03166129bc565b905080156116055761221481613226565b33600090815260186020526040902042600382015560040180548201905550565b60106020526000908152604090205481565b3360009081526017602052604090205460ff1661229a576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600a805463ffffffff9092166401000000000267ffffffff0000000019909216919091179055565b60116020526000908152604090205481565b601654600160a01b900460ff161561231f576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6016805460ff60a01b1916600160a01b1790553360009081526010602052604090205461237d5760405162461bcd60e51b81526004018080602001828103825260228152602001806139096022913960400191505060405180910390fd5b3360008181526010602052604090205460035490916123a4916001600160a01b03166118d8565b156123d6576003546000906123c39033906001600160a01b03166129bc565b905080156123d4576123d481613226565b505b3360009081526010602090815260408083208390556018909152812060010155600c54612409908263ffffffff6132e716565b600c556007546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561246057600080fd5b505af1158015612474573d6000803e3d6000fd5b505050506040513d602081101561248a57600080fd5b50506003546040805183815290516001600160a01b03909216913391600080516020613a1e833981519152919081900360200190a3506016805460ff60a01b19169055565b3360009081526017602052604090205460ff16612522576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600380546001600160a01b03199081166001600160a01b03938416179182905560078054929093169116179055565b60008111612593576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b60045481906125aa906001600160a01b0316612d14565b10156125eb576040805162461bcd60e51b815260206004820152601b60248201526000805160206138e9833981519152604482015290519081900360640190fd5b6004546126029033906001600160a01b03166118d8565b15612634576004546000906126219033906001600160a01b03166129bc565b905080156126325761263281613226565b505b33600090815260116020526040902054612654908263ffffffff61328d16565b33600090815260116020526040902055600d54612677908263ffffffff61328d16565b600d553360008181526018602090815260408083204260029091015560085481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b1580156126e957600080fd5b505af11580156126fd573d6000803e3d6000fd5b505050506040513d602081101561271357600080fd5b50506004546040805183815290516001600160a01b0390921691339160008051602061392b833981519152919081900360200190a350565b60405180604001604052806004815260200163242c2ca360e11b81525081565b3360009081526017602052604090205460ff166127be576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600480546001600160a01b03199081166001600160a01b03938416179182905560088054929093169116179055565b600954600160e01b900463ffffffff1681565b60006112ea338461155d85604051806060016040528060258152602001613a3e602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919063ffffffff61357116565b600954600160c01b900463ffffffff1681565b60006112ea338484613415565b60126020526000908152604090205481565b6014546001600160a01b031681565b601860205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b336000908152600f6020526040902054612914576040805162461bcd60e51b815260206004820152601e6024820152600080516020613994833981519152604482015290519081900360640190fd5b60025460009061292e9033906001600160a01b03166129bc565b905080156116055761293f81613226565b33600090815260186020526040902042815560040180548201905550565b600081116129b2576040805162461bcd60e51b815260206004820152601c60248201527f76616c7565206d7573742062652067726561746572207468616e203000000000604482015290519081900360640190fd5b6116053382613608565b6002546000906001600160a01b0383811691161415612a5a57612a536129e284846112f4565b600954600a54612a4791600160a01b900463ffffffff90811691610d5291612a22916401000000008104821691600160401b90910461ffff16906131e416565b6001600160a01b0389166000908152600f60205260409020549063ffffffff61318416565b9063ffffffff61318416565b90506112ee565b6003546001600160a01b0383811691161415612ae257612a53612a7d84846112f4565b600954600a54612a4791600160c01b900463ffffffff90811691610d5291612abd916401000000008104821691600160401b90910461ffff16906131e416565b6001600160a01b0389166000908152601060205260409020549063ffffffff61318416565b6004546001600160a01b0383811691161415612b6a57612a53612b0584846112f4565b600954600a54612a4791600160e01b900463ffffffff90811691610d5291612b45916401000000008104821691600160401b90910461ffff16906131e416565b6001600160a01b0389166000908152601160205260409020549063ffffffff61318416565b6005546001600160a01b038381169116141561039d57612a53612b8d84846112f4565b600a54612a479063ffffffff80821691610d5291612bc3916401000000008104821691600160401b90910461ffff16906131e416565b6001600160a01b0389166000908152601260205260409020549063ffffffff61318416565b6002546000906001600160a01b0383811691161415612c0a5750600b54611f8c565b6003546001600160a01b0383811691161415612c295750600c54611f8c565b6004546001600160a01b0383811691161415612c485750600d54611f8c565b6005546001600160a01b038381169116141561039d5750600e54611f8c565b3360009081526017602052604090205460ff16612cba576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600280546001600160a01b03199081166001600160a01b03938416179182905560068054929093169116179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6002546000906001600160a01b0383811691161415612dab57600654604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612d7857600080fd5b505afa158015612d8c573d6000803e3d6000fd5b505050506040513d6020811015612da257600080fd5b50519050611f8c565b6003546001600160a01b0383811691161415612e0c57600754604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612d7857600080fd5b6004546001600160a01b0383811691161415612e6d57600854604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612d7857600080fd5b6005546001600160a01b038381169116141561039d57600954604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612d7857600080fd5b600d5481565b33600090815260106020526040902054612f23576040805162461bcd60e51b815260206004820152601e6024820152600080516020613994833981519152604482015290519081900360640190fd5b600354600090612f3d9033906001600160a01b03166129bc565b9050801561160557612f4e81613226565b33600090815260186020526040902042600182015560040180548201905550565b600a5463ffffffff1681565b6003546001600160a01b031681565b60008111612fcc576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b6005548190612fe3906001600160a01b0316612d14565b1015613024576040805162461bcd60e51b815260206004820152601b60248201526000805160206138e9833981519152604482015290519081900360640190fd5b60055461303b9033906001600160a01b03166118d8565b1561306d5760055460009061305a9033906001600160a01b03166129bc565b9050801561306b5761306b81613226565b505b3360009081526012602052604090205461308d908263ffffffff61328d16565b33600090815260126020526040902055600e546130b0908263ffffffff61328d16565b600e553360008181526018602090815260408083204260039091015560095481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b15801561312257600080fd5b505af1158015613136573d6000803e3d6000fd5b505050506040513d602081101561314c57600080fd5b50506005546040805183815290516001600160a01b0390921691339160008051602061392b833981519152919081900360200190a350565b600082613193575060006112ee565b828202828482816131a057fe5b04146131dd5760405162461bcd60e51b815260040180806020018281038252602181526020018061394b6021913960400191505060405180910390fd5b9392505050565b60006131dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613704565b6132303382613769565b601454613246906001600160a01b031682613769565b60155461326c906001600160a01b031661326783600263ffffffff6131e416565b613769565b601654611605906001600160a01b031661326783600263ffffffff6131e416565b6000828201838110156131dd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006131dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613571565b6001600160a01b03831661336e5760405162461bcd60e51b81526004018080602001828103825260248152602001806139fa6024913960400191505060405180910390fd5b6001600160a01b0382166133b35760405162461bcd60e51b81526004018080602001828103825260228152602001806138a16022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661345a5760405162461bcd60e51b81526004018080602001828103825260258152602001806139d56025913960400191505060405180910390fd5b6001600160a01b03821661349f5760405162461bcd60e51b815260040180806020018281038252602381526020018061385c6023913960400191505060405180910390fd5b6134e2816040518060600160405280602681526020016138c3602691396001600160a01b038616600090815260208190526040902054919063ffffffff61357116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613517908263ffffffff61328d16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156136005760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135c55781810151838201526020016135ad565b50505050905090810190601f1680156135f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661364d5760405162461bcd60e51b81526004018080602001828103825260218152602001806139b46021913960400191505060405180910390fd5b6136908160405180606001604052806022815260200161387f602291396001600160a01b038516600090815260208190526040902054919063ffffffff61357116565b6001600160a01b0383166000908152602081905260409020556013546136bc908263ffffffff6132e716565b6013556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600081836137535760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156135c55781810151838201526020016135ad565b50600083858161375f57fe5b0495945050505050565b806001600160a01b0383166137c5576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6013546137d8908263ffffffff61328d16565b6013556001600160a01b038316600090815260208190526040902054613804908263ffffffff61328d16565b6001600160a01b0384166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654572726f723a20696e73756666696369656e742062616c616e636500000000004572726f723a20756e73756666696369656e742066726f7a656e2062616c616e63659906ed6ec4aa37dfaa9b57baf07edc95b1b30177014fafe01ad392fad7bf2ad0536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654572726f723a20756e73756666696369656e74206c702062616c616e6365000045524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573738b7f550fa49ced3562307f955ad50148ad3159d7e14b9cf04ec8b27c910f8e1f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220411ea232de9efa4982a0a4916b00985d0d9a72539092d8aeb4675a7f5cae281064736f6c63430006040033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77000000000000000000000000000000000000000000084595161401484a000000
Deployed Bytecode
0x60806040526004361061038e5760003560e01c8063779729a8116101dc578063ab2be72611610102578063dd62ed3e116100a0578063ed88c68e1161006f578063ed88c68e14610cc2578063f541ec0414610cca578063fd71ea5014610cdf578063fdc55aa814610cf45761039d565b8063dd62ed3e14610c2a578063e29e097414610c65578063ea12b54814610c98578063ebe5086814610cad5761039d565b8063bb941b6a116100dc578063bb941b6a14610b5f578063c2ea510414610b89578063ce661a4814610bc4578063d8e8a49014610bf75761039d565b8063ab2be72614610ad7578063adc4e83914610aec578063b559cf7b14610b4a5761039d565b8063955474641161017a578063a457c2d711610149578063a457c2d714610a1d578063a48724e914610a56578063a9059cbb14610a6b578063a9a1285214610aa45761039d565b8063955474641461099657806395d89b41146109c057806397be5069146109d55780639933f9ac14610a085761039d565b80637f9797e7116101b65780637f9797e7146108eb5780637fc7d7cf1461091b5780638a2a68b21461094e57806394dc3afd146109635761039d565b8063779729a81461088e57806378b78232146108a357806379ce7b26146108b85761039d565b8063313ce567116102c15780634afe28b71161025f578063653355051161022e57806365335505146107e95780636f011538146107fe57806370a082311461083157806371f8d58a146108645761039d565b80634afe28b71461074d5780634e480ba9146107625780634eeeccb91461079557806350942535146107d45761039d565b80633a7935aa1161029b5780633a7935aa146106d35780633c5d56fe1461070e5780633e3ef1621461072357806348e51e20146107385761039d565b8063313ce5671461065a578063339be50a14610685578063395093511461069a5761039d565b806318160ddd1161032e57806323b872dd1161030857806323b872dd146105d857806326519ae51461061b578063280f08e514610630578063299c66da146106455761039d565b806318160ddd146105645780631fdc97721461057957806320dc7db4146105a55761039d565b806304abe44d1161036a57806304abe44d1461040f57806306fdde0314610440578063095ea7b3146104ca5780630ef75fb6146105175761039d565b8062368297146103a2578062a634f6146103cc578063046c93c3146103e15761039d565b3661039d5761039b610d1e565b005b600080fd5b3480156103ae57600080fd5b5061039b600480360360208110156103c557600080fd5b5035610ea6565b3480156103d857600080fd5b5061039b61109c565b3480156103ed57600080fd5b506103f6611294565b6040805163ffffffff9092168252519081900360200190f35b34801561041b57600080fd5b506104246112a7565b604080516001600160a01b039092168252519081900360200190f35b34801561044c57600080fd5b506104556112b6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561048f578181015183820152602001610477565b50505050905090810190601f1680156104bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d657600080fd5b50610503600480360360408110156104ed57600080fd5b506001600160a01b0381351690602001356112dd565b604080519115158252519081900360200190f35b34801561052357600080fd5b506105526004803603604081101561053a57600080fd5b506001600160a01b03813581169160200135166112f4565b60408051918252519081900360200190f35b34801561057057600080fd5b506105526114d4565b34801561058557600080fd5b5061058e6114da565b6040805161ffff9092168252519081900360200190f35b3480156105b157600080fd5b50610552600480360360208110156105c857600080fd5b50356001600160a01b03166114eb565b3480156105e457600080fd5b50610503600480360360608110156105fb57600080fd5b506001600160a01b038135811691602081013590911690604001356114fd565b34801561062757600080fd5b5061039b61156c565b34801561063c57600080fd5b5061039b611608565b34801561065157600080fd5b506103f6611688565b34801561066657600080fd5b5061066f61169c565b6040805160ff9092168252519081900360200190f35b34801561069157600080fd5b5061039b6116a1565b3480156106a657600080fd5b50610503600480360360408110156106bd57600080fd5b506001600160a01b03813516906020013561189c565b3480156106df57600080fd5b50610503600480360360408110156106f657600080fd5b506001600160a01b03813581169160200135166118d8565b34801561071a57600080fd5b50610552611ace565b34801561072f57600080fd5b50610552611ad4565b34801561074457600080fd5b5061039b611ae4565b34801561075957600080fd5b50610424611cdf565b34801561076e57600080fd5b5061039b6004803603602081101561078557600080fd5b50356001600160a01b0316611cee565b3480156107a157600080fd5b5061039b600480360360408110156107b857600080fd5b50803563ffffffff1690602001356001600160a01b0316611d70565b3480156107e057600080fd5b50610552611e9d565b3480156107f557600080fd5b50610552611ea3565b34801561080a57600080fd5b5061039b6004803603602081101561082157600080fd5b50356001600160a01b0316611ea9565b34801561083d57600080fd5b506105526004803603602081101561085457600080fd5b50356001600160a01b0316611f72565b34801561087057600080fd5b5061039b6004803603602081101561088757600080fd5b5035611f91565b34801561089a57600080fd5b5061042461218b565b3480156108af57600080fd5b5061039b61219a565b3480156108c457600080fd5b50610552600480360360208110156108db57600080fd5b50356001600160a01b0316612235565b3480156108f757600080fd5b5061039b6004803603602081101561090e57600080fd5b503563ffffffff16612247565b34801561092757600080fd5b506105526004803603602081101561093e57600080fd5b50356001600160a01b03166122c2565b34801561095a57600080fd5b5061039b6122d4565b34801561096f57600080fd5b5061039b6004803603602081101561098657600080fd5b50356001600160a01b03166124cf565b3480156109a257600080fd5b5061039b600480360360208110156109b957600080fd5b5035612551565b3480156109cc57600080fd5b5061045561274b565b3480156109e157600080fd5b5061039b600480360360208110156109f857600080fd5b50356001600160a01b031661276b565b348015610a1457600080fd5b506103f66127ed565b348015610a2957600080fd5b5061050360048036036040811015610a4057600080fd5b506001600160a01b038135169060200135612800565b348015610a6257600080fd5b506103f6612855565b348015610a7757600080fd5b5061050360048036036040811015610a8e57600080fd5b506001600160a01b038135169060200135612868565b348015610ab057600080fd5b5061055260048036036020811015610ac757600080fd5b50356001600160a01b0316612875565b348015610ae357600080fd5b50610424612887565b348015610af857600080fd5b50610b1f60048036036020811015610b0f57600080fd5b50356001600160a01b0316612896565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610b5657600080fd5b5061039b6128c5565b348015610b6b57600080fd5b5061039b60048036036020811015610b8257600080fd5b503561295d565b348015610b9557600080fd5b5061055260048036036040811015610bac57600080fd5b506001600160a01b03813581169160200135166129bc565b348015610bd057600080fd5b5061055260048036036020811015610be757600080fd5b50356001600160a01b0316612be8565b348015610c0357600080fd5b5061039b60048036036020811015610c1a57600080fd5b50356001600160a01b0316612c67565b348015610c3657600080fd5b5061055260048036036040811015610c4d57600080fd5b506001600160a01b0381358116916020013516612ce9565b348015610c7157600080fd5b5061055260048036036020811015610c8857600080fd5b50356001600160a01b0316612d14565b348015610ca457600080fd5b50610552612ece565b348015610cb957600080fd5b5061039b612ed4565b61039b610d1e565b348015610cd657600080fd5b506103f6612f6f565b348015610ceb57600080fd5b50610424612f7b565b348015610d0057600080fd5b5061039b60048036036020811015610d1757600080fd5b5035612f8a565b60003411610d2b57600080fd5b60155460009034906001600160a01b0316610d5e6064610d5284603263ffffffff61318416565b9063ffffffff6131e416565b60405161520891906000818181858888f193505050503d8060008114610da0576040519150601f19603f3d011682016040523d82523d6000602084013e610da5565b606091505b50508092505081610def576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6016546001600160a01b0316610e116064610d5284603263ffffffff61318416565b60405161520891906000818181858888f193505050503d8060008114610e53576040519150601f19603f3d011682016040523d82523d6000602084013e610e58565b606091505b50508092505081610ea2576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b5050565b60008111610ee8576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b6002548190610eff906001600160a01b0316612d14565b1015610f40576040805162461bcd60e51b815260206004820152601b60248201526000805160206138e9833981519152604482015290519081900360640190fd5b600254610f579033906001600160a01b03166118d8565b15610f8957600254600090610f769033906001600160a01b03166129bc565b90508015610f8757610f8781613226565b505b336000908152600f6020526040902054610fa9908263ffffffff61328d16565b336000908152600f6020526040902055600b54610fcc908263ffffffff61328d16565b600b5533600081815260186020908152604080832042905560065481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b505050506040513d602081101561106457600080fd5b50506002546040805183815290516001600160a01b0390921691339160008051602061392b833981519152919081900360200190a350565b601654600160a01b900460ff16156110e7576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6016805460ff60a01b1916600160a01b179055336000908152600f60205260409020546111455760405162461bcd60e51b81526004018080602001828103825260228152602001806139096022913960400191505060405180910390fd5b336000818152600f6020526040902054600254909161116c916001600160a01b03166118d8565b1561119e5760025460009061118b9033906001600160a01b03166129bc565b9050801561119c5761119c81613226565b505b336000908152600f602090815260408083208390556018909152812055600b546111ce908263ffffffff6132e716565b600b556006546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561122557600080fd5b505af1158015611239573d6000803e3d6000fd5b505050506040513d602081101561124f57600080fd5b50506002546040805183815290516001600160a01b03909216913391600080516020613a1e833981519152919081900360200190a3506016805460ff60a01b19169055565b600954600160a01b900463ffffffff1681565b6005546001600160a01b031681565b6040518060400160405280600b81526020016a6878792e66696e616e636560a81b81525081565b60006112ea338484613329565b5060015b92915050565b6002546000906001600160a01b038381169116141561137e576001600160a01b038316600090815260186020526040902054611332575060006112ee565b6001600160a01b03831660009081526018602052604081205461136390603c90610d5290429063ffffffff6132e716565b9050600181106113745790506112ee565b60009150506112ee565b6003546001600160a01b03838116911614156113f0576001600160a01b0383166000908152601860205260409020600101546113bc575060006112ee565b6001600160a01b03831660009081526018602052604081206001015461136390603c90610d5290429063ffffffff6132e716565b6004546001600160a01b0383811691161415611462576001600160a01b03831660009081526018602052604090206002015461142e575060006112ee565b6001600160a01b03831660009081526018602052604081206002015461136390603c90610d5290429063ffffffff6132e716565b6005546001600160a01b038381169116141561039d576001600160a01b0383166000908152601860205260409020600301546114a0575060006112ee565b6001600160a01b03831660009081526018602052604081206003015461136390603c90610d5290429063ffffffff6132e716565b60135490565b600a54600160401b900461ffff1681565b600f6020526000908152604090205481565b600061150a848484613415565b611562843361155d8560405180606001604052806028815260200161396c602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919063ffffffff61357116565b613329565b5060019392505050565b336000908152601160205260409020546115bb576040805162461bcd60e51b815260206004820152601e6024820152600080516020613994833981519152604482015290519081900360640190fd5b6004546000906115d59033906001600160a01b03166129bc565b90508015611605576115e681613226565b3360009081526018602052604090204260028201556004018054820190555b50565b3360009081526017602052604090205460ff1661165b576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600a8054600261ffff600160401b808404821692909202160269ffff000000000000000019909116179055565b600a54640100000000900463ffffffff1681565b601281565b601654600160a01b900460ff16156116ec576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6016805460ff60a01b1916600160a01b1790553360009081526011602052604090205461174a5760405162461bcd60e51b81526004018080602001828103825260228152602001806139096022913960400191505060405180910390fd5b336000818152601160205260409020546004549091611771916001600160a01b03166118d8565b156117a3576004546000906117909033906001600160a01b03166129bc565b905080156117a1576117a181613226565b505b3360009081526011602090815260408083208390556018909152812060020155600d546117d6908263ffffffff6132e716565b600d556008546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561182d57600080fd5b505af1158015611841573d6000803e3d6000fd5b505050506040513d602081101561185757600080fd5b50506004546040805183815290516001600160a01b03909216913391600080516020613a1e833981519152919081900360200190a3506016805460ff60a01b19169055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916112ea91859061155d908663ffffffff61328d16565b6002546000906001600160a01b038381169116141561195a576001600160a01b038316600090815260186020526040902054611916575060006112ee565b4261195161192c603c601863ffffffff6131e416565b6001600160a01b0386166000908152601860205260409020549063ffffffff61328d16565b111590506112ee565b6003546001600160a01b03838116911614156119d6576001600160a01b038316600090815260186020526040902060010154611998575060006112ee565b426119516119ae603c601863ffffffff6131e416565b6001600160a01b0386166000908152601860205260409020600101549063ffffffff61328d16565b6004546001600160a01b0383811691161415611a52576001600160a01b038316600090815260186020526040902060020154611a14575060006112ee565b42611951611a2a603c601863ffffffff6131e416565b6001600160a01b0386166000908152601860205260409020600201549063ffffffff61328d16565b6005546001600160a01b038381169116141561039d576001600160a01b038316600090815260186020526040902060030154611a90575060006112ee565b42611951611aa6603c601863ffffffff6131e416565b6001600160a01b0386166000908152601860205260409020600301549063ffffffff61328d16565b600c5481565b6000611adf33611f72565b905090565b601654600160a01b900460ff1615611b2f576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6016805460ff60a01b1916600160a01b17905533600090815260126020526040902054611b8d5760405162461bcd60e51b81526004018080602001828103825260228152602001806139096022913960400191505060405180910390fd5b336000818152601260205260409020546005549091611bb4916001600160a01b03166118d8565b15611be657600554600090611bd39033906001600160a01b03166129bc565b90508015611be457611be481613226565b505b3360009081526012602090815260408083208390556018909152812060030155600e54611c19908263ffffffff6132e716565b600e556009546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611c7057600080fd5b505af1158015611c84573d6000803e3d6000fd5b505050506040513d6020811015611c9a57600080fd5b50506005546040805183815290516001600160a01b03909216913391600080516020613a1e833981519152919081900360200190a3506016805460ff60a01b19169055565b6004546001600160a01b031681565b3360009081526017602052604090205460ff16611d41576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600580546001600160a01b03199081166001600160a01b03938416179182905560098054929093169116179055565b3360009081526017602052604090205460ff16611dc3576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b6002546001600160a01b0382811691161415611dfc576009805463ffffffff60a01b1916600160a01b63ffffffff851602179055610ea2565b6003546001600160a01b0382811691161415611e35576009805463ffffffff60c01b1916600160c01b63ffffffff851602179055610ea2565b6004546001600160a01b0382811691161415611e6d57600980546001600160e01b0316600160e01b63ffffffff851602179055610ea2565b6005546001600160a01b038281169116141561039d57600a805463ffffffff191663ffffffff8416179055610ea2565b600e5481565b600b5481565b3360009081526017602052604090205460ff16611efc576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b6001600160a01b038116611f50576040805162461bcd60e51b815260206004820152601660248201527563616e6e6f74206265206e756c6c206164647265737360501b604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152602081905260409020545b919050565b60008111611fd3576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b6003548190611fea906001600160a01b0316612d14565b101561202b576040805162461bcd60e51b815260206004820152601b60248201526000805160206138e9833981519152604482015290519081900360640190fd5b6003546120429033906001600160a01b03166118d8565b15612074576003546000906120619033906001600160a01b03166129bc565b905080156120725761207281613226565b505b33600090815260106020526040902054612094908263ffffffff61328d16565b33600090815260106020526040902055600c546120b7908263ffffffff61328d16565b600c553360008181526018602090815260408083204260019091015560075481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b15801561212957600080fd5b505af115801561213d573d6000803e3d6000fd5b505050506040513d602081101561215357600080fd5b50506003546040805183815290516001600160a01b0390921691339160008051602061392b833981519152919081900360200190a350565b6002546001600160a01b031681565b336000908152601260205260409020546121e9576040805162461bcd60e51b815260206004820152601e6024820152600080516020613994833981519152604482015290519081900360640190fd5b6005546000906122039033906001600160a01b03166129bc565b905080156116055761221481613226565b33600090815260186020526040902042600382015560040180548201905550565b60106020526000908152604090205481565b3360009081526017602052604090205460ff1661229a576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600a805463ffffffff9092166401000000000267ffffffff0000000019909216919091179055565b60116020526000908152604090205481565b601654600160a01b900460ff161561231f576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6016805460ff60a01b1916600160a01b1790553360009081526010602052604090205461237d5760405162461bcd60e51b81526004018080602001828103825260228152602001806139096022913960400191505060405180910390fd5b3360008181526010602052604090205460035490916123a4916001600160a01b03166118d8565b156123d6576003546000906123c39033906001600160a01b03166129bc565b905080156123d4576123d481613226565b505b3360009081526010602090815260408083208390556018909152812060010155600c54612409908263ffffffff6132e716565b600c556007546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561246057600080fd5b505af1158015612474573d6000803e3d6000fd5b505050506040513d602081101561248a57600080fd5b50506003546040805183815290516001600160a01b03909216913391600080516020613a1e833981519152919081900360200190a3506016805460ff60a01b19169055565b3360009081526017602052604090205460ff16612522576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600380546001600160a01b03199081166001600160a01b03938416179182905560078054929093169116179055565b60008111612593576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b60045481906125aa906001600160a01b0316612d14565b10156125eb576040805162461bcd60e51b815260206004820152601b60248201526000805160206138e9833981519152604482015290519081900360640190fd5b6004546126029033906001600160a01b03166118d8565b15612634576004546000906126219033906001600160a01b03166129bc565b905080156126325761263281613226565b505b33600090815260116020526040902054612654908263ffffffff61328d16565b33600090815260116020526040902055600d54612677908263ffffffff61328d16565b600d553360008181526018602090815260408083204260029091015560085481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b1580156126e957600080fd5b505af11580156126fd573d6000803e3d6000fd5b505050506040513d602081101561271357600080fd5b50506004546040805183815290516001600160a01b0390921691339160008051602061392b833981519152919081900360200190a350565b60405180604001604052806004815260200163242c2ca360e11b81525081565b3360009081526017602052604090205460ff166127be576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600480546001600160a01b03199081166001600160a01b03938416179182905560088054929093169116179055565b600954600160e01b900463ffffffff1681565b60006112ea338461155d85604051806060016040528060258152602001613a3e602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919063ffffffff61357116565b600954600160c01b900463ffffffff1681565b60006112ea338484613415565b60126020526000908152604090205481565b6014546001600160a01b031681565b601860205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b336000908152600f6020526040902054612914576040805162461bcd60e51b815260206004820152601e6024820152600080516020613994833981519152604482015290519081900360640190fd5b60025460009061292e9033906001600160a01b03166129bc565b905080156116055761293f81613226565b33600090815260186020526040902042815560040180548201905550565b600081116129b2576040805162461bcd60e51b815260206004820152601c60248201527f76616c7565206d7573742062652067726561746572207468616e203000000000604482015290519081900360640190fd5b6116053382613608565b6002546000906001600160a01b0383811691161415612a5a57612a536129e284846112f4565b600954600a54612a4791600160a01b900463ffffffff90811691610d5291612a22916401000000008104821691600160401b90910461ffff16906131e416565b6001600160a01b0389166000908152600f60205260409020549063ffffffff61318416565b9063ffffffff61318416565b90506112ee565b6003546001600160a01b0383811691161415612ae257612a53612a7d84846112f4565b600954600a54612a4791600160c01b900463ffffffff90811691610d5291612abd916401000000008104821691600160401b90910461ffff16906131e416565b6001600160a01b0389166000908152601060205260409020549063ffffffff61318416565b6004546001600160a01b0383811691161415612b6a57612a53612b0584846112f4565b600954600a54612a4791600160e01b900463ffffffff90811691610d5291612b45916401000000008104821691600160401b90910461ffff16906131e416565b6001600160a01b0389166000908152601160205260409020549063ffffffff61318416565b6005546001600160a01b038381169116141561039d57612a53612b8d84846112f4565b600a54612a479063ffffffff80821691610d5291612bc3916401000000008104821691600160401b90910461ffff16906131e416565b6001600160a01b0389166000908152601260205260409020549063ffffffff61318416565b6002546000906001600160a01b0383811691161415612c0a5750600b54611f8c565b6003546001600160a01b0383811691161415612c295750600c54611f8c565b6004546001600160a01b0383811691161415612c485750600d54611f8c565b6005546001600160a01b038381169116141561039d5750600e54611f8c565b3360009081526017602052604090205460ff16612cba576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600280546001600160a01b03199081166001600160a01b03938416179182905560068054929093169116179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6002546000906001600160a01b0383811691161415612dab57600654604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612d7857600080fd5b505afa158015612d8c573d6000803e3d6000fd5b505050506040513d6020811015612da257600080fd5b50519050611f8c565b6003546001600160a01b0383811691161415612e0c57600754604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612d7857600080fd5b6004546001600160a01b0383811691161415612e6d57600854604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612d7857600080fd5b6005546001600160a01b038381169116141561039d57600954604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612d7857600080fd5b600d5481565b33600090815260106020526040902054612f23576040805162461bcd60e51b815260206004820152601e6024820152600080516020613994833981519152604482015290519081900360640190fd5b600354600090612f3d9033906001600160a01b03166129bc565b9050801561160557612f4e81613226565b33600090815260186020526040902042600182015560040180548201905550565b600a5463ffffffff1681565b6003546001600160a01b031681565b60008111612fcc576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b6005548190612fe3906001600160a01b0316612d14565b1015613024576040805162461bcd60e51b815260206004820152601b60248201526000805160206138e9833981519152604482015290519081900360640190fd5b60055461303b9033906001600160a01b03166118d8565b1561306d5760055460009061305a9033906001600160a01b03166129bc565b9050801561306b5761306b81613226565b505b3360009081526012602052604090205461308d908263ffffffff61328d16565b33600090815260126020526040902055600e546130b0908263ffffffff61328d16565b600e553360008181526018602090815260408083204260039091015560095481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b15801561312257600080fd5b505af1158015613136573d6000803e3d6000fd5b505050506040513d602081101561314c57600080fd5b50506005546040805183815290516001600160a01b0390921691339160008051602061392b833981519152919081900360200190a350565b600082613193575060006112ee565b828202828482816131a057fe5b04146131dd5760405162461bcd60e51b815260040180806020018281038252602181526020018061394b6021913960400191505060405180910390fd5b9392505050565b60006131dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613704565b6132303382613769565b601454613246906001600160a01b031682613769565b60155461326c906001600160a01b031661326783600263ffffffff6131e416565b613769565b601654611605906001600160a01b031661326783600263ffffffff6131e416565b6000828201838110156131dd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006131dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613571565b6001600160a01b03831661336e5760405162461bcd60e51b81526004018080602001828103825260248152602001806139fa6024913960400191505060405180910390fd5b6001600160a01b0382166133b35760405162461bcd60e51b81526004018080602001828103825260228152602001806138a16022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661345a5760405162461bcd60e51b81526004018080602001828103825260258152602001806139d56025913960400191505060405180910390fd5b6001600160a01b03821661349f5760405162461bcd60e51b815260040180806020018281038252602381526020018061385c6023913960400191505060405180910390fd5b6134e2816040518060600160405280602681526020016138c3602691396001600160a01b038616600090815260208190526040902054919063ffffffff61357116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613517908263ffffffff61328d16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156136005760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135c55781810151838201526020016135ad565b50505050905090810190601f1680156135f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661364d5760405162461bcd60e51b81526004018080602001828103825260218152602001806139b46021913960400191505060405180910390fd5b6136908160405180606001604052806022815260200161387f602291396001600160a01b038516600090815260208190526040902054919063ffffffff61357116565b6001600160a01b0383166000908152602081905260409020556013546136bc908263ffffffff6132e716565b6013556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600081836137535760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156135c55781810151838201526020016135ad565b50600083858161375f57fe5b0495945050505050565b806001600160a01b0383166137c5576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6013546137d8908263ffffffff61328d16565b6013556001600160a01b038316600090815260208190526040902054613804908263ffffffff61328d16565b6001600160a01b0384166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654572726f723a20696e73756666696369656e742062616c616e636500000000004572726f723a20756e73756666696369656e742066726f7a656e2062616c616e63659906ed6ec4aa37dfaa9b57baf07edc95b1b30177014fafe01ad392fad7bf2ad0536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654572726f723a20756e73756666696369656e74206c702062616c616e6365000045524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573738b7f550fa49ced3562307f955ad50148ad3159d7e14b9cf04ec8b27c910f8e1f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220411ea232de9efa4982a0a4916b00985d0d9a72539092d8aeb4675a7f5cae281064736f6c63430006040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000084595161401484a000000
-----Decoded View---------------
Arg [0] : initialTokens (uint256): 10000000000000000000000000
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000084595161401484a000000
Deployed Bytecode Sourcemap
5754:28270:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9034:8;:6;:8::i;:::-;5754:28270;;12:1:-1;9;2:12;16978:809:1;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16978:809:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16978:809:1;;:::i;17847:773::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17847:773:1;;;:::i;6794:27::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6794:27:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6380:78;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6380:78:1;;;:::i;:::-;;;;-1:-1:-1;;;;;6380:78:1;;;;;;;;;;;;;;7720:43;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7720:43:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7720:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10134:159;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10134:159:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;10134:159:1;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;26881:1857;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26881:1857:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;26881:1857:1;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9121:100;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9121:100:1;;;:::i;6964:27::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6964:27:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7250:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7250:53:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7250:53:1;-1:-1:-1;;;;;7250:53:1;;:::i;10772:309::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10772:309:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;10772:309:1;;;;;;;;;;;;;;;;;:::i;24936:441::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24936:441:1;;;:::i;29029:112::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29029:112:1;;;:::i;6928:29::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6928:29:1;;;:::i;7815:35::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7815:35:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21240:762;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21240:762:1;;;:::i;11490:206::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11490:206:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;11490:206:1;;;;;;;;:::i;32276:1312::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32276:1312:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;32276:1312:1;;;;;;;;;;:::i;7118:35::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7118:35:1;;;:::i;31466:132::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31466:132:1;;;:::i;22931:762::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22931:762:1;;;:::i;6295:78::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6295:78:1;;;:::i;30589:179::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30589:179:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30589:179:1;-1:-1:-1;;;;;30589:179:1;;:::i;29277:437::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29277:437:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29277:437:1;;;;;;;;-1:-1:-1;;;;;29277:437:1;;:::i;7202:35::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7202:35:1;;;:::i;7075:36::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7075:36:1;;;:::i;29778:232::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29778:232:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29778:232:1;-1:-1:-1;;;;;29778:232:1;;:::i;9284:119::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9284:119:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9284:119:1;-1:-1:-1;;;;;9284:119:1;;:::i;18692:798::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18692:798:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18692:798:1;;:::i;6165:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6165:38:1;;;:::i;25420:441::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25420:441:1;;;:::i;7355:52::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7355:52:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7355:52:1;-1:-1:-1;;;;;7355:52:1;;:::i;29149:116::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29149:116:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29149:116:1;;;;:::i;7458:52::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7458:52:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7458:52:1;-1:-1:-1;;;;;7458:52:1;;:::i;19549:762::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19549:762:1;;;:::i;30211:179::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30211:179:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30211:179:1;-1:-1:-1;;;;;30211:179:1;;:::i;20383:798::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20383:798:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20383:798:1;;:::i;7770:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7770:38:1;;;:::i;30400:179::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30400:179:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30400:179:1;-1:-1:-1;;;;;30400:179:1;;:::i;6861:26::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6861:26:1;;;:::i;12199:257::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12199:257:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;12199:257:1;;;;;;;;:::i;6828:26::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6828:26:1;;;:::i;9616:165::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9616:165:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;9616:165:1;;;;;;;;:::i;7561:52::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7561:52:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7561:52:1;-1:-1:-1;;;;;7561:52:1;;:::i;7887:51::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7887:51:1;;;:::i;8200:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8200:41:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8200:41:1;-1:-1:-1;;;;;8200:41:1;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23960:445;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23960:445:1;;;:::i;28750:149::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28750:149:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28750:149:1;;:::i;25907:881::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25907:881:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;25907:881:1;;;;;;;;;;:::i;30929:499::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30929:499:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30929:499:1;-1:-1:-1;;;;;30929:499:1;;:::i;30018:183::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30018:183:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30018:183:1;-1:-1:-1;;;;;30018:183:1;;:::i;9844:143::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9844:143:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;9844:143:1;;;;;;;;;;:::i;31638:588::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31638:588:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;31638:588:1;-1:-1:-1;;;;;31638:588:1;;:::i;7160:35::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7160:35:1;;;:::i;24452:441::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24452:441:1;;;:::i;33600:419::-;;;:::i;6894:27::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6894:27:1;;;:::i;6210:78::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6210:78:1;;;:::i;22074:798::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22074:798:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22074:798:1;;:::i;33600:419::-;33664:1;33652:9;:13;33644:22;;12:1:-1;9;2:12;33644:22:1;33783:3;;33677:12;;33726:9;;-1:-1:-1;;;;;33783:3:1;33798:24;33818:3;33798:15;33726:9;33810:2;33798:15;:11;:15;:::i;:::-;:19;:24;:19;:24;:::i;:::-;33783:55;;33828:5;;33783:55;;;;;;;33828:5;33783:55;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;33768:70:1;;;;;33857:7;33849:35;;;;;-1:-1:-1;;;33849:35:1;;;;;;;;;;;;-1:-1:-1;;;33849:35:1;;;;;;;;;;;;;;;33910:3;;-1:-1:-1;;;;;33910:3:1;33925:24;33945:3;33925:15;:7;33937:2;33925:15;:11;:15;:::i;:24::-;33910:55;;33955:5;;33910:55;;;;;;;33955:5;33910:55;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;33895:70:1;;;;;33984:7;33976:35;;;;;-1:-1:-1;;;33976:35:1;;;;;;;;;;;;-1:-1:-1;;;33976:35:1;;;;;;;;;;;;;;;33600:419;;:::o;16978:809::-;17059:1;17053:3;:7;17045:30;;;;;-1:-1:-1;;;17045:30:1;;;;;;;;;;;;-1:-1:-1;;;17045:30:1;;;;;;;;;;;;;;;17104:10;;17119:3;;17094:21;;-1:-1:-1;;;;;17104:10:1;17094:9;:21::i;:::-;:28;;17086:68;;;;;-1:-1:-1;;;17086:68:1;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17086:68:1;;;;;;;;;;;;;;;17224:10;;17198:37;;17212:10;;-1:-1:-1;;;;;17224:10:1;17198:13;:37::i;:::-;17195:211;;;17301:10;;17251:16;;17270:42;;17289:10;;-1:-1:-1;;;;;17301:10:1;17270:18;:42::i;:::-;17251:61;-1:-1:-1;17330:12:1;;17327:68;;17362:17;17370:8;17362:7;:17::i;:::-;17195:211;;17499:10;17478:32;;;;:20;:32;;;;;;:41;;17515:3;17478:41;:36;:41;:::i;:::-;17464:10;17443:32;;;;:20;:32;;;;;:76;17550:17;;:26;;17572:3;17550:26;:21;:26;:::i;:::-;17530:17;:46;17594:10;17587:18;;;;:6;:18;;;;;;;;17633:3;17587:49;;17647:19;;:64;;-1:-1:-1;;;17647:64:1;;;;;;;;;17700:4;17647:64;;;;;;;;;;;;-1:-1:-1;;;;;17647:19:1;;;;:32;;:64;;;;;17587:18;17647:64;;;;;;;;:19;:64;;;2:2:-1;;;;27:1;24;17:12;2:2;17647:64:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17647:64:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17768:10:1;;17742:37;;;;;;;;-1:-1:-1;;;;;17768:10:1;;;;17751;;-1:-1:-1;;;;;;;;;;;17742:37:1;;;;;17647:64;17742:37;;;16978:809;:::o;17847:773::-;8678:4;;-1:-1:-1;;;8678:4:1;;;;8677:5;8669:27;;;;;-1:-1:-1;;;8669:27:1;;;;;;;;;;;;-1:-1:-1;;;8669:27:1;;;;;;;;;;;;;;;8707:4;:11;;-1:-1:-1;;;;8707:11:1;-1:-1:-1;;;8707:11:1;;;17959:10:::1;8707:11:::0;17938:32;;;:20:::1;:32;::::0;;;;;17930:82:::1;;;;-1:-1:-1::0;;;17930:82:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18092:10;18060:8;18071:32:::0;;;:20:::1;:32;::::0;;;;;18143:10:::1;::::0;18071:32;;18117:37:::1;::::0;-1:-1:-1;;;;;18143:10:1::1;18117:13;:37::i;:::-;18114:211;;;18220:10;::::0;18170:16:::1;::::0;18189:42:::1;::::0;18208:10:::1;::::0;-1:-1:-1;;;;;18220:10:1::1;18189:18;:42::i;:::-;18170:61:::0;-1:-1:-1;18249:12:1;;18246:68:::1;;18281:17;18289:8;18281:7;:17::i;:::-;18114:211;;18356:10;18370:1;18335:32:::0;;;:20:::1;:32;::::0;;;;;;;:36;;;18382:6:::1;:18:::0;;;;;:47;18460:17:::1;::::0;:26:::1;::::0;18482:3;18460:26:::1;:21;:26;:::i;:::-;18440:17;:46:::0;18497:19:::1;::::0;:45:::1;::::0;;-1:-1:-1;;;18497:45:1;;18526:10:::1;18497:45;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;18497:19:1;;::::1;::::0;:28:::1;::::0;:45;;;;;::::1;::::0;;;;;;;;;:19:::1;::::0;:45;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;18497:45:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18497:45:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;18601:10:1::1;::::0;18573:39:::1;::::0;;;;;;;-1:-1:-1;;;;;18601:10:1;;::::1;::::0;18584::::1;::::0;-1:-1:-1;;;;;;;;;;;18573:39:1;;;;;18497:45:::1;18573:39:::0;;::::1;-1:-1:-1::0;8741:4:1;:12;;-1:-1:-1;;;;8741:12:1;;;17847:773::o;6794:27::-;;;-1:-1:-1;;;6794:27:1;;;;;:::o;6380:78::-;;;-1:-1:-1;;;;;6380:78:1;;:::o;7720:43::-;;;;;;;;;;;;;;-1:-1:-1;;;7720:43:1;;;;:::o;10134:159::-;10209:4;10226:37;10235:10;10247:7;10256:6;10226:8;:37::i;:::-;-1:-1:-1;10281:4:1;10134:159;;;;;:::o;26881:1857::-;27016:10;;26984:4;;-1:-1:-1;;;;;27009:17:1;;;27016:10;;27009:17;27006:1725;;;-1:-1:-1;;;;;27045:13:1;;;;;;:6;:13;;;;;:38;27042:90;;-1:-1:-1;27115:1:1;27108:8;;27042:90;-1:-1:-1;;;;;27170:13:1;;27146;27170;;;:6;:13;;;;;:38;27162:66;;7066:2;;27162:47;;:3;;:47;:7;:47;:::i;:66::-;27146:82;;27258:1;27246:8;:13;27243:162;;27286:8;-1:-1:-1;27279:15:1;;27243:162;27388:1;27381:8;;;;;27006:1725;27441:9;;-1:-1:-1;;;;;27434:16:1;;;27441:9;;27434:16;27431:1300;;;-1:-1:-1;;;;;27469:13:1;;;;;;:6;:13;;;;;:37;;;27466:89;;-1:-1:-1;27538:1:1;27531:8;;27466:89;-1:-1:-1;;;;;27593:13:1;;27569;27593;;;:6;:13;;;;;:37;;;27585:65;;7066:2;;27585:46;;:3;;:46;:7;:46;:::i;27431:1300::-;27863:9;;-1:-1:-1;;;;;27856:16:1;;;27863:9;;27856:16;27853:878;;;-1:-1:-1;;;;;27891:13:1;;;;;;:6;:13;;;;;:37;;;27888:89;;-1:-1:-1;27960:1:1;27953:8;;27888:89;-1:-1:-1;;;;;28015:13:1;;27991;28015;;;:6;:13;;;;;:37;;;28007:65;;7066:2;;28007:46;;:3;;:46;:7;:46;:::i;27853:878::-;28285:9;;-1:-1:-1;;;;;28278:16:1;;;28285:9;;28278:16;28275:456;;;-1:-1:-1;;;;;28313:13:1;;;;;;:6;:13;;;;;:37;;;28310:89;;-1:-1:-1;28382:1:1;28375:8;;28310:89;-1:-1:-1;;;;;28437:13:1;;28413;28437;;;:6;:13;;;;;:37;;;28429:65;;7066:2;;28429:46;;:3;;:46;:7;:46;:::i;9121:100::-;9201:12;;9121:100;:::o;6964:27::-;;;-1:-1:-1;;;6964:27:1;;;;;:::o;7250:53::-;;;;;;;;;;;;;:::o;10772:309::-;10870:4;10887:36;10897:6;10905:9;10916:6;10887:9;:36::i;:::-;10934:117;10943:6;10951:10;10963:87;10999:6;10963:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10963:19:1;;;;;;:11;:19;;;;;;;;10983:10;10963:31;;;;;;;;;:87;;:35;:87;:::i;:::-;10934:8;:117::i;:::-;-1:-1:-1;11069:4:1;10772:309;;;;;:::o;24936:441::-;25020:10;25034:1;25000:31;;;:19;:31;;;;;;24992:77;;;;;-1:-1:-1;;;24992:77:1;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24992:77:1;;;;;;;;;;;;;;;25165:9;;25115:16;;25134:41;;25153:10;;-1:-1:-1;;;;;25165:9:1;25134:18;:41::i;:::-;25115:60;-1:-1:-1;25189:12:1;;25186:184;;25217:17;25225:8;25217:7;:17::i;:::-;25256:10;25249:18;;;;:6;:18;;;;;25294:3;25249:42;;;:48;25312:34;;:46;;;;;;25186:184;24936:441;:::o;29029:112::-;8531:10;8524:18;;;;:6;:18;;;;;;;;8516:43;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;;;;29120:9:::1;::::0;;29132:1:::1;29120:9;-1:-1:-1::0;;;29120:9:1;;::::1;::::0;::::1;:13:::0;;;::::1;29108:25;;-1:-1:-1::0;;29108:25:1;;::::1;;::::0;;29029:112::o;6928:29::-;;;;;;;;;:::o;7815:35::-;7848:2;7815:35;:::o;21240:762::-;8678:4;;-1:-1:-1;;;8678:4:1;;;;8677:5;8669:27;;;;;-1:-1:-1;;;8669:27:1;;;;;;;;;;;;-1:-1:-1;;;8669:27:1;;;;;;;;;;;;;;;8707:4;:11;;-1:-1:-1;;;;8707:11:1;-1:-1:-1;;;8707:11:1;;;21350:10:::1;8707:11:::0;21330:31;;;:19:::1;:31;::::0;;;;;21322:81:::1;;;;-1:-1:-1::0;;;21322:81:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21482:10;21451:8;21462:31:::0;;;:19:::1;:31;::::0;;;;;21533:9:::1;::::0;21462:31;;21507:36:::1;::::0;-1:-1:-1;;;;;21533:9:1::1;21507:13;:36::i;:::-;21504:209;;;21609:9;::::0;21559:16:::1;::::0;21578:41:::1;::::0;21597:10:::1;::::0;-1:-1:-1;;;;;21609:9:1::1;21578:18;:41::i;:::-;21559:60:::0;-1:-1:-1;21637:12:1;;21634:68:::1;;21669:17;21677:8;21669:7;:17::i;:::-;21504:209;;21743:10;21757:1;21723:31:::0;;;:19:::1;:31;::::0;;;;;;;:35;;;21769:6:::1;:18:::0;;;;;:42:::1;;:46:::0;21845:16:::1;::::0;:25:::1;::::0;21866:3;21845:25:::1;:20;:25;:::i;:::-;21826:16;:44:::0;21881:18:::1;::::0;:44:::1;::::0;;-1:-1:-1;;;21881:44:1;;21909:10:::1;21881:44;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;21881:18:1;;::::1;::::0;:27:::1;::::0;:44;;;;;::::1;::::0;;;;;;;;;:18:::1;::::0;:44;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;21881:44:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21881:44:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;21984:9:1::1;::::0;21956:38:::1;::::0;;;;;;;-1:-1:-1;;;;;21984:9:1;;::::1;::::0;21967:10:::1;::::0;-1:-1:-1;;;;;;;;;;;21956:38:1;;;;;21881:44:::1;21956:38:::0;;::::1;-1:-1:-1::0;8741:4:1;:12;;-1:-1:-1;;;;8741:12:1;;;21240:762::o;11490:206::-;11596:10;11570:4;11617:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11617:32:1;;;;;;;;;;11570:4;;11587:79;;11608:7;;11617:48;;11654:10;11617:48;:36;:48;:::i;32276:1312::-;32406:10;;32374:4;;-1:-1:-1;;;;;32399:17:1;;;32406:10;;32399:17;32396:1185;;;-1:-1:-1;;;;;32435:13:1;;;;;;:6;:13;;;;;:38;32432:228;;-1:-1:-1;32505:5:1;32498:12;;32432:228;32640:3;32569:67;32613:21;7066:2;32631;32613:21;:17;:21;:::i;:::-;-1:-1:-1;;;;;32569:13:1;;;;;;:6;:13;;;;;:38;;:67;:42;:67;:::i;:::-;:74;;32562:81;;;;32396:1185;32696:9;;-1:-1:-1;;;;;32689:16:1;;;32696:9;;32689:16;32686:895;;;-1:-1:-1;;;;;32724:13:1;;;;;;:6;:13;;;;;:37;;;32721:226;;-1:-1:-1;32793:5:1;32786:12;;32721:226;32927:3;32857:66;32900:21;7066:2;32918;32900:21;:17;:21;:::i;:::-;-1:-1:-1;;;;;32857:13:1;;;;;;:6;:13;;;;;:37;;;;:66;:41;:66;:::i;32686:895::-;32983:9;;-1:-1:-1;;;;;32976:16:1;;;32983:9;;32976:16;32973:608;;;-1:-1:-1;;;;;33011:13:1;;;;;;:6;:13;;;;;:37;;;33008:226;;-1:-1:-1;33080:5:1;33073:12;;33008:226;33214:3;33144:66;33187:21;7066:2;33205;33187:21;:17;:21;:::i;:::-;-1:-1:-1;;;;;33144:13:1;;;;;;:6;:13;;;;;:37;;;;:66;:41;:66;:::i;32973:608::-;33270:9;;-1:-1:-1;;;;;33263:16:1;;;33270:9;;33263:16;33260:321;;;-1:-1:-1;;;;;33298:13:1;;;;;;:6;:13;;;;;:37;;;33295:226;;-1:-1:-1;33367:5:1;33360:12;;33295:226;33501:3;33431:66;33474:21;7066:2;33492;33474:21;:17;:21;:::i;:::-;-1:-1:-1;;;;;33431:13:1;;;;;;:6;:13;;;;;:37;;;;:66;:41;:66;:::i;7118:35::-;;;;:::o;31466:132::-;31537:7;31569:21;31579:10;31569:9;:21::i;:::-;31562:28;;31466:132;:::o;22931:762::-;8678:4;;-1:-1:-1;;;8678:4:1;;;;8677:5;8669:27;;;;;-1:-1:-1;;;8669:27:1;;;;;;;;;;;;-1:-1:-1;;;8669:27:1;;;;;;;;;;;;;;;8707:4;:11;;-1:-1:-1;;;;8707:11:1;-1:-1:-1;;;8707:11:1;;;23041:10:::1;8707:11:::0;23021:31;;;:19:::1;:31;::::0;;;;;23013:81:::1;;;;-1:-1:-1::0;;;23013:81:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23173:10;23142:8;23153:31:::0;;;:19:::1;:31;::::0;;;;;23224:9:::1;::::0;23153:31;;23198:36:::1;::::0;-1:-1:-1;;;;;23224:9:1::1;23198:13;:36::i;:::-;23195:209;;;23300:9;::::0;23250:16:::1;::::0;23269:41:::1;::::0;23288:10:::1;::::0;-1:-1:-1;;;;;23300:9:1::1;23269:18;:41::i;:::-;23250:60:::0;-1:-1:-1;23328:12:1;;23325:68:::1;;23360:17;23368:8;23360:7;:17::i;:::-;23195:209;;23434:10;23448:1;23414:31:::0;;;:19:::1;:31;::::0;;;;;;;:35;;;23460:6:::1;:18:::0;;;;;:42:::1;;:46:::0;23536:16:::1;::::0;:25:::1;::::0;23557:3;23536:25:::1;:20;:25;:::i;:::-;23517:16;:44:::0;23572:18:::1;::::0;:44:::1;::::0;;-1:-1:-1;;;23572:44:1;;23600:10:::1;23572:44;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;23572:18:1;;::::1;::::0;:27:::1;::::0;:44;;;;;::::1;::::0;;;;;;;;;:18:::1;::::0;:44;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;23572:44:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23572:44:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;23675:9:1::1;::::0;23647:38:::1;::::0;;;;;;;-1:-1:-1;;;;;23675:9:1;;::::1;::::0;23658:10:::1;::::0;-1:-1:-1;;;;;;;;;;;23647:38:1;;;;;23572:44:::1;23647:38:::0;;::::1;-1:-1:-1::0;8741:4:1;:12;;-1:-1:-1;;;;8741:12:1;;;22931:762::o;6295:78::-;;;-1:-1:-1;;;;;6295:78:1;;:::o;30589:179::-;8531:10;8524:18;;;;:6;:18;;;;;;;;8516:43;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;;;;30683:9:::1;:20:::0;;-1:-1:-1;;;;;;30683:20:1;;::::1;-1:-1:-1::0;;;;;30683:20:1;;::::1;;::::0;;;;30714:18:::1;:46:::0;;30750:9;;;::::1;30714:46:::0;::::1;;::::0;;30589:179::o;29277:437::-;8531:10;8524:18;;;;:6;:18;;;;;;;;8516:43;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;;;;29381:10:::1;::::0;-1:-1:-1;;;;;29374:17:1;;::::1;29381:10:::0;::::1;29374:17;29371:336;;;29407:7;:14:::0;;-1:-1:-1;;;;29407:14:1::1;-1:-1:-1::0;;;29407:14:1::1;::::0;::::1;;;::::0;;29371:336:::1;;;29458:9;::::0;-1:-1:-1;;;;;29451:16:1;;::::1;29458:9:::0;::::1;29451:16;29448:259;;;29483:6;:13:::0;;-1:-1:-1;;;;29483:13:1::1;-1:-1:-1::0;;;29483:13:1::1;::::0;::::1;;;::::0;;29448:259:::1;;;29533:9;::::0;-1:-1:-1;;;;;29526:16:1;;::::1;29533:9:::0;::::1;29526:16;29523:184;;;29558:6;:13:::0;;-1:-1:-1;;;;;29558:13:1::1;-1:-1:-1::0;;;29558:13:1::1;::::0;::::1;;;::::0;;29523:184:::1;;;29608:9;::::0;-1:-1:-1;;;;;29601:16:1;;::::1;29608:9:::0;::::1;29601:16;29598:109;;;29633:6;:13:::0;;-1:-1:-1;;29633:13:1::1;;::::0;::::1;;::::0;;29598:109:::1;;7202:35:::0;;;;:::o;7075:36::-;;;;:::o;29778:232::-;8531:10;8524:18;;;;:6;:18;;;;;;;;8516:43;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;29900:30:1;::::1;29892:65;;;::::0;;-1:-1:-1;;;29892:65:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;29892:65:1;;;;;;;;;;;;;::::1;;29968:15;:34:::0;;-1:-1:-1;;;;;;29968:34:1::1;-1:-1:-1::0;;;;;29968:34:1;;;::::1;::::0;;;::::1;::::0;;29778:232::o;9284:119::-;-1:-1:-1;;;;;9377:18:1;;9350:7;9377:18;;;;;;;;;;;9284:119;;;;:::o;18692:798::-;18772:1;18766:3;:7;18758:30;;;;;-1:-1:-1;;;18758:30:1;;;;;;;;;;;;-1:-1:-1;;;18758:30:1;;;;;;;;;;;;;;;18817:9;;18831:3;;18807:20;;-1:-1:-1;;;;;18817:9:1;18807;:20::i;:::-;:27;;18799:67;;;;;-1:-1:-1;;;18799:67:1;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18799:67:1;;;;;;;;;;;;;;;18936:9;;18910:36;;18924:10;;-1:-1:-1;;;;;18936:9:1;18910:13;:36::i;:::-;18907:209;;;19012:9;;18962:16;;18981:41;;19000:10;;-1:-1:-1;;;;;19012:9:1;18981:18;:41::i;:::-;18962:60;-1:-1:-1;19040:12:1;;19037:68;;19072:17;19080:8;19072:7;:17::i;:::-;18907:209;;19207:10;19187:31;;;;:19;:31;;;;;;:40;;19223:3;19187:40;:35;:40;:::i;:::-;19173:10;19153:31;;;;:19;:31;;;;;:74;19257:16;;:25;;19278:3;19257:25;:20;:25;:::i;:::-;19238:16;:44;19300:10;19293:18;;;;:6;:18;;;;;;;;19338:3;19293:42;;;;:48;19352:18;;:63;;-1:-1:-1;;;19352:63:1;;;;;;;;;19404:4;19352:63;;;;;;;;;;;;-1:-1:-1;;;;;19352:18:1;;;;:31;;:63;;;;;19293:18;19352:63;;;;;;;;:18;:63;;;2:2:-1;;;;27:1;24;17:12;2:2;19352:63:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19352:63:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;19472:9:1;;19446:36;;;;;;;;-1:-1:-1;;;;;19472:9:1;;;;19455:10;;-1:-1:-1;;;;;;;;;;;19446:36:1;;;;;19352:63;19446:36;;;18692:798;:::o;6165:38::-;;;-1:-1:-1;;;;;6165:38:1;;:::o;25420:441::-;25504:10;25518:1;25484:31;;;:19;:31;;;;;;25476:77;;;;;-1:-1:-1;;;25476:77:1;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25476:77:1;;;;;;;;;;;;;;;25649:9;;25599:16;;25618:41;;25637:10;;-1:-1:-1;;;;;25649:9:1;25618:18;:41::i;:::-;25599:60;-1:-1:-1;25673:12:1;;25670:184;;25701:17;25709:8;25701:7;:17::i;:::-;25740:10;25733:18;;;;:6;:18;;;;;25778:3;25733:42;;;:48;25796:34;;:46;;;;;;25420:441;:::o;7355:52::-;;;;;;;;;;;;;:::o;29149:116::-;8531:10;8524:18;;;;:6;:18;;;;;;;;8516:43;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;;;;29241:9:::1;:16:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;29241:16:1;;::::1;::::0;;;::::1;::::0;;29149:116::o;7458:52::-;;;;;;;;;;;;;:::o;19549:762::-;8678:4;;-1:-1:-1;;;8678:4:1;;;;8677:5;8669:27;;;;;-1:-1:-1;;;8669:27:1;;;;;;;;;;;;-1:-1:-1;;;8669:27:1;;;;;;;;;;;;;;;8707:4;:11;;-1:-1:-1;;;;8707:11:1;-1:-1:-1;;;8707:11:1;;;19659:10:::1;8707:11:::0;19639:31;;;:19:::1;:31;::::0;;;;;19631:81:::1;;;;-1:-1:-1::0;;;19631:81:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19791:10;19760:8;19771:31:::0;;;:19:::1;:31;::::0;;;;;19842:9:::1;::::0;19771:31;;19816:36:::1;::::0;-1:-1:-1;;;;;19842:9:1::1;19816:13;:36::i;:::-;19813:209;;;19918:9;::::0;19868:16:::1;::::0;19887:41:::1;::::0;19906:10:::1;::::0;-1:-1:-1;;;;;19918:9:1::1;19887:18;:41::i;:::-;19868:60:::0;-1:-1:-1;19946:12:1;;19943:68:::1;;19978:17;19986:8;19978:7;:17::i;:::-;19813:209;;20052:10;20066:1;20032:31:::0;;;:19:::1;:31;::::0;;;;;;;:35;;;20078:6:::1;:18:::0;;;;;:42:::1;;:46:::0;20154:16:::1;::::0;:25:::1;::::0;20175:3;20154:25:::1;:20;:25;:::i;:::-;20135:16;:44:::0;20190:18:::1;::::0;:44:::1;::::0;;-1:-1:-1;;;20190:44:1;;20218:10:::1;20190:44;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;20190:18:1;;::::1;::::0;:27:::1;::::0;:44;;;;;::::1;::::0;;;;;;;;;:18:::1;::::0;:44;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20190:44:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20190:44:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;20293:9:1::1;::::0;20265:38:::1;::::0;;;;;;;-1:-1:-1;;;;;20293:9:1;;::::1;::::0;20276:10:::1;::::0;-1:-1:-1;;;;;;;;;;;20265:38:1;;;;;20190:44:::1;20265:38:::0;;::::1;-1:-1:-1::0;8741:4:1;:12;;-1:-1:-1;;;;8741:12:1;;;19549:762::o;30211:179::-;8531:10;8524:18;;;;:6;:18;;;;;;;;8516:43;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;;;;30305:9:::1;:20:::0;;-1:-1:-1;;;;;;30305:20:1;;::::1;-1:-1:-1::0;;;;;30305:20:1;;::::1;;::::0;;;;30336:18:::1;:46:::0;;30372:9;;;::::1;30336:46:::0;::::1;;::::0;;30211:179::o;20383:798::-;20463:1;20457:3;:7;20449:30;;;;;-1:-1:-1;;;20449:30:1;;;;;;;;;;;;-1:-1:-1;;;20449:30:1;;;;;;;;;;;;;;;20508:9;;20522:3;;20498:20;;-1:-1:-1;;;;;20508:9:1;20498;:20::i;:::-;:27;;20490:67;;;;;-1:-1:-1;;;20490:67:1;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20490:67:1;;;;;;;;;;;;;;;20627:9;;20601:36;;20615:10;;-1:-1:-1;;;;;20627:9:1;20601:13;:36::i;:::-;20598:209;;;20703:9;;20653:16;;20672:41;;20691:10;;-1:-1:-1;;;;;20703:9:1;20672:18;:41::i;:::-;20653:60;-1:-1:-1;20731:12:1;;20728:68;;20763:17;20771:8;20763:7;:17::i;:::-;20598:209;;20898:10;20878:31;;;;:19;:31;;;;;;:40;;20914:3;20878:40;:35;:40;:::i;:::-;20864:10;20844:31;;;;:19;:31;;;;;:74;20948:16;;:25;;20969:3;20948:25;:20;:25;:::i;:::-;20929:16;:44;20991:10;20984:18;;;;:6;:18;;;;;;;;21029:3;20984:42;;;;:48;21043:18;;:63;;-1:-1:-1;;;21043:63:1;;;;;;;;;21095:4;21043:63;;;;;;;;;;;;-1:-1:-1;;;;;21043:18:1;;;;:31;;:63;;;;;20984:18;21043:63;;;;;;;;:18;:63;;;2:2:-1;;;;27:1;24;17:12;2:2;21043:63:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21043:63:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;21163:9:1;;21137:36;;;;;;;;-1:-1:-1;;;;;21163:9:1;;;;21146:10;;-1:-1:-1;;;;;;;;;;;21137:36:1;;;;;21043:63;21137:36;;;20383:798;:::o;7770:38::-;;;;;;;;;;;;;;-1:-1:-1;;;7770:38:1;;;;:::o;30400:179::-;8531:10;8524:18;;;;:6;:18;;;;;;;;8516:43;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;;;;30494:9:::1;:20:::0;;-1:-1:-1;;;;;;30494:20:1;;::::1;-1:-1:-1::0;;;;;30494:20:1;;::::1;;::::0;;;;30525:18:::1;:46:::0;;30561:9;;;::::1;30525:46:::0;::::1;;::::0;;30400:179::o;6861:26::-;;;-1:-1:-1;;;6861:26:1;;;;;:::o;12199:257::-;12284:4;12301:125;12310:10;12322:7;12331:94;12368:15;12331:94;;;;;;;;;;;;;;;;;12343:10;12331:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12331:32:1;;;;;;;;;;;:94;;:36;:94;:::i;6828:26::-;;;-1:-1:-1;;;6828:26:1;;;;;:::o;9616:165::-;9694:4;9711:40;9721:10;9733:9;9744:6;9711:9;:40::i;7561:52::-;;;;;;;;;;;;;:::o;7887:51::-;;;-1:-1:-1;;;;;7887:51:1;;:::o;8200:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23960:445::-;24046:10;24060:1;24025:32;;;:20;:32;;;;;;24017:78;;;;;-1:-1:-1;;;24017:78:1;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24017:78:1;;;;;;;;;;;;;;;24191:10;;24141:16;;24160:42;;24179:10;;-1:-1:-1;;;;;24191:10:1;24160:18;:42::i;:::-;24141:61;-1:-1:-1;24216:12:1;;24213:185;;24244:17;24252:8;24244:7;:17::i;:::-;24283:10;24276:18;;;;:6;:18;;;;;24322:3;24276:49;;24340:34;;:46;;;;;;23960:445;:::o;28750:149::-;28824:1;28818:3;:7;28810:48;;;;;-1:-1:-1;;;28810:48:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;28869:22;28875:10;28887:3;28869:5;:22::i;25907:881::-;26045:10;;26010:4;;-1:-1:-1;;;;;26038:17:1;;;26045:10;;26038:17;26035:746;;;26079:108;26156:30;26175:5;26182:3;26156:18;:30::i;:::-;26142:7;;26126:9;;26080:70;;-1:-1:-1;;;26142:7:1;;;;;;;26080:57;;26112:24;;:9;;;;;;-1:-1:-1;;;26126:9:1;;;;;;26112:13;:24;:::i;:::-;-1:-1:-1;;;;;26080:27:1;;;;;;:20;:27;;;;;;;:57;:31;:57;:::i;:70::-;26079:76;:108;:76;:108;:::i;:::-;26071:117;;;;26035:746;26225:9;;-1:-1:-1;;;;;26218:16:1;;;26225:9;;26218:16;26215:566;;;26258:106;26333:30;26352:5;26359:3;26333:18;:30::i;:::-;26320:6;;26304:9;;26259:68;;-1:-1:-1;;;26320:6:1;;;;;;;26259:56;;26290:24;;:9;;;;;;-1:-1:-1;;;26304:9:1;;;;;;26290:13;:24;:::i;:::-;-1:-1:-1;;;;;26259:26:1;;;;;;:19;:26;;;;;;;:56;:30;:56;:::i;26215:566::-;26403:9;;-1:-1:-1;;;;;26396:16:1;;;26403:9;;26396:16;26393:388;;;26436:106;26511:30;26530:5;26537:3;26511:18;:30::i;:::-;26498:6;;26482:9;;26437:68;;-1:-1:-1;;;26498:6:1;;;;;;;26437:56;;26468:24;;:9;;;;;;-1:-1:-1;;;26482:9:1;;;;;;26468:13;:24;:::i;:::-;-1:-1:-1;;;;;26437:26:1;;;;;;:19;:26;;;;;;;:56;:30;:56;:::i;26393:388::-;26580:9;;-1:-1:-1;;;;;26573:16:1;;;26580:9;;26573:16;26570:211;;;26613:106;26688:30;26707:5;26714:3;26688:18;:30::i;:::-;26675:6;;26614:68;;26675:6;;;;;26614:56;;26645:24;;:9;;;;;;-1:-1:-1;;;26659:9:1;;;;;;26645:13;:24;:::i;:::-;-1:-1:-1;;;;;26614:26:1;;;;;;:19;:26;;;;;;;:56;:30;:56;:::i;30929:499::-;31055:10;;31020:7;;-1:-1:-1;;;;;31048:17:1;;;31055:10;;31048:17;31045:376;;;-1:-1:-1;31088:17:1;;31081:24;;31045:376;31142:9;;-1:-1:-1;;;;;31135:16:1;;;31142:9;;31135:16;31132:289;;;-1:-1:-1;31174:16:1;;31167:23;;31132:289;31227:9;;-1:-1:-1;;;;;31220:16:1;;;31227:9;;31220:16;31217:204;;;-1:-1:-1;31259:16:1;;31252:23;;31217:204;31312:9;;-1:-1:-1;;;;;31305:16:1;;;31312:9;;31305:16;31302:119;;;-1:-1:-1;31344:16:1;;31337:23;;30018:183;8531:10;8524:18;;;;:6;:18;;;;;;;;8516:43;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;-1:-1:-1;;;8516:43:1;;;;;;;;;;;;;;;30113:10:::1;:21:::0;;-1:-1:-1;;;;;;30113:21:1;;::::1;-1:-1:-1::0;;;;;30113:21:1;;::::1;;::::0;;;;30145:19:::1;:48:::0;;30182:10;;;::::1;30145:48:::0;::::1;;::::0;;30018:183::o;9844:143::-;-1:-1:-1;;;;;9952:18:1;;;9925:7;9952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9844:143::o;31638:588::-;31753:10;;31718:7;;-1:-1:-1;;;;;31746:17:1;;;31753:10;;31746:17;31743:474;;;31786:19;;:41;;;-1:-1:-1;;;31786:41:1;;31816:10;31786:41;;;;;;-1:-1:-1;;;;;31786:19:1;;;;:29;;:41;;;;;;;;;;;;;;;:19;:41;;;2:2:-1;;;;27:1;24;17:12;2:2;31786:41:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31786:41:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;31786:41:1;;-1:-1:-1;31779:48:1;;31743:474;31864:9;;-1:-1:-1;;;;;31857:16:1;;;31864:9;;31857:16;31854:363;;;31896:18;;:40;;;-1:-1:-1;;;31896:40:1;;31925:10;31896:40;;;;;;-1:-1:-1;;;;;31896:18:1;;;;:28;;:40;;;;;;;;;;;;;;;:18;:40;;;2:2:-1;;;;27:1;24;17:12;31854:363:1;31975:9;;-1:-1:-1;;;;;31968:16:1;;;31975:9;;31968:16;31965:252;;;32007:18;;:40;;;-1:-1:-1;;;32007:40:1;;32036:10;32007:40;;;;;;-1:-1:-1;;;;;32007:18:1;;;;:28;;:40;;;;;;;;;;;;;;;:18;:40;;;2:2:-1;;;;27:1;24;17:12;31965:252:1;32084:9;;-1:-1:-1;;;;;32077:16:1;;;32084:9;;32077:16;32074:143;;;32116:18;;:40;;;-1:-1:-1;;;32116:40:1;;32145:10;32116:40;;;;;;-1:-1:-1;;;;;32116:18:1;;;;:28;;:40;;;;;;;;;;;;;;;:18;:40;;;2:2:-1;;;;27:1;24;17:12;7160:35:1;;;;:::o;24452:441::-;24536:10;24550:1;24516:31;;;:19;:31;;;;;;24508:77;;;;;-1:-1:-1;;;24508:77:1;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24508:77:1;;;;;;;;;;;;;;;24681:9;;24631:16;;24650:41;;24669:10;;-1:-1:-1;;;;;24681:9:1;24650:18;:41::i;:::-;24631:60;-1:-1:-1;24705:12:1;;24702:184;;24733:17;24741:8;24733:7;:17::i;:::-;24772:10;24765:18;;;;:6;:18;;;;;24810:3;24765:42;;;:48;24828:34;;:46;;;;;;24452:441;:::o;6894:27::-;;;;;;:::o;6210:78::-;;;-1:-1:-1;;;;;6210:78:1;;:::o;22074:798::-;22154:1;22148:3;:7;22140:30;;;;;-1:-1:-1;;;22140:30:1;;;;;;;;;;;;-1:-1:-1;;;22140:30:1;;;;;;;;;;;;;;;22199:9;;22213:3;;22189:20;;-1:-1:-1;;;;;22199:9:1;22189;:20::i;:::-;:27;;22181:67;;;;;-1:-1:-1;;;22181:67:1;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22181:67:1;;;;;;;;;;;;;;;22318:9;;22292:36;;22306:10;;-1:-1:-1;;;;;22318:9:1;22292:13;:36::i;:::-;22289:209;;;22394:9;;22344:16;;22363:41;;22382:10;;-1:-1:-1;;;;;22394:9:1;22363:18;:41::i;:::-;22344:60;-1:-1:-1;22422:12:1;;22419:68;;22454:17;22462:8;22454:7;:17::i;:::-;22289:209;;22589:10;22569:31;;;;:19;:31;;;;;;:40;;22605:3;22569:40;:35;:40;:::i;:::-;22555:10;22535:31;;;;:19;:31;;;;;:74;22639:16;;:25;;22660:3;22639:25;:20;:25;:::i;:::-;22620:16;:44;22682:10;22675:18;;;;:6;:18;;;;;;;;22720:3;22675:42;;;;:48;22734:18;;:63;;-1:-1:-1;;;22734:63:1;;;;;;;;;22786:4;22734:63;;;;;;;;;;;;-1:-1:-1;;;;;22734:18:1;;;;:31;;:63;;;;;22675:18;22734:63;;;;;;;;:18;:63;;;2:2:-1;;;;27:1;24;17:12;2:2;22734:63:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22734:63:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;22854:9:1;;22828:36;;;;;;;;-1:-1:-1;;;;;22854:9:1;;;;22837:10;;-1:-1:-1;;;;;;;;;;;22828:36:1;;;;;22734:63;22828:36;;;22074:798;:::o;2230:471:3:-;2288:7;2533:6;2529:47;;-1:-1:-1;2563:1:3;2556:8;;2529:47;2600:5;;;2604:1;2600;:5;:1;2624:5;;;;;:10;2616:56;;;;-1:-1:-1;;;2616:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2692:1;2230:471;-1:-1:-1;;;2230:471:3:o;3169:132::-;3227:7;3254:39;3258:1;3261;3254:39;;;;;;;;;;;;;;;;;:3;:39::i;23701:215:1:-;23766:26;23772:10;23784:7;23766:5;:26::i;:::-;23809:15;;23803:31;;-1:-1:-1;;;;;23809:15:1;23826:7;23803:5;:31::i;:::-;23851:3;;23845:26;;-1:-1:-1;;;;;23851:3:1;23856:14;:7;23868:1;23856:14;:11;:14;:::i;:::-;23845:5;:26::i;:::-;23888:3;;23882:26;;-1:-1:-1;;;;;23888:3:1;23893:14;:7;23905:1;23893:14;:11;:14;:::i;858:181:3:-;916:7;948:5;;;972:6;;;;964:46;;;;;-1:-1:-1;;;964:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;1314:136;1372:7;1399:43;1403:1;1406;1399:43;;;;;;;;;;;;;;;;;:3;:43::i;15167:338:1:-;-1:-1:-1;;;;;15261:19:1;;15253:68;;;;-1:-1:-1;;;15253:68:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15340:21:1;;15332:68;;;;-1:-1:-1;;;15332:68:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15413:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15465:32;;;;;;;;;;;;;;;;;15167:338;;;:::o;12945:469::-;-1:-1:-1;;;;;13043:20:1;;13035:70;;;;-1:-1:-1;;;13035:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13124:23:1;;13116:71;;;;-1:-1:-1;;;13116:71:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13218;13240:6;13218:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13218:17:1;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;13198:17:1;;;:9;:17;;;;;;;;;;;:91;;;;13323:20;;;;;;;:32;;13348:6;13323:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;13300:20:1;;;:9;:20;;;;;;;;;;;;:55;;;;13371:35;;;;;;;13300:20;;13371:35;;;;;;;;;;;;;12945:469;;;:::o;1787:192:3:-;1873:7;1909:12;1901:6;;;;1893:29;;;;-1:-1:-1;;;1893:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1893:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1945:5:3;;;1787:192::o;14379:348:1:-;-1:-1:-1;;;;;14455:21:1;;14447:67;;;;-1:-1:-1;;;14447:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14548:68;14571:6;14548:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14548:18:1;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;14527:18:1;;:9;:18;;;;;;;;;;:89;14642:12;;:24;;14659:6;14642:24;:16;:24;:::i;:::-;14627:12;:39;14682:37;;;;;;;;14708:1;;-1:-1:-1;;;;;14682:37:1;;;;;;;;;;;;14379:348;;:::o;3831:345:3:-;3917:7;4019:12;4012:5;4004:28;;;;-1:-1:-1;;;4004:28:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4004:28:3;;4043:9;4059:1;4055;:5;;;;;;;3831:345;-1:-1:-1;;;;;3831:345:3:o;13719:328:1:-;13801:6;-1:-1:-1;;;;;13826:21:1;;13818:65;;;;;-1:-1:-1;;;13818:65:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;13909:12;;:21;;13926:3;13909:21;:16;:21;:::i;:::-;13894:12;:36;-1:-1:-1;;;;;13962:18:1;;:9;:18;;;;;;;;;;;:27;;13985:3;13962:27;:22;:27;:::i;:::-;-1:-1:-1;;;;;13941:18:1;;:9;:18;;;;;;;;;;;:48;;;;14005:34;;;;;;;13941:18;;:9;;14005:34;;;;;;;;;;13719:328;;;:::o
Swarm Source
ipfs://411ea232de9efa4982a0a4916b00985d0d9a72539092d8aeb4675a7f5cae2810
Loading...
Loading
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.