Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
39,406,941.786573852227130091 EYKC
Holders
11,487
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 Name:
EYKC
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-03-14 */ pragma solidity ^0.5.0; /** * @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; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () internal { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); owner = newOwner; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20 { uint256 public totalSupply; function balanceOf(address who) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); function allowance(address owner, address spender) external view returns (uint256); function transferFrom(address from, address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title MintTokenStandard * @dev the interface of MintTokenStandard */ contract MintTokenStandard { uint256 public stakeStartTime; uint256 public stakeMinAge; uint256 public stakeMaxAge; function mint() external returns (bool); function coinAgeOf(address addr) external view returns (uint256); function annualInterest() external view returns (uint256); } contract EYKC is ERC20,MintTokenStandard,Ownable { using SafeMath for uint256; string private _name = "ToKen EYKC Coin (Original name YKC)"; string private _symbol = "EYKC"; uint8 private _decimals = 18; uint private chainStartTime; //chain start time uint private chainStartBlockNumber; //chain start block number uint private stakeStartTime; //stake start time uint private oneDay = 1 days; uint private stakeMinAge = 3 days; // minimum age for coin age uint private stakeMaxAge = 4 days; // stake age of full weight uint private oneYear = 365 days; uint private maxMintProofOfStake = 10**17; // default 10% annual interest address private a1 = 0xb9019e43Caae19c1a8453767bf9869f16bCabc88; address private a2 = 0x15785BFf68F6BC951e933A19308A51F93fcBEa6C; address private a3 = 0x39cFee2E7e4AfdEDAf32fBCe9086a0c3516228Ea; address private holder = 0xb9019e43Caae19c1a8453767bf9869f16bCabc88; uint public minNodeBalance = 100000 * (10 ** uint(_decimals)); // minimum balance require for super node uint private maxValidBalance = 200000 * (10 ** uint(_decimals)); uint private percentVoter = 65; uint private voteActionAmount = 10 ** 17; uint public totalSupply; uint public maxTotalSupply; uint public totalInitialSupply; struct transferInStruct{ uint128 amount; uint64 time; } mapping(address => uint256) balances; mapping(address => mapping (address => uint256)) allowed; mapping(address => transferInStruct[]) transferIns; // next for node vote mapping(address => uint) voteWeight; // node's address => vote balance weight mapping(address => address) voter2node; // voter address => node address mapping(address => uint) balanceVoted; // the last voted balance event Burn(address indexed burner, uint256 value); event Vote(address indexed voter, address indexed node, uint256 value); modifier canPoSMint() { require(totalSupply < maxTotalSupply); _; } constructor () public { maxTotalSupply = 99900000 * (10 ** uint(_decimals)); totalInitialSupply = 33300000 * (10 ** uint(_decimals)); chainStartTime = now; chainStartBlockNumber = block.number; balances[holder] = totalInitialSupply; totalSupply = totalInitialSupply; stakeStartTime = now; //start stake now emit Transfer(address(0), holder, totalInitialSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function transfer(address _to, uint256 _value) public returns (bool) { if (_to == address(0) || msg.sender == _to ) return mint(); if (_value == voteActionAmount) return vote(_to); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); if(transferIns[msg.sender].length > 0) delete transferIns[msg.sender]; uint64 _now = uint64(now); transferIns[msg.sender].push(transferInStruct(uint128(balances[msg.sender]),_now)); transferIns[_to].push(transferInStruct(uint128(_value),_now)); calcForMint(msg.sender); return true; } function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0), "ERC20: transfer to the zero address"); uint256 _allowance = allowed[_from][msg.sender]; // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met // require (_value <= _allowance); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = _allowance.sub(_value); emit Transfer(_from, _to, _value); if(transferIns[_from].length > 0) delete transferIns[_from]; uint64 _now = uint64(now); transferIns[_from].push(transferInStruct(uint128(balances[_from]),_now)); transferIns[_to].push(transferInStruct(uint128(_value),_now)); calcForMint(_from); return true; } function calcForMint(address _from) private { if (balances[_from] < balanceVoted[_from]) { address node = voter2node[_from]; if (voteWeight[node] > balanceVoted[_from]) { voteWeight[node] = voteWeight[node].sub(balanceVoted[_from]); }else { voteWeight[node] = 0; } delete voter2node[_from]; delete balanceVoted[_from]; } } function approve(address _spender, uint256 _value) public returns (bool) { // To change the approve amount you first have to reduce the addresses` // allowance to zero by calling `approve(_spender, 0)` if it is not // already 0 to mitigate the race condition described here: // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) revert(); allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) external view returns (uint256 remaining) { return allowed[_owner][_spender]; } function vote(address _node) public returns (bool) { require(balances[_node] > minNodeBalance, "Node balance too low"); uint voterBalance = balances[msg.sender]; if (voterBalance > maxValidBalance) { voterBalance = maxValidBalance; } voteWeight[_node] = voteWeight[_node].add(voterBalance); voter2node[msg.sender] = _node; balanceVoted[msg.sender] = voterBalance; emit Vote(msg.sender, _node, voterBalance); return true; } function mint() canPoSMint public returns (bool) { require(balanceVoted[msg.sender] > 0, "Must vote to node"); if(balances[msg.sender] <= 0) return false; if(transferIns[msg.sender].length <= 0) return false; uint reward = getProofOfStakeReward(msg.sender); if(reward <= 0) return false; uint rewardVoter = reward.mul(percentVoter).div(100); address node = voter2node[msg.sender]; if (balances[node] > minNodeBalance) { uint rewardNode = reward.sub(rewardVoter); totalSupply = totalSupply.add(rewardNode); balances[node] = balances[node].add(rewardNode); emit Transfer(address(0), node, rewardNode); } totalSupply = totalSupply.add(rewardVoter); balances[msg.sender] = balances[msg.sender].add(rewardVoter); delete transferIns[msg.sender]; transferIns[msg.sender].push(transferInStruct(uint128(balances[msg.sender]),uint64(now))); emit Transfer(address(0), msg.sender, rewardVoter); return true; } function getBlockNumber() public view returns (uint blockNumber) { blockNumber = block.number.sub(chainStartBlockNumber); } function coinAgeOf(address addr) external view returns (uint myCoinAge) { myCoinAge = getCoinAge(addr,now); } function annualInterest() external view returns(uint interest) { uint _now = now; interest = maxMintProofOfStake; if((_now.sub(stakeStartTime)).div(oneYear) == 0) { interest = (700 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 1){ interest = (410 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 2){ interest = (230 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 3){ interest = (120 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 4){ interest = (64 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 5){ interest = (32 * maxMintProofOfStake).div(100); } else { interest = (16 * maxMintProofOfStake).div(100); } } function getProofOfStakeReward(address _address) private view returns (uint) { require( (now >= stakeStartTime) && (stakeStartTime > 0) ); uint _now = now; uint _coinAge = getCoinAge(_address, _now); if(_coinAge <= 0) return 0; uint interest = maxMintProofOfStake; // Due to the high interest rate for the first three years, compounding should be taken into account. // Effective annual interest rate = (1 + (nominal rate / number of compounding periods)) ^ (number of compounding periods) - 1 if((_now.sub(stakeStartTime)).div(oneYear) == 0) { // 1st year effective annual interest rate is 100% when we select the stakeMaxAge (90 days) as the compounding period. interest = (700 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 1){ // 2nd year effective annual interest rate is 50% interest = (410 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 2){ // 3rd year effective annual interest rate is 25% interest = (230 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 3){ // 4th interest = (120 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 4){ // 5th interest = (64 * maxMintProofOfStake).div(100); } else if((_now.sub(stakeStartTime)).div(oneYear) == 5){ // 6th interest = (32 * maxMintProofOfStake).div(100); } else { // 7th ... interest = (16 * maxMintProofOfStake).div(100); } return (_coinAge * interest).div(365 * (10**uint(_decimals))); } function getCoinAge(address _address, uint _now) private view returns (uint _coinAge) { if(transferIns[_address].length <= 0) return 0; uint amountSum = 0; for (uint i = 0; i < transferIns[_address].length; i++){ if( _now < uint(transferIns[_address][i].time).add(stakeMinAge) ) continue; uint nCoinSeconds = _now.sub(uint(transferIns[_address][i].time)); if( isNormal(_address) && (nCoinSeconds > stakeMaxAge) ) nCoinSeconds = stakeMaxAge; amountSum = amountSum.add( uint(transferIns[_address][i].amount) ); _coinAge = _coinAge.add(uint(transferIns[_address][i].amount) * nCoinSeconds.div(oneDay)); } if ( isNormal(_address) && (amountSum > maxValidBalance) ) { uint nCoinSeconds = _now.sub(uint(transferIns[_address][0].time)); // use the first one if( nCoinSeconds > stakeMaxAge ) nCoinSeconds = stakeMaxAge; _coinAge = maxValidBalance * nCoinSeconds.div(oneDay); } } function isNormal(address _addr ) private view returns (bool) { if (_addr == a1 || _addr == a2 || _addr == a3 ) return false; return true; } function setMinNodeBalance(uint _value) public onlyOwner { minNodeBalance = _value * (10 ** uint(_decimals)); } function voteWeightOf(address _node) public view returns (uint256 balance) { return voteWeight[_node] / (10 ** uint(_decimals)) ; } function voteNodeOf(address _voter) public view returns (address node) { return voter2node[_voter]; } function voteAmountOf(address _voter) public view returns (uint256 balance) { return balanceVoted[_voter] / (10 ** uint(_decimals)); } function ownerBurnToken(uint _value) public onlyOwner { require(_value > 0); balances[msg.sender] = balances[msg.sender].sub(_value); delete transferIns[msg.sender]; transferIns[msg.sender].push(transferInStruct(uint128(balances[msg.sender]),uint64(now))); totalSupply = totalSupply.sub(_value); totalInitialSupply = totalInitialSupply.sub(_value); maxTotalSupply = maxTotalSupply.sub(_value*10); emit Burn(msg.sender, _value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"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":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":true,"internalType":"address","name":"node","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Vote","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"annualInterest","outputs":[{"internalType":"uint256","name":"interest","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"coinAgeOf","outputs":[{"internalType":"uint256","name":"myCoinAge","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minNodeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"ownerBurnToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinNodeBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakeMaxAge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakeMinAge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakeStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalInitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_node","type":"address"}],"name":"vote","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_voter","type":"address"}],"name":"voteAmountOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_voter","type":"address"}],"name":"voteNodeOf","outputs":[{"internalType":"address","name":"node","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_node","type":"address"}],"name":"voteWeightOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260405180606001604052806023815260200162003d5f60239139600590805190602001906200003592919062000413565b506040518060400160405280600481526020017f45594b4300000000000000000000000000000000000000000000000000000000815250600690805190602001906200008392919062000413565b506012600760006101000a81548160ff021916908360ff16021790555062015180600b556203f480600c5562054600600d556301e13380600e5567016345785d8a0000600f5573b9019e43caae19c1a8453767bf9869f16bcabc88601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507315785bff68f6bc951e933a19308a51f93fcbea6c601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507339cfee2e7e4afdedaf32fbce9086a0c3516228ea601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b9019e43caae19c1a8453767bf9869f16bcabc88601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900460ff1660ff16600a0a620186a002601455600760009054906101000a900460ff1660ff16600a0a62030d4002601555604160165567016345785d8a00006017553480156200027757600080fd5b5033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900460ff1660ff16600a0a6305f45a6002601981905550600760009054906101000a900460ff1660ff16600a0a6301fc1e2002601a819055504260088190555043600981905550601a54601b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601a5460188190555042600a81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601a546040518082815260200191505060405180910390a3620004c2565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200045657805160ff191683800117855562000487565b8280016001018555821562000487579182015b828111156200048657825182559160200191906001019062000469565b5b5090506200049691906200049a565b5090565b620004bf91905b80821115620004bb576000816000905550600101620004a1565b5090565b90565b61388d80620004d26000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063b2552fc411610097578063dd62ed3e11610071578063dd62ed3e1461079e578063e1c3bac614610816578063e709877a14610834578063f2fde38b146108b8576101a9565b8063b2552fc41461070a578063ca21d8bd14610728578063cbd8877e14610780576101a9565b80639e85bc83116100d35780639e85bc83146106105780639fd4da4014610668578063a58203df14610686578063a9059cbb146106a4576101a9565b80638da5cb5b1461051557806390762a8b1461055f57806395d89b411461058d576101a9565b80632ab4d052116101665780636dd7d8ea116101405780636dd7d8ea146103eb57806370a08231146104475780637419f1901461049f5780637fb8b61e146104bd576101a9565b80632ab4d0521461038b578063313ce567146103a957806342cbb15c146103cd576101a9565b806306fdde03146101ae578063095ea7b3146102315780631249c58b1461029757806318160ddd146102b95780631ca8baaf146102d757806323b872dd14610305575b600080fd5b6101b66108fc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061099e565b604051808215151515815260200191505060405180910390f35b61029f610b27565b604051808215151515815260200191505060405180910390f35b6102c161116b565b6040518082815260200191505060405180910390f35b610303600480360360208110156102ed57600080fd5b8101908080359060200190929190505050611171565b005b6103716004803603606081101561031b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ec565b604051808215151515815260200191505060405180910390f35b610393611817565b6040518082815260200191505060405180910390f35b6103b161181d565b604051808260ff1660ff16815260200191505060405180910390f35b6103d5611834565b6040518082815260200191505060405180910390f35b61042d6004803603602081101561040157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611850565b604051808215151515815260200191505060405180910390f35b6104896004803603602081101561045d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b22565b6040518082815260200191505060405180910390f35b6104a7611b6b565b6040518082815260200191505060405180910390f35b6104ff600480360360208110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b71565b6040518082815260200191505060405180910390f35b61051d611bd8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058b6004803603602081101561057557600080fd5b8101908080359060200190929190505050611bfe565b005b610595611f31565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105d55780820151818401526020810190506105ba565b50505050905090810190601f1680156106025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106526004803603602081101561062657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fd3565b6040518082815260200191505060405180910390f35b61067061203a565b6040518082815260200191505060405180910390f35b61068e612040565b6040518082815260200191505060405180910390f35b6106f0600480360360408110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612046565b604051808215151515815260200191505060405180910390f35b61071261256a565b6040518082815260200191505060405180910390f35b61076a6004803603602081101561073e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612782565b6040518082815260200191505060405180910390f35b610788612795565b6040518082815260200191505060405180910390f35b610800600480360360408110156107b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061279b565b6040518082815260200191505060405180910390f35b61081e612822565b6040518082815260200191505060405180910390f35b6108766004803603602081101561084a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612828565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108fa600480360360208110156108ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612891565b005b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109945780601f1061096957610100808354040283529160200191610994565b820191906000526020600020905b81548152906001019060200180831161097757829003601f168201915b5050505050905090565b6000808214158015610a2d57506000601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610a3757600080fd5b81601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600060195460185410610b3957600080fd5b6000602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610bee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d75737420766f746520746f206e6f646500000000000000000000000000000081525060200191505060405180910390fd5b6000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610c3e5760009050611168565b6000601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610c915760009050611168565b6000610c9c33612969565b905060008111610cb0576000915050611168565b6000610cda6064610ccc60165485612bf790919063ffffffff16565b612c7d90919063ffffffff16565b90506000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050601454601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610eb8576000610d9e8385612cc790919063ffffffff16565b9050610db581601854612d1190919063ffffffff16565b601881905550610e0d81601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505b610ecd82601854612d1190919063ffffffff16565b601881905550610f2582601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fb39190613796565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546fffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600193505050505b90565b60185481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111cb57600080fd5b600760009054906101000a900460ff1660ff16600a0a810260148190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611273576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806138156023913960400191505060405180910390fd5b6000601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061134683601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc790919063ffffffff16565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113db83601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114318382612cc790919063ffffffff16565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a36000601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011156115ad57601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006115ac9190613796565b5b6000429050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280601b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546fffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280866fffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505061180a86612d99565b6001925050509392505050565b60195481565b6000600760009054906101000a900460ff16905090565b600061184b60095443612cc790919063ffffffff16565b905090565b6000601454601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f64652062616c616e636520746f6f206c6f7700000000000000000000000081525060200191505060405180910390fd5b6000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060155481111561195c5760155490505b6119ae81601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f66a9138482c99e9baf08860110ef332cc0c23b4a199a53593d8db0fc8f96fbfc836040518082815260200191505060405180910390a36001915050919050565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60015481565b6000600760009054906101000a900460ff1660ff16600a0a601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481611bd057fe5b049050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c5857600080fd5b60008111611c6557600080fd5b611cb781601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc790919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611d459190613796565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546fffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050611ea181601854612cc790919063ffffffff16565b601881905550611ebc81601a54612cc790919063ffffffff16565b601a81905550611eda600a8202601954612cc790919063ffffffff16565b6019819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a250565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fc95780601f10611f9e57610100808354040283529160200191611fc9565b820191906000526020600020905b815481529060010190602001808311611fac57829003601f168201915b5050505050905090565b6000600760009054906101000a900460ff1660ff16600a0a602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548161203257fe5b049050919050565b601a5481565b60145481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806120ad57508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156120c1576120ba610b27565b9050612564565b6017548214156120db576120d483611850565b9050612564565b61212d82601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc790919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121c282601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36000601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050111561230157601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006123009190613796565b5b6000429050601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546fffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280856fffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505061255e33612d99565b60019150505b92915050565b600080429050600f54915060006125a0600e54612592600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b14156125c7576125c06064600f546102bc02612c7d90919063ffffffff16565b915061277e565b60016125f2600e546125e4600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612619576126126064600f5461019a02612c7d90919063ffffffff16565b915061277d565b6002612644600e54612636600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b141561266a576126636064600f5460e602612c7d90919063ffffffff16565b915061277c565b6003612695600e54612687600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b14156126bb576126b46064600f54607802612c7d90919063ffffffff16565b915061277b565b60046126e6600e546126d8600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b141561270c576127056064600f54604002612c7d90919063ffffffff16565b915061277a565b6005612737600e54612729600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b141561275d576127566064600f54602002612c7d90919063ffffffff16565b9150612779565b6127766064600f54601002612c7d90919063ffffffff16565b91505b5b5b5b5b5b5090565b600061278e82426130d2565b9050919050565b60025481565b6000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60035481565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128eb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561292557600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a54421015801561297f57506000600a54115b61298857600080fd5b6000429050600061299984836130d2565b9050600081116129ae57600092505050612bf2565b6000600f54905060006129e0600e546129d2600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612a0757612a006064600f546102bc02612c7d90919063ffffffff16565b9050612bbe565b6001612a32600e54612a24600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612a5957612a526064600f5461019a02612c7d90919063ffffffff16565b9050612bbd565b6002612a84600e54612a76600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612aaa57612aa36064600f5460e602612c7d90919063ffffffff16565b9050612bbc565b6003612ad5600e54612ac7600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612afb57612af46064600f54607802612c7d90919063ffffffff16565b9050612bbb565b6004612b26600e54612b18600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612b4c57612b456064600f54604002612c7d90919063ffffffff16565b9050612bba565b6005612b77600e54612b69600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612b9d57612b966064600f54602002612c7d90919063ffffffff16565b9050612bb9565b612bb66064600f54601002612c7d90919063ffffffff16565b90505b5b5b5b5b5b612bec600760009054906101000a900460ff1660ff16600a0a61016d02828402612c7d90919063ffffffff16565b93505050505b919050565b600080831415612c0a5760009050612c77565b6000828402905082848281612c1b57fe5b0414612c72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138386021913960400191505060405180910390fd5b809150505b92915050565b6000612cbf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506134f5565b905092915050565b6000612d0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135bb565b905092915050565b600080828401905083811015612d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b602060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156130cf576000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612fe257612f9a602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc790919063ffffffff16565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613028565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055505b50565b600080601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501161312657600090506134ef565b600080905060008090505b601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561341757613205600c54601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106131cb57fe5b9060005260206000200160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16612d1190919063ffffffff16565b8410156132115761340a565b600061329b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061326057fe5b9060005260206000200160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1686612cc790919063ffffffff16565b90506132a68661367b565b80156132b35750600d5481115b156132be57600d5490505b613356601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061330b57fe5b9060005260206000200160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1684612d1190919063ffffffff16565b9250613406613370600b5483612c7d90919063ffffffff16565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106133ba57fe5b9060005260206000200160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff160285612d1190919063ffffffff16565b9350505b8080600101915050613131565b506134218461367b565b801561342e575060155481115b156134ed5760006134be601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154811061348357fe5b9060005260206000200160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1685612cc790919063ffffffff16565b9050600d548111156134d057600d5490505b6134e5600b5482612c7d90919063ffffffff16565b601554029250505b505b92915050565b600080831182906135a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561356657808201518184015260208101905061354b565b50505050905090810190601f1680156135935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816135ad57fe5b049050809150509392505050565b6000838311158290613668576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561362d578082015181840152602081019050613612565b50505050905090810190601f16801561365a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806137265750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061377e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561378c5760009050613791565b600190505b919050565b50805460008255906000526020600020908101906137b491906137b7565b50565b61381191905b8082111561380d57600080820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff0219169055506001016137bd565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820adff739ebb4ad1fad4adb360c67a79d806c7cf5503e19c68f2538708924bd4dc64736f6c63430005100032546f4b656e2045594b4320436f696e20284f726967696e616c206e616d6520594b4329
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063b2552fc411610097578063dd62ed3e11610071578063dd62ed3e1461079e578063e1c3bac614610816578063e709877a14610834578063f2fde38b146108b8576101a9565b8063b2552fc41461070a578063ca21d8bd14610728578063cbd8877e14610780576101a9565b80639e85bc83116100d35780639e85bc83146106105780639fd4da4014610668578063a58203df14610686578063a9059cbb146106a4576101a9565b80638da5cb5b1461051557806390762a8b1461055f57806395d89b411461058d576101a9565b80632ab4d052116101665780636dd7d8ea116101405780636dd7d8ea146103eb57806370a08231146104475780637419f1901461049f5780637fb8b61e146104bd576101a9565b80632ab4d0521461038b578063313ce567146103a957806342cbb15c146103cd576101a9565b806306fdde03146101ae578063095ea7b3146102315780631249c58b1461029757806318160ddd146102b95780631ca8baaf146102d757806323b872dd14610305575b600080fd5b6101b66108fc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061099e565b604051808215151515815260200191505060405180910390f35b61029f610b27565b604051808215151515815260200191505060405180910390f35b6102c161116b565b6040518082815260200191505060405180910390f35b610303600480360360208110156102ed57600080fd5b8101908080359060200190929190505050611171565b005b6103716004803603606081101561031b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ec565b604051808215151515815260200191505060405180910390f35b610393611817565b6040518082815260200191505060405180910390f35b6103b161181d565b604051808260ff1660ff16815260200191505060405180910390f35b6103d5611834565b6040518082815260200191505060405180910390f35b61042d6004803603602081101561040157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611850565b604051808215151515815260200191505060405180910390f35b6104896004803603602081101561045d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b22565b6040518082815260200191505060405180910390f35b6104a7611b6b565b6040518082815260200191505060405180910390f35b6104ff600480360360208110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b71565b6040518082815260200191505060405180910390f35b61051d611bd8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058b6004803603602081101561057557600080fd5b8101908080359060200190929190505050611bfe565b005b610595611f31565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105d55780820151818401526020810190506105ba565b50505050905090810190601f1680156106025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106526004803603602081101561062657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fd3565b6040518082815260200191505060405180910390f35b61067061203a565b6040518082815260200191505060405180910390f35b61068e612040565b6040518082815260200191505060405180910390f35b6106f0600480360360408110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612046565b604051808215151515815260200191505060405180910390f35b61071261256a565b6040518082815260200191505060405180910390f35b61076a6004803603602081101561073e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612782565b6040518082815260200191505060405180910390f35b610788612795565b6040518082815260200191505060405180910390f35b610800600480360360408110156107b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061279b565b6040518082815260200191505060405180910390f35b61081e612822565b6040518082815260200191505060405180910390f35b6108766004803603602081101561084a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612828565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108fa600480360360208110156108ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612891565b005b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109945780601f1061096957610100808354040283529160200191610994565b820191906000526020600020905b81548152906001019060200180831161097757829003601f168201915b5050505050905090565b6000808214158015610a2d57506000601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610a3757600080fd5b81601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600060195460185410610b3957600080fd5b6000602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610bee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d75737420766f746520746f206e6f646500000000000000000000000000000081525060200191505060405180910390fd5b6000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610c3e5760009050611168565b6000601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610c915760009050611168565b6000610c9c33612969565b905060008111610cb0576000915050611168565b6000610cda6064610ccc60165485612bf790919063ffffffff16565b612c7d90919063ffffffff16565b90506000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050601454601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610eb8576000610d9e8385612cc790919063ffffffff16565b9050610db581601854612d1190919063ffffffff16565b601881905550610e0d81601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505b610ecd82601854612d1190919063ffffffff16565b601881905550610f2582601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fb39190613796565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546fffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600193505050505b90565b60185481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111cb57600080fd5b600760009054906101000a900460ff1660ff16600a0a810260148190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611273576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806138156023913960400191505060405180910390fd5b6000601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061134683601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc790919063ffffffff16565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113db83601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114318382612cc790919063ffffffff16565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a36000601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011156115ad57601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006115ac9190613796565b5b6000429050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280601b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546fffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280866fffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505061180a86612d99565b6001925050509392505050565b60195481565b6000600760009054906101000a900460ff16905090565b600061184b60095443612cc790919063ffffffff16565b905090565b6000601454601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f64652062616c616e636520746f6f206c6f7700000000000000000000000081525060200191505060405180910390fd5b6000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060155481111561195c5760155490505b6119ae81601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f66a9138482c99e9baf08860110ef332cc0c23b4a199a53593d8db0fc8f96fbfc836040518082815260200191505060405180910390a36001915050919050565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60015481565b6000600760009054906101000a900460ff1660ff16600a0a601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481611bd057fe5b049050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c5857600080fd5b60008111611c6557600080fd5b611cb781601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc790919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611d459190613796565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546fffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050611ea181601854612cc790919063ffffffff16565b601881905550611ebc81601a54612cc790919063ffffffff16565b601a81905550611eda600a8202601954612cc790919063ffffffff16565b6019819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a250565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fc95780601f10611f9e57610100808354040283529160200191611fc9565b820191906000526020600020905b815481529060010190602001808311611fac57829003601f168201915b5050505050905090565b6000600760009054906101000a900460ff1660ff16600a0a602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548161203257fe5b049050919050565b601a5481565b60145481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806120ad57508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156120c1576120ba610b27565b9050612564565b6017548214156120db576120d483611850565b9050612564565b61212d82601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc790919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121c282601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1190919063ffffffff16565b601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36000601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050111561230157601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006123009190613796565b5b6000429050601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546fffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280856fffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505061255e33612d99565b60019150505b92915050565b600080429050600f54915060006125a0600e54612592600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b14156125c7576125c06064600f546102bc02612c7d90919063ffffffff16565b915061277e565b60016125f2600e546125e4600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612619576126126064600f5461019a02612c7d90919063ffffffff16565b915061277d565b6002612644600e54612636600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b141561266a576126636064600f5460e602612c7d90919063ffffffff16565b915061277c565b6003612695600e54612687600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b14156126bb576126b46064600f54607802612c7d90919063ffffffff16565b915061277b565b60046126e6600e546126d8600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b141561270c576127056064600f54604002612c7d90919063ffffffff16565b915061277a565b6005612737600e54612729600a5485612cc790919063ffffffff16565b612c7d90919063ffffffff16565b141561275d576127566064600f54602002612c7d90919063ffffffff16565b9150612779565b6127766064600f54601002612c7d90919063ffffffff16565b91505b5b5b5b5b5b5090565b600061278e82426130d2565b9050919050565b60025481565b6000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60035481565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128eb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561292557600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a54421015801561297f57506000600a54115b61298857600080fd5b6000429050600061299984836130d2565b9050600081116129ae57600092505050612bf2565b6000600f54905060006129e0600e546129d2600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612a0757612a006064600f546102bc02612c7d90919063ffffffff16565b9050612bbe565b6001612a32600e54612a24600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612a5957612a526064600f5461019a02612c7d90919063ffffffff16565b9050612bbd565b6002612a84600e54612a76600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612aaa57612aa36064600f5460e602612c7d90919063ffffffff16565b9050612bbc565b6003612ad5600e54612ac7600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612afb57612af46064600f54607802612c7d90919063ffffffff16565b9050612bbb565b6004612b26600e54612b18600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612b4c57612b456064600f54604002612c7d90919063ffffffff16565b9050612bba565b6005612b77600e54612b69600a5487612cc790919063ffffffff16565b612c7d90919063ffffffff16565b1415612b9d57612b966064600f54602002612c7d90919063ffffffff16565b9050612bb9565b612bb66064600f54601002612c7d90919063ffffffff16565b90505b5b5b5b5b5b612bec600760009054906101000a900460ff1660ff16600a0a61016d02828402612c7d90919063ffffffff16565b93505050505b919050565b600080831415612c0a5760009050612c77565b6000828402905082848281612c1b57fe5b0414612c72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138386021913960400191505060405180910390fd5b809150505b92915050565b6000612cbf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506134f5565b905092915050565b6000612d0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135bb565b905092915050565b600080828401905083811015612d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b602060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156130cf576000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612fe257612f9a602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cc790919063ffffffff16565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613028565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055505b50565b600080601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501161312657600090506134ef565b600080905060008090505b601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561341757613205600c54601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106131cb57fe5b9060005260206000200160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16612d1190919063ffffffff16565b8410156132115761340a565b600061329b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061326057fe5b9060005260206000200160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1686612cc790919063ffffffff16565b90506132a68661367b565b80156132b35750600d5481115b156132be57600d5490505b613356601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061330b57fe5b9060005260206000200160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1684612d1190919063ffffffff16565b9250613406613370600b5483612c7d90919063ffffffff16565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106133ba57fe5b9060005260206000200160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff160285612d1190919063ffffffff16565b9350505b8080600101915050613131565b506134218461367b565b801561342e575060155481115b156134ed5760006134be601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154811061348357fe5b9060005260206000200160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1685612cc790919063ffffffff16565b9050600d548111156134d057600d5490505b6134e5600b5482612c7d90919063ffffffff16565b601554029250505b505b92915050565b600080831182906135a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561356657808201518184015260208101905061354b565b50505050905090810190601f1680156135935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816135ad57fe5b049050809150509392505050565b6000838311158290613668576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561362d578082015181840152602081019050613612565b50505050905090810190601f16801561365a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806137265750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061377e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561378c5760009050613791565b600190505b919050565b50805460008255906000526020600020908101906137b491906137b7565b50565b61381191905b8082111561380d57600080820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556000820160106101000a81549067ffffffffffffffff0219169055506001016137bd565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820adff739ebb4ad1fad4adb360c67a79d806c7cf5503e19c68f2538708924bd4dc64736f6c63430005100032
Deployed Bytecode Sourcemap
7571:13327:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7571:13327:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10201:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10201:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12841:594;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12841:594:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14160:1161;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8864:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19811:125;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19811:125:0;;;;;;;;;;;;;;;;;:::i;:::-;;11392:936;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11392:936:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8894:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10391:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15329:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13598:550;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13598:550:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11269:115;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11269:115:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7282:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19944:145;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19944:145:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5679:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20383:512;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20383:512:0;;;;;;;;;;;;;;;;;:::i;:::-;;10294:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10294:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20220:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20220:148:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8927:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8584:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10486:775;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10486:775:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15608:998;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15477:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15477:123:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7318:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13443:146;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13443:146:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7351:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20097:115;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20097:115:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6253:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6253:139:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10201:83;10238:13;10271:5;10264:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10201:83;:::o;12841:594::-;12908:4;13248:1;13238:6;:11;;13237:53;;;;;13288:1;13255:7;:19;13263:10;13255:19;;;;;;;;;;;;;;;:29;13275:8;13255:29;;;;;;;;;;;;;;;;:34;;13237:53;13233:67;;;13292:8;;;13233:67;13345:6;13313:7;:19;13321:10;13313:19;;;;;;;;;;;;;;;:29;13333:8;13313:29;;;;;;;;;;;;;;;:38;;;;13388:8;13367:38;;13376:10;13367:38;;;13398:6;13367:38;;;;;;;;;;;;;;;;;;13423:4;13416:11;;12841:594;;;;:::o;14160:1161::-;14203:4;9686:14;;9672:11;;:28;9664:37;;;;;;14255:1;14228:12;:24;14241:10;14228:24;;;;;;;;;;;;;;;;:28;14220:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14318:1;14294:8;:20;14303:10;14294:20;;;;;;;;;;;;;;;;:25;14291:56;;14342:5;14335:12;;;;14291:56;14397:1;14363:11;:23;14375:10;14363:23;;;;;;;;;;;;;;;:30;;;;:35;14360:66;;14421:5;14414:12;;;;14360:66;14447:11;14461:33;14483:10;14461:21;:33::i;:::-;14447:47;;14518:1;14508:6;:11;14505:42;;14542:5;14535:12;;;;;14505:42;14568:16;14587:33;14616:3;14587:24;14598:12;;14587:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;14568:52;;14633:12;14648:10;:22;14659:10;14648:22;;;;;;;;;;;;;;;;;;;;;;;;;14633:37;;14702:14;;14685:8;:14;14694:4;14685:14;;;;;;;;;;;;;;;;:31;14681:283;;;14735:15;14753:23;14764:11;14753:6;:10;;:23;;;;:::i;:::-;14735:41;;14805:27;14821:10;14805:11;;:15;;:27;;;;:::i;:::-;14791:11;:41;;;;14864:30;14883:10;14864:8;:14;14873:4;14864:14;;;;;;;;;;;;;;;;:18;;:30;;;;:::i;:::-;14847:8;:14;14856:4;14847:14;;;;;;;;;;;;;;;:47;;;;14935:4;14914:38;;14931:1;14914:38;;;14941:10;14914:38;;;;;;;;;;;;;;;;;;14681:283;;14988:28;15004:11;14988;;:15;;:28;;;;:::i;:::-;14974:11;:42;;;;15050:37;15075:11;15050:8;:20;15059:10;15050:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;15027:8;:20;15036:10;15027:20;;;;;;;;;;;;;;;:60;;;;15105:11;:23;15117:10;15105:23;;;;;;;;;;;;;;;;15098:30;;;;:::i;:::-;15139:11;:23;15151:10;15139:23;;;;;;;;;;;;;;;15168:59;;;;;;;;15193:8;:20;15202:10;15193:20;;;;;;;;;;;;;;;;15168:59;;;;;;15222:3;15168:59;;;;;15139:89;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;15139:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15267:10;15246:45;;15263:1;15246:45;;;15279:11;15246:45;;;;;;;;;;;;;;;;;;15309:4;15302:11;;;;;9712:1;14160:1161;:::o;8864:23::-;;;;:::o;19811:125::-;6048:5;;;;;;;;;;;6034:19;;:10;:19;;;6026:28;;;;;;19917:9;;;;;;;;;;;19912:15;;19906:2;:21;19896:6;:32;19879:14;:49;;;;19811:125;:::o;11392:936::-;11474:4;11514:1;11499:17;;:3;:17;;;;11491:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11569:18;11590:7;:14;11598:5;11590:14;;;;;;;;;;;;;;;:26;11605:10;11590:26;;;;;;;;;;;;;;;;11569:47;;11805:27;11825:6;11805:8;:15;11814:5;11805:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11787:8;:15;11796:5;11787:15;;;;;;;;;;;;;;;:45;;;;11859:25;11877:6;11859:8;:13;11868:3;11859:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;11843:8;:13;11852:3;11843:13;;;;;;;;;;;;;;;:41;;;;11924:22;11939:6;11924:10;:14;;:22;;;;:::i;:::-;11895:7;:14;11903:5;11895:14;;;;;;;;;;;;;;;:26;11910:10;11895:26;;;;;;;;;;;;;;;:51;;;;11978:3;11962:28;;11971:5;11962:28;;;11983:6;11962:28;;;;;;;;;;;;;;;;;;12034:1;12006:11;:18;12018:5;12006:18;;;;;;;;;;;;;;;:25;;;;:29;12003:73;;;12058:11;:18;12070:5;12058:18;;;;;;;;;;;;;;;;12051:25;;;;:::i;:::-;12003:73;12089:11;12110:3;12089:25;;12125:11;:18;12137:5;12125:18;;;;;;;;;;;;;;;12149:47;;;;;;;;12174:8;:15;12183:5;12174:15;;;;;;;;;;;;;;;;12149:47;;;;;;12191:4;12149:47;;;;;12125:72;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;12125:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12208:11;:16;12220:3;12208:16;;;;;;;;;;;;;;;12230:38;;;;;;;;12255:6;12230:38;;;;;;12263:4;12230:38;;;;;12208:61;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;12208:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12280:18;12292:5;12280:11;:18::i;:::-;12316:4;12309:11;;;;11392:936;;;;;:::o;8894:26::-;;;;:::o;10391:83::-;10432:5;10457:9;;;;;;;;;;;10450:16;;10391:83;:::o;15329:137::-;15376:16;15419:39;15436:21;;15419:12;:16;;:39;;;;:::i;:::-;15405:53;;15329:137;:::o;13598:550::-;13643:4;13686:14;;13668:8;:15;13677:5;13668:15;;;;;;;;;;;;;;;;:32;13660:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13738:17;13758:8;:20;13767:10;13758:20;;;;;;;;;;;;;;;;13738:40;;13820:15;;13805:12;:30;13801:93;;;13867:15;;13852:30;;13801:93;13924:35;13946:12;13924:10;:17;13935:5;13924:17;;;;;;;;;;;;;;;;:21;;:35;;;;:::i;:::-;13904:10;:17;13915:5;13904:17;;;;;;;;;;;;;;;:55;;;;13999:5;13974:10;:22;13985:10;13974:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;14043:12;14016;:24;14029:10;14016:24;;;;;;;;;;;;;;;:39;;;;14088:5;14071:37;;14076:10;14071:37;;;14095:12;14071:37;;;;;;;;;;;;;;;;;;14136:4;14129:11;;;13598:550;;;:::o;11269:115::-;11325:15;11360:8;:16;11369:6;11360:16;;;;;;;;;;;;;;;;11353:23;;11269:115;;;:::o;7282:29::-;;;;:::o;19944:145::-;20002:15;20069:9;;;;;;;;;;;20064:15;;20058:2;:21;20037:10;:17;20048:5;20037:17;;;;;;;;;;;;;;;;:43;;;;;;20030:50;;19944:145;;;:::o;5679:20::-;;;;;;;;;;;;;:::o;20383:512::-;6048:5;;;;;;;;;;;6034:19;;:10;:19;;;6026:28;;;;;;20465:1;20456:6;:10;20448:19;;;;;;20503:32;20528:6;20503:8;:20;20512:10;20503:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20480:8;:20;20489:10;20480:20;;;;;;;;;;;;;;;:55;;;;20553:11;:23;20565:10;20553:23;;;;;;;;;;;;;;;;20546:30;;;;:::i;:::-;20587:11;:23;20599:10;20587:23;;;;;;;;;;;;;;;20616:59;;;;;;;;20641:8;:20;20650:10;20641:20;;;;;;;;;;;;;;;;20616:59;;;;;;20670:3;20616:59;;;;;20587:89;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;20587:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20703:23;20719:6;20703:11;;:15;;:23;;;;:::i;:::-;20689:11;:37;;;;20758:30;20781:6;20758:18;;:22;;:30;;;;:::i;:::-;20737:18;:51;;;;20816:29;20842:2;20835:6;:9;20816:14;;:18;;:29;;;;:::i;:::-;20799:14;:46;;;;20868:10;20863:24;;;20880:6;20863:24;;;;;;;;;;;;;;;;;;20383:512;:::o;10294:87::-;10333:13;10366:7;10359:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10294:87;:::o;20220:148::-;20279:15;20349:9;;;;;;;;;;;20344:15;;20338:2;:21;20314:12;:20;20327:6;20314:20;;;;;;;;;;;;;;;;:46;;;;;;20307:53;;20220:148;;;:::o;8927:30::-;;;;:::o;8584:64::-;;;;:::o;10486:775::-;10549:4;10585:1;10570:17;;:3;:17;;;:38;;;;10605:3;10591:17;;:10;:17;;;10570:38;10566:73;;;10633:6;:4;:6::i;:::-;10626:13;;;;10566:73;10674:16;;10664:6;:26;10660:61;;;10712:9;10717:3;10712:4;:9::i;:::-;10705:16;;;;10660:61;10765:32;10790:6;10765:8;:20;10774:10;10765:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10742:8;:20;10751:10;10742:20;;;;;;;;;;;;;;;:55;;;;10824:25;10842:6;10824:8;:13;10833:3;10824:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;10808:8;:13;10817:3;10808:13;;;;;;;;;;;;;;;:41;;;;10886:3;10865:33;;10874:10;10865:33;;;10891:6;10865:33;;;;;;;;;;;;;;;;;;10947:1;10914:11;:23;10926:10;10914:23;;;;;;;;;;;;;;;:30;;;;:34;10911:83;;;10971:11;:23;10983:10;10971:23;;;;;;;;;;;;;;;;10964:30;;;;:::i;:::-;10911:83;11007:11;11028:3;11007:25;;11043:11;:23;11055:10;11043:23;;;;;;;;;;;;;;;11072:52;;;;;;;;11097:8;:20;11106:10;11097:20;;;;;;;;;;;;;;;;11072:52;;;;;;11119:4;11072:52;;;;;11043:82;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;11043:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11136:11;:16;11148:3;11136:16;;;;;;;;;;;;;;;11158:38;;;;;;;;11183:6;11158:38;;;;;;11191:4;11158:38;;;;;11136:61;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;11136:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11208:23;11220:10;11208:11;:23::i;:::-;11249:4;11242:11;;;10486:775;;;;;:::o;15608:998::-;15656:13;15682:9;15694:3;15682:15;;15719:19;;15708:30;;15805:1;15762:39;15793:7;;15763:24;15772:14;;15763:4;:8;;:24;;;;:::i;:::-;15762:30;;:39;;;;:::i;:::-;:44;15759:840;;;15834:36;15866:3;15841:19;;15835:3;:25;15834:31;;:36;;;;:::i;:::-;15823:47;;15759:840;;;15934:1;15891:39;15922:7;;15892:24;15901:14;;15892:4;:8;;:24;;;;:::i;:::-;15891:30;;:39;;;;:::i;:::-;:44;15888:711;;;15962:36;15994:3;15969:19;;15963:3;:25;15962:31;;:36;;;;:::i;:::-;15951:47;;15888:711;;;16062:1;16019:39;16050:7;;16020:24;16029:14;;16020:4;:8;;:24;;;;:::i;:::-;16019:30;;:39;;;;:::i;:::-;:44;16016:583;;;16090:36;16122:3;16097:19;;16091:3;:25;16090:31;;:36;;;;:::i;:::-;16079:47;;16016:583;;;16190:1;16147:39;16178:7;;16148:24;16157:14;;16148:4;:8;;:24;;;;:::i;:::-;16147:30;;:39;;;;:::i;:::-;:44;16144:455;;;16218:36;16250:3;16225:19;;16219:3;:25;16218:31;;:36;;;;:::i;:::-;16207:47;;16144:455;;;16318:1;16275:39;16306:7;;16276:24;16285:14;;16276:4;:8;;:24;;;;:::i;:::-;16275:30;;:39;;;;:::i;:::-;:44;16272:327;;;16346:35;16377:3;16352:19;;16347:2;:24;16346:30;;:35;;;;:::i;:::-;16335:46;;16272:327;;;16445:1;16402:39;16433:7;;16403:24;16412:14;;16403:4;:8;;:24;;;;:::i;:::-;16402:30;;:39;;;;:::i;:::-;:44;16399:200;;;16473:35;16504:3;16479:19;;16474:2;:24;16473:30;;:35;;;;:::i;:::-;16462:46;;16399:200;;;16552:35;16583:3;16558:19;;16553:2;:24;16552:30;;:35;;;;:::i;:::-;16541:46;;16399:200;16272:327;16144:455;16016:583;15888:711;15759:840;15608:998;;:::o;15477:123::-;15533:14;15572:20;15583:4;15588:3;15572:10;:20::i;:::-;15560:32;;15477:123;;;:::o;7318:26::-;;;;:::o;13443:146::-;13519:17;13556:7;:15;13564:6;13556:15;;;;;;;;;;;;;;;:25;13572:8;13556:25;;;;;;;;;;;;;;;;13549:32;;13443:146;;;;:::o;7351:26::-;;;;:::o;20097:115::-;20154:12;20186:10;:18;20197:6;20186:18;;;;;;;;;;;;;;;;;;;;;;;;;20179:25;;20097:115;;;:::o;6253:139::-;6048:5;;;;;;;;;;;6034:19;;:10;:19;;;6026:28;;;;;;6354:1;6334:22;;:8;:22;;;;6326:31;;;;;;6376:8;6368:5;;:16;;;;;;;;;;;;;;;;;;6253:139;:::o;16614:1847::-;16685:4;16719:14;;16712:3;:21;;16711:47;;;;;16756:1;16739:14;;:18;16711:47;16702:58;;;;;;16773:9;16785:3;16773:15;;16799:13;16815:26;16826:8;16836:4;16815:10;:26::i;:::-;16799:42;;16867:1;16855:8;:13;16852:40;;16891:1;16884:8;;;;;;16852:40;16905:13;16921:19;;16905:35;;17244:1;17201:39;17232:7;;17202:24;17211:14;;17202:4;:8;;:24;;;;:::i;:::-;17201:30;;:39;;;;:::i;:::-;:44;17198:1182;;;17405:36;17437:3;17412:19;;17406:3;:25;17405:31;;:36;;;;:::i;:::-;17394:47;;17198:1182;;;17505:1;17462:39;17493:7;;17463:24;17472:14;;17463:4;:8;;:24;;;;:::i;:::-;17462:30;;:39;;;;:::i;:::-;:44;17459:921;;;17596:36;17628:3;17603:19;;17597:3;:25;17596:31;;:36;;;;:::i;:::-;17585:47;;17459:921;;;17696:1;17653:39;17684:7;;17654:24;17663:14;;17654:4;:8;;:24;;;;:::i;:::-;17653:30;;:39;;;;:::i;:::-;:44;17650:730;;;17787:36;17819:3;17794:19;;17788:3;:25;17787:31;;:36;;;;:::i;:::-;17776:47;;17650:730;;;17887:1;17844:39;17875:7;;17845:24;17854:14;;17845:4;:8;;:24;;;;:::i;:::-;17844:30;;:39;;;;:::i;:::-;:44;17841:539;;;17935:36;17967:3;17942:19;;17936:3;:25;17935:31;;:36;;;;:::i;:::-;17924:47;;17841:539;;;18035:1;17992:39;18023:7;;17993:24;18002:14;;17993:4;:8;;:24;;;;:::i;:::-;17992:30;;:39;;;;:::i;:::-;:44;17989:391;;;18083:35;18114:3;18089:19;;18084:2;:24;18083:30;;:35;;;;:::i;:::-;18072:46;;17989:391;;;18182:1;18139:39;18170:7;;18140:24;18149:14;;18140:4;:8;;:24;;;;:::i;:::-;18139:30;;:39;;;;:::i;:::-;:44;18136:244;;;18230:35;18261:3;18236:19;;18231:2;:24;18230:30;;:35;;;;:::i;:::-;18219:46;;18136:244;;;18333:35;18364:3;18339:19;;18334:2;:24;18333:30;;:35;;;;:::i;:::-;18322:46;;18136:244;17989:391;17841:539;17650:730;17459:921;17198:1182;18399:54;18441:9;;;;;;;;;;;18436:15;;18432:2;:19;18425:3;:27;18411:8;18400;:19;18399:25;;:54;;;;:::i;:::-;18392:61;;;;;16614:1847;;;;:::o;2233:471::-;2291:7;2541:1;2536;:6;2532:47;;;2566:1;2559:8;;;;2532:47;2591:9;2607:1;2603;:5;2591:17;;2636:1;2631;2627;:5;;;;;;:10;2619:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2695:1;2688:8;;;2233:471;;;;;:::o;3172:132::-;3230:7;3257:39;3261:1;3264;3257:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3250:46;;3172:132;;;;:::o;1317:136::-;1375:7;1402:43;1406:1;1409;1402:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1395:50;;1317:136;;;;:::o;861:181::-;919:7;939:9;955:1;951;:5;939:17;;980:1;975;:6;;967:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1033:1;1026:8;;;861:181;;;;:::o;12340:493::-;12421:12;:19;12434:5;12421:19;;;;;;;;;;;;;;;;12403:8;:15;12412:5;12403:15;;;;;;;;;;;;;;;;:37;12399:427;;;12457:12;12472:10;:17;12483:5;12472:17;;;;;;;;;;;;;;;;;;;;;;;;;12457:32;;12541:12;:19;12554:5;12541:19;;;;;;;;;;;;;;;;12522:10;:16;12533:4;12522:16;;;;;;;;;;;;;;;;:38;12518:199;;;12600:41;12621:12;:19;12634:5;12621:19;;;;;;;;;;;;;;;;12600:10;:16;12611:4;12600:16;;;;;;;;;;;;;;;;:20;;:41;;;;:::i;:::-;12581:10;:16;12592:4;12581:16;;;;;;;;;;;;;;;:60;;;;12518:199;;;12700:1;12681:10;:16;12692:4;12681:16;;;;;;;;;;;;;;;:20;;;;12518:199;12756:10;:17;12767:5;12756:17;;;;;;;;;;;;;;;;12749:24;;;;;;;;;;;12795:12;:19;12808:5;12795:19;;;;;;;;;;;;;;;12788:26;;;12399:427;;12340:493;:::o;18469:1128::-;18540:13;18601:1;18569:11;:21;18581:8;18569:21;;;;;;;;;;;;;;;:28;;;;:33;18566:60;;18625:1;18618:8;;;;18566:60;18639:14;18656:1;18639:18;;18673:6;18682:1;18673:10;;18668:559;18689:11;:21;18701:8;18689:21;;;;;;;;;;;;;;;:28;;;;18685:1;:32;18668:559;;;18749:52;18789:11;;18754;:21;18766:8;18754:21;;;;;;;;;;;;;;;18776:1;18754:24;;;;;;;;;;;;;;;:29;;;;;;;;;;;;18749:35;;:39;;:52;;;;:::i;:::-;18742:4;:59;18738:92;;;18822:8;;18738:92;18847:17;18867:45;18881:11;:21;18893:8;18881:21;;;;;;;;;;;;;;;18903:1;18881:24;;;;;;;;;;;;;;;:29;;;;;;;;;;;;18876:35;;18867:4;:8;;:45;;;;:::i;:::-;18847:65;;18931:18;18940:8;18931;:18::i;:::-;:50;;;;;18969:11;;18954:12;:26;18931:50;18927:101;;;19017:11;;19002:26;;18927:101;19057:54;19077:11;:21;19089:8;19077:21;;;;;;;;;;;;;;;19099:1;19077:24;;;;;;;;;;;;;;;:31;;;;;;;;;;;;19072:37;;19057:9;:13;;:54;;;;:::i;:::-;19045:66;;19137:78;19190:24;19207:6;;19190:12;:16;;:24;;;;:::i;:::-;19155:11;:21;19167:8;19155:21;;;;;;;;;;;;;;;19177:1;19155:24;;;;;;;;;;;;;;;:31;;;;;;;;;;;;19150:37;;:64;19137:8;:12;;:78;;;;:::i;:::-;19126:89;;18668:559;;18719:3;;;;;;;18668:559;;;;19244:18;19253:8;19244;:18::i;:::-;:51;;;;;19279:15;;19267:9;:27;19244:51;19239:351;;;19313:17;19333:45;19347:11;:21;19359:8;19347:21;;;;;;;;;;;;;;;19369:1;19347:24;;;;;;;;;;;;;;;:29;;;;;;;;;;;;19342:35;;19333:4;:8;;:45;;;;:::i;:::-;19313:65;;19433:11;;19418:12;:26;19414:77;;;19480:11;;19465:26;;19414:77;19553:24;19570:6;;19553:12;:16;;:24;;;;:::i;:::-;19535:15;;:42;19524:53;;19239:351;;18469:1128;;;;;;:::o;3834:345::-;3920:7;4019:1;4015;:5;4022:12;4007:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4007:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4046:9;4062:1;4058;:5;;;;;;4046:17;;4170:1;4163:8;;;3834:345;;;;;:::o;1790:192::-;1876:7;1909:1;1904;:6;;1912:12;1896:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1896:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:9;1952:1;1948;:5;1936:17;;1973:1;1966:8;;;1790:192;;;;;:::o;19606:196::-;19662:4;19692:2;;;;;;;;;;;19683:11;;:5;:11;;;:26;;;;19707:2;;;;;;;;;;;19698:11;;:5;:11;;;19683:26;:41;;;;19722:2;;;;;;;;;;;19713:11;;:5;:11;;;19683:41;19679:73;;;19747:5;19740:12;;;;19679:73;19786:4;19779:11;;19606:196;;;;:::o;7571:13327::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://adff739ebb4ad1fad4adb360c67a79d806c7cf5503e19c68f2538708924bd4dc
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.