ERC-20
Overview
Max Total Supply
198,413.076351147452454224 GEAR
Holders
49
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
GearProtocol
Compiler Version
v0.4.26+commit.4563c3fc
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-07-12 */ /** Official Website: https://GearProtocol.com */ pragma solidity ^0.4.25; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes data) external; } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } function ceil(uint256 a, uint256 m) internal pure returns (uint256) { uint256 c = add(a,m); uint256 d = sub(c,1); return mul(div(d,m),m); } } contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor(string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } 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; } } contract GearProtocol is ERC20Detailed { using SafeMath for uint256; mapping (address => uint256) private balances; mapping (address => mapping (address => uint256)) private allowed; string constant tokenName = "GearProtocol"; string constant tokenSymbol = "GEAR"; uint8 constant tokenDecimals = 18; uint256 _totalSupply = 0; address public contractOwner; uint256 public fullUnitsStaked_total = 0; mapping (address => bool) public isStaking; uint256 _totalRewardsPerUnit = 0; mapping (address => uint256) private _totalRewardsPerUnit_positions; mapping (address => uint256) private _savedRewards; //these addresses won't be affected by burn,ie liquidity pools mapping(address => bool) public whitelistFrom; mapping(address => bool) public whitelistTo; event WhitelistFrom(address _addr, bool _whitelisted); event WhitelistTo(address _addr, bool _whitelisted); constructor() public payable ERC20Detailed(tokenName, tokenSymbol, tokenDecimals) { contractOwner = msg.sender; _mint(msg.sender, 550000000000000000000000); } modifier onlyOwner() { require(msg.sender == contractOwner, "only owner"); _; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address owner) public view returns (uint256) { return balances[owner]; } function fullUnitsStaked(address owner) external view returns (uint256) { return isStaking[owner] ? toFullUnits(balances[owner]) : 0; } function toFullUnits(uint256 valueWithDecimals) public pure returns (uint256) { return valueWithDecimals.div(10**uint256(tokenDecimals)); } function allowance(address owner, address spender) public view returns (uint256) { return allowed[owner][spender]; } function transfer(address to, uint256 value) public returns (bool) { _executeTransfer(msg.sender, to, value); return true; } function multiTransfer(address[] memory receivers, uint256[] memory values) public { require(receivers.length == values.length); for(uint256 i = 0; i < receivers.length; i++) _executeTransfer(msg.sender, receivers[i], values[i]); } function transferFrom(address from, address to, uint256 value) public returns (bool) { require(value <= allowed[from][msg.sender]); allowed[from][msg.sender] = allowed[from][msg.sender].sub(value); _executeTransfer(from, to, value); return true; } function approve(address spender, uint256 value) public returns (bool) { require(spender != address(0)); allowed[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function approveAndCall(address spender, uint256 tokens, bytes data) external returns (bool) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { require(spender != address(0)); allowed[msg.sender][spender] = (allowed[msg.sender][spender].add(addedValue)); emit Approval(msg.sender, spender, allowed[msg.sender][spender]); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { require(spender != address(0)); allowed[msg.sender][spender] = (allowed[msg.sender][spender].sub(subtractedValue)); emit Approval(msg.sender, spender, allowed[msg.sender][spender]); return true; } function _mint(address account, uint256 value) internal { require(value != 0); uint256 initalBalance = balances[account]; uint256 newBalance = initalBalance.add(value); balances[account] = newBalance; _totalSupply = _totalSupply.add(value); //update full units staked if(isStaking[account]) { uint256 fus_total = fullUnitsStaked_total; fus_total = fus_total.sub(toFullUnits(initalBalance)); fus_total = fus_total.add(toFullUnits(newBalance)); fullUnitsStaked_total = fus_total; } emit Transfer(address(0), account, value); } function burn(uint256 value) external { _burn(msg.sender, value); } function burnFrom(address account, uint256 value) external { require(value <= allowed[account][msg.sender]); allowed[account][msg.sender] = allowed[account][msg.sender].sub(value); _burn(account, value); } function _burn(address account, uint256 value) internal { require(value != 0); require(value <= balances[account]); uint256 initalBalance = balances[account]; uint256 newBalance = initalBalance.sub(value); balances[account] = newBalance; _totalSupply = _totalSupply.sub(value); //update full units staked if(isStaking[account]) { uint256 fus_total = fullUnitsStaked_total; fus_total = fus_total.sub(toFullUnits(initalBalance)); fus_total = fus_total.add(toFullUnits(newBalance)); fullUnitsStaked_total = fus_total; } emit Transfer(account, address(0), value); } /* * transfer incurring feee of 3% (burn and stake rewards) * the receiver gets 96% of the sent value * 3% are split to be burnt and distributed to stake pool */ function _executeTransfer(address from, address to, uint256 value) private { require(value <= balances[from]); require(to != address(0) && to != from); require(to != address(this)); //Update sender and receivers rewards - changing balances will change rewards shares updateRewardsFor(from); updateRewardsFor(to); uint256 threePercent = 0; uint256 twoPercent = 0; uint256 onePercent = 0; if(!whitelistFrom[from] && !whitelistTo[to]) { threePercent = value.mul(3).div(100); twoPercent = value.mul(2).div(100); onePercent = value.mul(1).div(100); //set a minimum burn rate to prevent no-burn-txs due to precision loss if(threePercent == 0 && value > 0) threePercent = 1; } uint256 initalBalance_from = balances[from]; balances[from] = initalBalance_from.sub(value); value = value.sub(threePercent); uint256 initalBalance_to = balances[to]; balances[to] = initalBalance_to.add(value); emit Transfer(from, to, value); //update full units staked uint256 fus_total = fullUnitsStaked_total; if(isStaking[from]) { fus_total = fus_total.sub(toFullUnits(initalBalance_from)); fus_total = fus_total.add(toFullUnits(balances[from])); } if(isStaking[to]) { fus_total = fus_total.sub(toFullUnits(initalBalance_to)); fus_total = fus_total.add(toFullUnits(balances[to])); } fullUnitsStaked_total = fus_total; uint256 amountToBurn = onePercent; if(fus_total > 0) { uint256 stakingRewards = twoPercent; //split up to rewards per unit in stake uint256 rewardsPerUnit = stakingRewards.div(fus_total); //apply rewards _totalRewardsPerUnit = _totalRewardsPerUnit.add(rewardsPerUnit); balances[address(this)] = balances[address(this)].add(stakingRewards); if(stakingRewards > 0) emit Transfer(msg.sender, address(this), stakingRewards); } //update total supply _totalSupply = _totalSupply.sub(amountToBurn); if(amountToBurn > 0) emit Transfer(msg.sender, address(0), amountToBurn); } //catch up with the current total rewards. This needs to be done before an addresses balance is changed function updateRewardsFor(address staker) private { _savedRewards[staker] = viewUnpaidRewards(staker); _totalRewardsPerUnit_positions[staker] = _totalRewardsPerUnit; } //get all rewards that have not been claimed yet function viewUnpaidRewards(address staker) public view returns (uint256) { if(!isStaking[staker]) return _savedRewards[staker]; uint256 newRewardsPerUnit = _totalRewardsPerUnit.sub(_totalRewardsPerUnit_positions[staker]); uint256 newRewards = newRewardsPerUnit.mul(toFullUnits(balances[staker])); return _savedRewards[staker].add(newRewards); } //pay out unclaimed rewards function payoutRewards() public { updateRewardsFor(msg.sender); uint256 rewards = _savedRewards[msg.sender]; require(rewards > 0 && rewards <= balances[address(this)]); _savedRewards[msg.sender] = 0; uint256 initalBalance_staker = balances[msg.sender]; uint256 newBalance_staker = initalBalance_staker.add(rewards); //update full units staked if(isStaking[msg.sender]) { uint256 fus_total = fullUnitsStaked_total; fus_total = fus_total.sub(toFullUnits(initalBalance_staker)); fus_total = fus_total.add(toFullUnits(newBalance_staker)); fullUnitsStaked_total = fus_total; } //transfer balances[address(this)] = balances[address(this)].sub(rewards); balances[msg.sender] = newBalance_staker; emit Transfer(address(this), msg.sender, rewards); } function enableStaking() public { _enableStaking(msg.sender); } function disableStaking() public { _disableStaking(msg.sender); } function enableStakingFor(address staker) public onlyOwner { _enableStaking(staker); } function disableStakingFor(address staker) public onlyOwner { _disableStaking(staker); } //enable staking for target address function _enableStaking(address staker) private { require(!isStaking[staker]); updateRewardsFor(staker); isStaking[staker] = true; fullUnitsStaked_total = fullUnitsStaked_total.add(toFullUnits(balances[staker])); } //disable staking for target address function _disableStaking(address staker) private { require(isStaking[staker]); updateRewardsFor(staker); isStaking[staker] = false; fullUnitsStaked_total = fullUnitsStaked_total.sub(toFullUnits(balances[staker])); } //withdraw tokens that were sent to this contract by accident function withdrawERC20Tokens(address tokenAddress, uint256 amount) public onlyOwner { require(tokenAddress != address(this)); IERC20(tokenAddress).transfer(msg.sender, amount); } //no fees if receiver is whitelisted function setWhitelistedTo(address _addr, bool _whitelisted) external onlyOwner { emit WhitelistTo(_addr, _whitelisted); whitelistTo[_addr] = _whitelisted; } //no fees if sender is whitelisted function setWhitelistedFrom(address _addr, bool _whitelisted) external onlyOwner { emit WhitelistFrom(_addr, _whitelisted); whitelistFrom[_addr] = _whitelisted; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistTo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"staker","type":"address"}],"name":"viewUnpaidRewards","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"payoutRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"staker","type":"address"}],"name":"disableStakingFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fullUnitsStaked_total","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isStaking","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"valueWithDecimals","type":"uint256"}],"name":"toFullUnits","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"fullUnitsStaked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawERC20Tokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"staker","type":"address"}],"name":"enableStakingFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60806040526000600555600060075560006009556040805190810160405280600c81526020017f4765617250726f746f636f6c00000000000000000000000000000000000000008152506040805190810160405280600481526020017f47454152000000000000000000000000000000000000000000000000000000008152506012826000908051906020019062000099929190620003f9565b508160019080519060200190620000b2929190620003f9565b5080600260006101000a81548160ff021916908360ff16021790555050505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000137336974778f4b571c4bc000006200013d640100000000026401000000009004565b620004a8565b60008060008084141515156200015257600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250620001b78484620003716401000000000262002e53179091906401000000009004565b915081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200022284600554620003716401000000000262002e53179091906401000000009004565b600581905550600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000304576007549050620002bc6200029e8462000390640100000000026401000000009004565b82620003c36401000000000262002dff179091906401000000009004565b9050620002fa620002dc8362000390640100000000026401000000009004565b82620003716401000000000262002e53179091906401000000009004565b9050806007819055505b8473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b60008082840190508381101515156200038657fe5b8091505092915050565b6000620003bc601260ff16600a0a83620003dd6401000000000262003242179091906401000000009004565b9050919050565b6000828211151515620003d257fe5b818303905092915050565b6000808284811515620003ec57fe5b0490508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043c57805160ff19168380011785556200046d565b828001600101855582156200046d579182015b828111156200046c5782518255916020019190600101906200044f565b5b5090506200047c919062000480565b5090565b620004a591905b80821115620004a157600081600090555060010162000487565b5090565b90565b6133a880620004b86000396000f30060806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610190578063095ea7b31461022057806316b627d11461028557806318160ddd146102e05780631e89d5451461030b578063223d0417146103b457806323b872dd1461040b57806328696de21461049057806329613086146104a7578063313ce567146104be57806339509351146104ef5780633f9fe75a1461055457806342966c681461059757806343684b21146105c45780634b56c39e1461061f5780636f49712b1461064a57806370a08231146106a557806379cc6790146106fc57806395d89b4114610749578063a457c2d7146107d9578063a486309d1461083e578063a9059cbb1461088d578063b1369e6a146108f2578063cae9ca5114610933578063ce606ee0146109b0578063d11aca6214610a07578063dd62ed3e14610a1e578063e1eae0b414610a95578063e49cb2fb14610aec578063e7b7365114610b39578063ff12bbf414610b7c575b600080fd5b34801561019c57600080fd5b506101a5610bcb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c6d565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b506102c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d9a565b604051808215151515815260200191505060405180910390f35b3480156102ec57600080fd5b506102f5610dba565b6040518082815260200191505060405180910390f35b34801561031757600080fd5b506103b26004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610dc4565b005b3480156103c057600080fd5b506103f5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e2f565b6040518082815260200191505060405180910390f35b34801561041757600080fd5b50610476600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fdc565b604051808215151515815260200191505060405180910390f35b34801561049c57600080fd5b506104a561118e565b005b3480156104b357600080fd5b506104bc611199565b005b3480156104ca57600080fd5b506104d36114bd565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104fb57600080fd5b5061053a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114d4565b604051808215151515815260200191505060405180910390f35b34801561056057600080fd5b50610595600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170b565b005b3480156105a357600080fd5b506105c2600480360381019080803590602001909291905050506117dc565b005b3480156105d057600080fd5b50610605600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e9565b604051808215151515815260200191505060405180910390f35b34801561062b57600080fd5b50610634611809565b6040518082815260200191505060405180910390f35b34801561065657600080fd5b5061068b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180f565b604051808215151515815260200191505060405180910390f35b3480156106b157600080fd5b506106e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182f565b6040518082815260200191505060405180910390f35b34801561070857600080fd5b50610747600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611878565b005b34801561075557600080fd5b5061075e611a20565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561079e578082015181840152602081019050610783565b50505050905090810190601f1680156107cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107e557600080fd5b50610824600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ac2565b604051808215151515815260200191505060405180910390f35b34801561084a57600080fd5b5061088b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611cf9565b005b34801561089957600080fd5b506108d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e88565b604051808215151515815260200191505060405180910390f35b3480156108fe57600080fd5b5061091d60048036038101908080359060200190929190505050611e9f565b6040518082815260200191505060405180910390f35b34801561093f57600080fd5b50610996600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050611ec2565b604051808215151515815260200191505060405180910390f35b3480156109bc57600080fd5b506109c56120c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1357600080fd5b50610a1c6120ed565b005b348015610a2a57600080fd5b50610a7f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120f8565b6040518082815260200191505060405180910390f35b348015610aa157600080fd5b50610ad6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061217f565b6040518082815260200191505060405180910390f35b348015610af857600080fd5b50610b37600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612229565b005b348015610b4557600080fd5b50610b7a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061240c565b005b348015610b8857600080fd5b50610bc9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506124dd565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c635780601f10610c3857610100808354040283529160200191610c63565b820191906000526020600020905b815481529060010190602001808311610c4657829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610caa57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b600081518351141515610dd657600080fd5b600090505b8251811015610e2a57610e1d338483815181101515610df657fe5b906020019060200201518484815181101515610e0e57fe5b9060200190602002015161266c565b8080600101915050610ddb565b505050565b6000806000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ece57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250610fd5565b610f22600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954612dff90919063ffffffff16565b9150610f7e610f6f600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b83612e1890919063ffffffff16565b9050610fd281600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5390919063ffffffff16565b92505b5050919050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561106957600080fd5b6110f882600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dff90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061118384848461266c565b600190509392505050565b61119733612e71565b565b6000806000806111a833612f8f565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205493506000841180156112395750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411155b151561124457600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506112de8484612e5390919063ffffffff16565b9150600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561137957600754905061135261134384611e9f565b82612dff90919063ffffffff16565b905061136f61136083611e9f565b82612e5390919063ffffffff16565b9050806007819055505b6113cb84600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dff90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561151157600080fd5b6115a082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5390919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6117d981612e71565b50565b6117e63382613024565b50565b600c6020528060005260406000206000915054906101000a900460ff1681565b60075481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561190357600080fd5b61199281600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dff90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a1c8282613024565b5050565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ab85780601f10611a8d57610100808354040283529160200191611ab8565b820191906000526020600020905b815481529060010190602001808311611a9b57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611aff57600080fd5b611b8e82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dff90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611e9533848461266c565b6001905092915050565b6000611ebb601260ff16600a0a8361324290919063ffffffff16565b9050919050565b600083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133863087876040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825284848281815260200192508082843782019150509650505050505050600060405180830381600087803b1580156120a357600080fd5b505af11580156120b7573d6000803e3d6000fd5b5050505060019050949350505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120f63361325d565b565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121d9576000612222565b612221600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b5b9050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561232957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b505050506040513d60208110156123f657600080fd5b8101908080519060200190929190505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6124da8161325d565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000806000806000806000806000600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a111515156126c857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161415801561273157508b73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614155b151561273c57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161415151561277757600080fd5b6127808c612f8f565b6127898b612f8f565b600098506000975060009650600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128395750600d60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128d457612865606461285760038d612e1890919063ffffffff16565b61324290919063ffffffff16565b985061288e606461288060028d612e1890919063ffffffff16565b61324290919063ffffffff16565b97506128b760646128a960018d612e1890919063ffffffff16565b61324290919063ffffffff16565b96506000891480156128c9575060008a115b156128d357600198505b5b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506129298a87612dff90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061297f898b612dff90919063ffffffff16565b9950600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205494506129d68a86612e5390919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c6040518082815260200191505060405180910390a36007549350600860008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b4f57612af0612ae187611e9f565b85612dff90919063ffffffff16565b9350612b4c612b3d600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b85612e5390919063ffffffff16565b93505b600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c1b57612bbc612bad86611e9f565b85612dff90919063ffffffff16565b9350612c18612c09600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b85612e5390919063ffffffff16565b93505b836007819055508692506000841115612d6657879150612c44848361324290919063ffffffff16565b9050612c5b81600954612e5390919063ffffffff16565b600981905550612cb382600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612d65573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b5b612d7b83600554612dff90919063ffffffff16565b6005819055506000831115612df157600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b505050505050505050505050565b6000828211151515612e0d57fe5b818303905092915050565b6000806000841415612e2d5760009150612e4c565b8284029050828482811515612e3e57fe5b04141515612e4857fe5b8091505b5092915050565b6000808284019050838110151515612e6757fe5b8091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612ec957600080fd5b612ed281612f8f565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f86612f75600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b600754612dff90919063ffffffff16565b60078190555050565b612f9881610e2f565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600080600080841415151561303857600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841115151561308657600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506130db8484612dff90919063ffffffff16565b915081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061313684600554612dff90919063ffffffff16565b600581905550600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131d55760075490506131ae61319f84611e9f565b82612dff90919063ffffffff16565b90506131cb6131bc83611e9f565b82612e5390919063ffffffff16565b9050806007819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600080828481151561325057fe5b0490508091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156132b657600080fd5b6132bf81612f8f565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613373613362600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b600754612e5390919063ffffffff16565b600781905550505600a165627a7a72305820b56f5701df246ba73949dfa9a45dd2c92f9aab221b2c222ed235597d2db685300029
Deployed Bytecode
0x60806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610190578063095ea7b31461022057806316b627d11461028557806318160ddd146102e05780631e89d5451461030b578063223d0417146103b457806323b872dd1461040b57806328696de21461049057806329613086146104a7578063313ce567146104be57806339509351146104ef5780633f9fe75a1461055457806342966c681461059757806343684b21146105c45780634b56c39e1461061f5780636f49712b1461064a57806370a08231146106a557806379cc6790146106fc57806395d89b4114610749578063a457c2d7146107d9578063a486309d1461083e578063a9059cbb1461088d578063b1369e6a146108f2578063cae9ca5114610933578063ce606ee0146109b0578063d11aca6214610a07578063dd62ed3e14610a1e578063e1eae0b414610a95578063e49cb2fb14610aec578063e7b7365114610b39578063ff12bbf414610b7c575b600080fd5b34801561019c57600080fd5b506101a5610bcb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c6d565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b506102c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d9a565b604051808215151515815260200191505060405180910390f35b3480156102ec57600080fd5b506102f5610dba565b6040518082815260200191505060405180910390f35b34801561031757600080fd5b506103b26004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610dc4565b005b3480156103c057600080fd5b506103f5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e2f565b6040518082815260200191505060405180910390f35b34801561041757600080fd5b50610476600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fdc565b604051808215151515815260200191505060405180910390f35b34801561049c57600080fd5b506104a561118e565b005b3480156104b357600080fd5b506104bc611199565b005b3480156104ca57600080fd5b506104d36114bd565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104fb57600080fd5b5061053a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114d4565b604051808215151515815260200191505060405180910390f35b34801561056057600080fd5b50610595600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170b565b005b3480156105a357600080fd5b506105c2600480360381019080803590602001909291905050506117dc565b005b3480156105d057600080fd5b50610605600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e9565b604051808215151515815260200191505060405180910390f35b34801561062b57600080fd5b50610634611809565b6040518082815260200191505060405180910390f35b34801561065657600080fd5b5061068b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180f565b604051808215151515815260200191505060405180910390f35b3480156106b157600080fd5b506106e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182f565b6040518082815260200191505060405180910390f35b34801561070857600080fd5b50610747600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611878565b005b34801561075557600080fd5b5061075e611a20565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561079e578082015181840152602081019050610783565b50505050905090810190601f1680156107cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107e557600080fd5b50610824600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ac2565b604051808215151515815260200191505060405180910390f35b34801561084a57600080fd5b5061088b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611cf9565b005b34801561089957600080fd5b506108d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e88565b604051808215151515815260200191505060405180910390f35b3480156108fe57600080fd5b5061091d60048036038101908080359060200190929190505050611e9f565b6040518082815260200191505060405180910390f35b34801561093f57600080fd5b50610996600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050611ec2565b604051808215151515815260200191505060405180910390f35b3480156109bc57600080fd5b506109c56120c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1357600080fd5b50610a1c6120ed565b005b348015610a2a57600080fd5b50610a7f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120f8565b6040518082815260200191505060405180910390f35b348015610aa157600080fd5b50610ad6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061217f565b6040518082815260200191505060405180910390f35b348015610af857600080fd5b50610b37600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612229565b005b348015610b4557600080fd5b50610b7a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061240c565b005b348015610b8857600080fd5b50610bc9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506124dd565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c635780601f10610c3857610100808354040283529160200191610c63565b820191906000526020600020905b815481529060010190602001808311610c4657829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610caa57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b600081518351141515610dd657600080fd5b600090505b8251811015610e2a57610e1d338483815181101515610df657fe5b906020019060200201518484815181101515610e0e57fe5b9060200190602002015161266c565b8080600101915050610ddb565b505050565b6000806000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ece57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250610fd5565b610f22600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954612dff90919063ffffffff16565b9150610f7e610f6f600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b83612e1890919063ffffffff16565b9050610fd281600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5390919063ffffffff16565b92505b5050919050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561106957600080fd5b6110f882600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dff90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061118384848461266c565b600190509392505050565b61119733612e71565b565b6000806000806111a833612f8f565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205493506000841180156112395750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411155b151561124457600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506112de8484612e5390919063ffffffff16565b9150600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561137957600754905061135261134384611e9f565b82612dff90919063ffffffff16565b905061136f61136083611e9f565b82612e5390919063ffffffff16565b9050806007819055505b6113cb84600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dff90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561151157600080fd5b6115a082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5390919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6117d981612e71565b50565b6117e63382613024565b50565b600c6020528060005260406000206000915054906101000a900460ff1681565b60075481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561190357600080fd5b61199281600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dff90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a1c8282613024565b5050565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ab85780601f10611a8d57610100808354040283529160200191611ab8565b820191906000526020600020905b815481529060010190602001808311611a9b57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611aff57600080fd5b611b8e82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dff90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611e9533848461266c565b6001905092915050565b6000611ebb601260ff16600a0a8361324290919063ffffffff16565b9050919050565b600083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133863087876040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825284848281815260200192508082843782019150509650505050505050600060405180830381600087803b1580156120a357600080fd5b505af11580156120b7573d6000803e3d6000fd5b5050505060019050949350505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120f63361325d565b565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121d9576000612222565b612221600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b5b9050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561232957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b505050506040513d60208110156123f657600080fd5b8101908080519060200190929190505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6124da8161325d565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000806000806000806000806000600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a111515156126c857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161415801561273157508b73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614155b151561273c57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161415151561277757600080fd5b6127808c612f8f565b6127898b612f8f565b600098506000975060009650600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128395750600d60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128d457612865606461285760038d612e1890919063ffffffff16565b61324290919063ffffffff16565b985061288e606461288060028d612e1890919063ffffffff16565b61324290919063ffffffff16565b97506128b760646128a960018d612e1890919063ffffffff16565b61324290919063ffffffff16565b96506000891480156128c9575060008a115b156128d357600198505b5b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506129298a87612dff90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061297f898b612dff90919063ffffffff16565b9950600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205494506129d68a86612e5390919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c6040518082815260200191505060405180910390a36007549350600860008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b4f57612af0612ae187611e9f565b85612dff90919063ffffffff16565b9350612b4c612b3d600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b85612e5390919063ffffffff16565b93505b600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c1b57612bbc612bad86611e9f565b85612dff90919063ffffffff16565b9350612c18612c09600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b85612e5390919063ffffffff16565b93505b836007819055508692506000841115612d6657879150612c44848361324290919063ffffffff16565b9050612c5b81600954612e5390919063ffffffff16565b600981905550612cb382600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612d65573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b5b612d7b83600554612dff90919063ffffffff16565b6005819055506000831115612df157600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b505050505050505050505050565b6000828211151515612e0d57fe5b818303905092915050565b6000806000841415612e2d5760009150612e4c565b8284029050828482811515612e3e57fe5b04141515612e4857fe5b8091505b5092915050565b6000808284019050838110151515612e6757fe5b8091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612ec957600080fd5b612ed281612f8f565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f86612f75600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b600754612dff90919063ffffffff16565b60078190555050565b612f9881610e2f565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600080600080841415151561303857600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841115151561308657600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506130db8484612dff90919063ffffffff16565b915081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061313684600554612dff90919063ffffffff16565b600581905550600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131d55760075490506131ae61319f84611e9f565b82612dff90919063ffffffff16565b90506131cb6131bc83611e9f565b82612e5390919063ffffffff16565b9050806007819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600080828481151561325057fe5b0490508091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156132b657600080fd5b6132bf81612f8f565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613373613362600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9f565b600754612e5390919063ffffffff16565b600781905550505600a165627a7a72305820b56f5701df246ba73949dfa9a45dd2c92f9aab221b2c222ed235597d2db685300029
Deployed Bytecode Sourcemap
2374:12227:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2093:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2093:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5151:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5151:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3191:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3191:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3678:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3678:97:0;;;;;;;;;;;;;;;;;;;;;;;4561:272;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4561:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11435:413;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11435:413:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4845:294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4845:294:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12950:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12950:65:0;;;;;;11893:969;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11893:969:0;;;;;;2285:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2285:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5757:326;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5757:326:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13125:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13125:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7162:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7162:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;3139:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3139:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2797:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2797:40:0;;;;;;;;;;;;;;;;;;;;;;;2844:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2844:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3787:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3787:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7261:243;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7261:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2187:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2187:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2187:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6095:336;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6095:336:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14180:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14180:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4396:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4396:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4077:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4077:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5416:323;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5416:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2760:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2760:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12874:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12874:64:0;;;;;;4248:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4248:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3910:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3910:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13920:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13920:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13027:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13027:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14407:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14407:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:82;2129:6;2162:5;2155:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:82;:::o;5151:247::-;5216:4;5266:1;5247:21;;:7;:21;;;;5239:30;;;;;;;;5311:5;5280:7;:19;5288:10;5280:19;;;;;;;;;;;;;;;:28;5300:7;5280:28;;;;;;;;;;;;;;;:36;;;;5353:7;5332:36;;5341:10;5332:36;;;5362:5;5332:36;;;;;;;;;;;;;;;;;;5386:4;5379:11;;5151:247;;;;:::o;3191:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;3678:97::-;3722:7;3755:12;;3748:19;;3678:97;:::o;4561:272::-;4717:9;4688:6;:13;4668:9;:16;:33;4660:42;;;;;;;;4729:1;4717:13;;4713:112;4736:9;:16;4732:1;:20;4713:112;;;4772:53;4789:10;4801:9;4811:1;4801:12;;;;;;;;;;;;;;;;;;4815:6;4822:1;4815:9;;;;;;;;;;;;;;;;;;4772:16;:53::i;:::-;4754:3;;;;;;;4713:112;;;4561:272;;;:::o;11435:413::-;11499:7;11599:25;11712:18;11528:9;:17;11538:6;11528:17;;;;;;;;;;;;;;;;;;;;;;;;;11527:18;11524:64;;;11567:13;:21;11581:6;11567:21;;;;;;;;;;;;;;;;11560:28;;;;11524:64;11627;11652:30;:38;11683:6;11652:38;;;;;;;;;;;;;;;;11627:20;;:24;;:64;;;;:::i;:::-;11599:92;;11733:52;11755:29;11767:8;:16;11776:6;11767:16;;;;;;;;;;;;;;;;11755:11;:29::i;:::-;11733:17;:21;;:52;;;;:::i;:::-;11712:73;;11803:37;11829:10;11803:13;:21;11817:6;11803:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;11796:44;;11435:413;;;;;;:::o;4845:294::-;4924:4;4964:7;:13;4972:4;4964:13;;;;;;;;;;;;;;;:25;4978:10;4964:25;;;;;;;;;;;;;;;;4955:5;:34;;4947:43;;;;;;;;5029:36;5059:5;5029:7;:13;5037:4;5029:13;;;;;;;;;;;;;;;:25;5043:10;5029:25;;;;;;;;;;;;;;;;:29;;:36;;;;:::i;:::-;5001:7;:13;5009:4;5001:13;;;;;;;;;;;;;;;:25;5015:10;5001:25;;;;;;;;;;;;;;;:64;;;;5076:33;5093:4;5099:2;5103:5;5076:16;:33::i;:::-;5127:4;5120:11;;4845:294;;;;;:::o;12950:65::-;12985:27;13001:10;12985:15;:27::i;:::-;12950:65::o;11893:969::-;11980:15;12163:28;12225:25;12393:17;11941:28;11958:10;11941:16;:28::i;:::-;11998:13;:25;12012:10;11998:25;;;;;;;;;;;;;;;;11980:43;;12052:1;12042:7;:11;:49;;;;;12068:8;:23;12085:4;12068:23;;;;;;;;;;;;;;;;12057:7;:34;;12042:49;12034:58;;;;;;;;12141:1;12113:13;:25;12127:10;12113:25;;;;;;;;;;;;;;;:29;;;;12194:8;:20;12203:10;12194:20;;;;;;;;;;;;;;;;12163:51;;12253:33;12278:7;12253:20;:24;;:33;;;;:::i;:::-;12225:61;;12346:9;:21;12356:10;12346:21;;;;;;;;;;;;;;;;;;;;;;;;;12343:298;;;12413:21;;12393:41;;12461:48;12475:33;12487:20;12475:11;:33::i;:::-;12461:9;:13;;:48;;;;:::i;:::-;12449:60;;12536:45;12550:30;12562:17;12550:11;:30::i;:::-;12536:9;:13;;:45;;;;:::i;:::-;12524:57;;12620:9;12596:21;:33;;;;12343:298;12707:36;12735:7;12707:8;:23;12724:4;12707:23;;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;12681:8;:23;12698:4;12681:23;;;;;;;;;;;;;;;:62;;;;12777:17;12754:8;:20;12763:10;12754:20;;;;;;;;;;;;;;;:40;;;;12834:10;12810:44;;12827:4;12810:44;;;12846:7;12810:44;;;;;;;;;;;;;;;;;;11893:969;;;;:::o;2285:82::-;2325:5;2350:9;;;;;;;;;;;2343:16;;2285:82;:::o;5757:326::-;5837:4;5887:1;5868:21;;:7;:21;;;;5860:30;;;;;;;;5933:44;5966:10;5933:7;:19;5941:10;5933:19;;;;;;;;;;;;;;;:28;5953:7;5933:28;;;;;;;;;;;;;;;;:32;;:44;;;;:::i;:::-;5901:7;:19;5909:10;5901:19;;;;;;;;;;;;;;;:28;5921:7;5901:28;;;;;;;;;;;;;;;:77;;;;6015:7;5994:59;;6003:10;5994:59;;;6024:7;:19;6032:10;6024:19;;;;;;;;;;;;;;;:28;6044:7;6024:28;;;;;;;;;;;;;;;;5994:59;;;;;;;;;;;;;;;;;;6071:4;6064:11;;5757:326;;;;:::o;13125:88::-;3618:13;;;;;;;;;;;3604:27;;:10;:27;;;3596:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13187:23;13203:6;13187:15;:23::i;:::-;13125:88;:::o;7162:87::-;7217:24;7223:10;7235:5;7217;:24::i;:::-;7162:87;:::o;3139:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;2797:40::-;;;;:::o;2844:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;3787:111::-;3842:7;3875:8;:15;3884:5;3875:15;;;;;;;;;;;;;;;;3868:22;;3787:111;;;:::o;7261:243::-;7354:7;:16;7362:7;7354:16;;;;;;;;;;;;;;;:28;7371:10;7354:28;;;;;;;;;;;;;;;;7345:5;:37;;7337:46;;;;;;;;7425:39;7458:5;7425:7;:16;7433:7;7425:16;;;;;;;;;;;;;;;:28;7442:10;7425:28;;;;;;;;;;;;;;;;:32;;:39;;;;:::i;:::-;7394:7;:16;7402:7;7394:16;;;;;;;;;;;;;;;:28;7411:10;7394:28;;;;;;;;;;;;;;;:70;;;;7475:21;7481:7;7490:5;7475;:21::i;:::-;7261:243;;:::o;2187:86::-;2225:6;2258:7;2251:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2187:86;:::o;6095:336::-;6180:4;6230:1;6211:21;;:7;:21;;;;6203:30;;;;;;;;6276:49;6309:15;6276:7;:19;6284:10;6276:19;;;;;;;;;;;;;;;:28;6296:7;6276:28;;;;;;;;;;;;;;;;:32;;:49;;;;:::i;:::-;6244:7;:19;6252:10;6244:19;;;;;;;;;;;;;;;:28;6264:7;6244:28;;;;;;;;;;;;;;;:82;;;;6363:7;6342:59;;6351:10;6342:59;;;6372:7;:19;6380:10;6372:19;;;;;;;;;;;;;;;:28;6392:7;6372:28;;;;;;;;;;;;;;;;6342:59;;;;;;;;;;;;;;;;;;6419:4;6412:11;;6095:336;;;;:::o;14180:179::-;3618:13;;;;;;;;;;;3604:27;;:10;:27;;;3596:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14275:32;14287:5;14294:12;14275:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14339:12;14318:11;:18;14330:5;14318:18;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;14180:179;;:::o;4396:153::-;4457:4;4480:39;4497:10;4509:2;4513:5;4480:16;:39::i;:::-;4537:4;4530:11;;4396:153;;;;:::o;4077:159::-;4146:7;4179:49;2716:2;4205:22;;4201:2;:26;4179:17;:21;;:49;;;;:::i;:::-;4172:56;;4077:159;;;:::o;5416:323::-;5503:4;5551:6;5520:7;:19;5528:10;5520:19;;;;;;;;;;;;;;;:28;5540:7;5520:28;;;;;;;;;;;;;;;:37;;;;5594:7;5573:37;;5582:10;5573:37;;;5603:6;5573:37;;;;;;;;;;;;;;;;;;5644:7;5621:47;;;5669:10;5681:6;5697:4;5704;;5621:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5621:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5621:88:0;;;;5727:4;5720:11;;5416:323;;;;;;:::o;2760:28::-;;;;;;;;;;;;;:::o;12874:64::-;12908:26;12923:10;12908:14;:26::i;:::-;12874:64::o;4248:136::-;4320:7;4353;:14;4361:5;4353:14;;;;;;;;;;;;;;;:23;4368:7;4353:23;;;;;;;;;;;;;;;;4346:30;;4248:136;;;;:::o;3910:155::-;3973:7;4006:9;:16;4016:5;4006:16;;;;;;;;;;;;;;;;;;;;;;;;;:51;;4056:1;4006:51;;;4025:28;4037:8;:15;4046:5;4037:15;;;;;;;;;;;;;;;;4025:11;:28::i;:::-;4006:51;3999:58;;3910:155;;;:::o;13920:206::-;3618:13;;;;;;;;;;;3604:27;;:10;:27;;;3596:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14052:4;14028:29;;:12;:29;;;;14020:38;;;;;;;;14076:12;14069:29;;;14099:10;14111:6;14069:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14069:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14069:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14069:49:0;;;;;;;;;;;;;;;;;13920:206;;:::o;13027:86::-;3618:13;;;;;;;;;;;3604:27;;:10;:27;;;3596:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13088:22;13103:6;13088:14;:22::i;:::-;13027:86;:::o;14407:185::-;3618:13;;;;;;;;;;;3604:27;;:10;:27;;;3596:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14504:34;14518:5;14525:12;14504:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14572:12;14549:13;:20;14563:5;14549:20;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;14407:185;;:::o;8484:2569::-;8895:20;8930:18;8963;9426:26;9599:24;9800:17;10286:20;10382:22;10485;8592:8;:14;8601:4;8592:14;;;;;;;;;;;;;;;;8583:5;:23;;8575:32;;;;;;;;8640:1;8626:16;;:2;:16;;;;:30;;;;;8652:4;8646:10;;:2;:10;;;;8626:30;8618:39;;;;;;;;8690:4;8676:19;;:2;:19;;;;8668:28;;;;;;;;8821:22;8838:4;8821:16;:22::i;:::-;8854:20;8871:2;8854:16;:20::i;:::-;8918:1;8895:24;;8951:1;8930:22;;8984:1;8963:22;;9010:13;:19;9024:4;9010:19;;;;;;;;;;;;;;;;;;;;;;;;;9009:20;:40;;;;;9034:11;:15;9046:2;9034:15;;;;;;;;;;;;;;;;;;;;;;;;;9033:16;9009:40;9006:396;;;9090:21;9107:3;9090:12;9100:1;9090:5;:9;;:12;;;;:::i;:::-;:16;;:21;;;;:::i;:::-;9075:36;;9139:21;9156:3;9139:12;9149:1;9139:5;:9;;:12;;;;:::i;:::-;:16;;:21;;;;:::i;:::-;9126:34;;9188:21;9205:3;9188:12;9198:1;9188:5;:9;;:12;;;;:::i;:::-;:16;;:21;;;;:::i;:::-;9175:34;;9341:1;9325:12;:17;:30;;;;;9354:1;9346:5;:9;9325:30;9322:68;;;9389:1;9374:16;;9322:68;9006:396;9455:8;:14;9464:4;9455:14;;;;;;;;;;;;;;;;9426:43;;9497:29;9520:5;9497:18;:22;;:29;;;;:::i;:::-;9480:8;:14;9489:4;9480:14;;;;;;;;;;;;;;;:46;;;;9555:23;9565:12;9555:5;:9;;:23;;;;:::i;:::-;9547:31;;9626:8;:12;9635:2;9626:12;;;;;;;;;;;;;;;;9599:39;;9664:27;9685:5;9664:16;:20;;:27;;;;:::i;:::-;9649:8;:12;9658:2;9649:12;;;;;;;;;;;;;;;:42;;;;9732:2;9717:25;;9726:4;9717:25;;;9736:5;9717:25;;;;;;;;;;;;;;;;;;9820:21;;9800:41;;9855:9;:15;9865:4;9855:15;;;;;;;;;;;;;;;;;;;;;;;;;9852:183;;;9908:46;9922:31;9934:18;9922:11;:31::i;:::-;9908:9;:13;;:46;;;;:::i;:::-;9896:58;;9981:42;9995:27;10007:8;:14;10016:4;10007:14;;;;;;;;;;;;;;;;9995:11;:27::i;:::-;9981:9;:13;;:42;;;;:::i;:::-;9969:54;;9852:183;10048:9;:13;10058:2;10048:13;;;;;;;;;;;;;;;;;;;;;;;;;10045:177;;;10099:44;10113:29;10125:16;10113:11;:29::i;:::-;10099:9;:13;;:44;;;;:::i;:::-;10087:56;;10170:40;10184:25;10196:8;:12;10205:2;10196:12;;;;;;;;;;;;;;;;10184:11;:25::i;:::-;10170:9;:13;;:40;;;;:::i;:::-;10158:52;;10045:177;10256:9;10232:21;:33;;;;10309:10;10286:33;;10355:1;10343:9;:13;10340:513;;;10407:10;10382:35;;10510:29;10529:9;10510:14;:18;;:29;;;;:::i;:::-;10485:54;;10606:40;10631:14;10606:20;;:24;;:40;;;;:::i;:::-;10583:20;:63;;;;10687:43;10715:14;10687:8;:23;10704:4;10687:23;;;;;;;;;;;;;;;;:27;;:43;;;;:::i;:::-;10661:8;:23;10678:4;10661:23;;;;;;;;;;;;;;;:69;;;;10765:1;10748:14;:18;10745:96;;;10819:4;10790:51;;10799:10;10790:51;;;10826:14;10790:51;;;;;;;;;;;;;;;;;;10745:96;10340:513;10919:30;10936:12;10919;;:16;;:30;;;;:::i;:::-;10904:12;:45;;;;10978:1;10963:12;:16;10960:85;;;11028:1;10999:46;;11008:10;10999:46;;;11032:12;10999:46;;;;;;;;;;;;;;;;;;10960:85;8484:2569;;;;;;;;;;;;:::o;1291:129::-;1349:7;1387:1;1382;:6;;1375:14;;;;;;1411:1;1407;:5;1400:12;;1291:129;;;;:::o;915:224::-;973:7;1066:9;1008:1;1003;:6;999:57;;;1043:1;1036:8;;;;999:57;1082:1;1078;:5;1066:17;;1110:1;1105;1101;:5;;;;;;;;:10;1094:18;;;;;;1130:1;1123:8;;915:224;;;;;;:::o;1432:153::-;1490:7;1516:9;1532:1;1528;:5;1516:17;;1556:1;1551;:6;;1544:14;;;;;;1576:1;1569:8;;1432:153;;;;;:::o;13580:261::-;13653:9;:17;13663:6;13653:17;;;;;;;;;;;;;;;;;;;;;;;;;13645:26;;;;;;;;13682:24;13699:6;13682:16;:24::i;:::-;13737:5;13717:9;:17;13727:6;13717:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13777:56;13803:29;13815:8;:16;13824:6;13815:16;;;;;;;;;;;;;;;;13803:11;:29::i;:::-;13777:21;;:25;;:56;;;;:::i;:::-;13753:21;:80;;;;13580:261;:::o;11174:195::-;11264:25;11282:6;11264:17;:25::i;:::-;11240:13;:21;11254:6;11240:21;;;;;;;;;;;;;;;:49;;;;11341:20;;11300:30;:38;11331:6;11300:38;;;;;;;;;;;;;;;:61;;;;11174:195;:::o;7516:763::-;7675:21;7727:18;7976:17;7606:1;7597:5;:10;;7589:19;;;;;;;;7636:8;:17;7645:7;7636:17;;;;;;;;;;;;;;;;7627:5;:26;;7619:35;;;;;;;;7699:8;:17;7708:7;7699:17;;;;;;;;;;;;;;;;7675:41;;7748:24;7766:5;7748:13;:17;;:24;;;;:::i;:::-;7727:45;;7813:10;7793:8;:17;7802:7;7793:17;;;;;;;;;;;;;;;:30;;;;7849:23;7866:5;7849:12;;:16;;:23;;;;:::i;:::-;7834:12;:38;;;;7932:9;:18;7942:7;7932:18;;;;;;;;;;;;;;;;;;;;;;;;;7929:281;;;7996:21;;7976:41;;8044;8058:26;8070:13;8058:11;:26::i;:::-;8044:9;:13;;:41;;;;:::i;:::-;8032:53;;8112:38;8126:23;8138:10;8126:11;:23::i;:::-;8112:9;:13;;:38;;;;:::i;:::-;8100:50;;8189:9;8165:21;:33;;;;7929:281;8261:1;8235:36;;8244:7;8235:36;;;8265:5;8235:36;;;;;;;;;;;;;;;;;;7516:763;;;;;:::o;1151:128::-;1209:7;1235:9;1251:1;1247;:5;;;;;;;;1235:17;;1270:1;1263:8;;1151:128;;;;;:::o;13266:260::-;13339:9;:17;13349:6;13339:17;;;;;;;;;;;;;;;;;;;;;;;;;13338:18;13330:27;;;;;;;;13368:24;13385:6;13368:16;:24::i;:::-;13423:4;13403:9;:17;13413:6;13403:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13462:56;13488:29;13500:8;:16;13509:6;13500:16;;;;;;;;;;;;;;;;13488:11;:29::i;:::-;13462:21;;:25;;:56;;;;:::i;:::-;13438:21;:80;;;;13266:260;:::o
Swarm Source
bzzr://b56f5701df246ba73949dfa9a45dd2c92f9aab221b2c222ed235597d2db68530
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.