Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
33,330,561.9956 0xBUTT
Holders
80
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ZERO_X_BUTTv3
Compiler Version
v0.5.1+commit.c8a2cb62
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-07-26 */ pragma solidity ^ 0.5 .1; // ---------------------------------------------------------------------------- //'ButtCoin' contract, version 2.1 // See: https://github.com/butttcoin/0xBUTT // Symbol : 0xBUTT // Name : ButtCoin // Total supply: Dynamic // Decimals : 8 // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Safe maths // ---------------------------------------------------------------------------- library SafeMath { //addition function add(uint a, uint b) internal pure returns(uint c) { c = a + b; require(c >= a); } //subtraction function sub(uint a, uint b) internal pure returns(uint c) { require(b <= a); c = a - b; } //multiplication function mul(uint a, uint b) internal pure returns(uint c) { c = a * b; require(a == 0 || c / a == b); } //division function div(uint a, uint b) internal pure returns(uint c) { require(b > 0); c = a / b; } //ceil function ceil(uint a, uint m) internal pure returns(uint) { uint c = add(a, m); uint d = sub(c, 1); return mul(div(d, m), m); } } library ExtendedMath { //also known as the minimum function limitLessThan(uint a, uint b) internal pure returns(uint c) { if (a > b) return b; return a; } } // ---------------------------------------------------------------------------- // ERC Token Standard #20 Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // ---------------------------------------------------------------------------- contract ERC20Interface { function totalSupply() public view returns(uint); function burned() public view returns(uint); function minted() public view returns(uint); function mintingEpoch() public view returns(uint); function balanceOf(address tokenOwner) public view returns(uint balance); function allowance(address tokenOwner, address spender) public view returns(uint remaining); function transfer(address to, uint tokens) public returns(bool success); function approve(address spender, uint tokens) public returns(bool success); function transferFrom(address from, address to, uint tokens) public returns(bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } // ---------------------------------------------------------------------------- // Contract function to receive approval and execute function in one call // ---------------------------------------------------------------------------- contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public; } // ---------------------------------------------------------------------------- // Owned contract // ---------------------------------------------------------------------------- contract Owned { address public owner; address public newOwner; event OwnershipTransferred(address indexed _from, address indexed _to); constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address _newOwner) public onlyOwner { newOwner = _newOwner; } function acceptOwnership() public { require(msg.sender == newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } // ---------------------------------------------------------------------------- // ERC20 Token, with the addition of symbol, name and decimals and an // initial fixed supply // ---------------------------------------------------------------------------- contract ZERO_X_BUTTv3 is ERC20Interface, Owned { using SafeMath for uint; using ExtendedMath for uint; string public symbol; string public name; uint8 public decimals; uint256 public _totalSupply; uint256 public _burned; //a big number is easier ; just find a solution that is smaller uint private n = 212; //the maxiumum target exponent uint private nFutureTime = now + 1097 days; // about 3 years in future uint public _MAXIMUM_TARGET = 2 ** n; bytes32 public challengeNumber; //generate a new one when a new reward is minted uint public rewardEra; address public lastRewardTo; uint public lastRewardAmount; uint public lastRewardEthBlockNumber; mapping(bytes32 => bytes32) solutionForChallenge; uint public tokensMinted; mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowed; uint private basePercent; bool private locked = false; address private previousSender = address(0); //the previous user of a contract uint private miningTarget; uint private _mintingEpoch; event Mint(address indexed from, uint reward_amount, uint epochCount, bytes32 newChallengeNumber); // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ constructor() public { if (locked) revert(); symbol = "0xBUTT"; name = "ButtCoin"; decimals = 8; basePercent = 100; uint toMint = 33554432 * 10 ** uint(decimals); //This is an assumption and a kick-start, which resets when 75% is burned. _mint(msg.sender, toMint); tokensMinted = toMint; _totalSupply = _totalSupply.add(toMint); rewardEra = 22; miningTarget = _MAXIMUM_TARGET; _startNewMiningEpoch(); _mintingEpoch = 0; locked = true; } // ------------------------------------------------------------------------ // Minting tokens before the mining. // ------------------------------------------------------------------------ function _mint(address account, uint256 amount) internal { if (locked) revert(); require(amount != 0); balances[account] = balances[account].add(amount); emit Transfer(address(0), account, amount); } // ------------------------------------------------------------------------ // Minting of tokens during the mining. // ------------------------------------------------------------------------ function mint(uint256 nonce, bytes32 challenge_digest) public returns(bool success) { //the PoW must contain work that includes a recent ethereum block hash (challenge number) and the msg.sender's address to prevent MITM attacks bytes32 digest = keccak256(abi.encodePacked(challengeNumber, msg.sender, nonce)); //the challenge digest must match the expected if (digest != challenge_digest) revert(); //the digest must be smaller than the target if (uint256(digest) > miningTarget) revert(); //only allow one reward for each challenge bytes32 solution = solutionForChallenge[challengeNumber]; solutionForChallenge[challengeNumber] = digest; if (solution != 0x0) revert(); //prevent the same answer from awarding twice uint reward_amount = getMiningReward(); balances[msg.sender] = balances[msg.sender].add(reward_amount); tokensMinted = tokensMinted.add(reward_amount); _totalSupply = _totalSupply.add(tokensMinted); //set readonly diagnostics data lastRewardTo = msg.sender; lastRewardAmount = reward_amount; lastRewardEthBlockNumber = block.number; _startNewMiningEpoch(); emit Mint(msg.sender, reward_amount, rewardEra, challengeNumber); return true; } // ------------------------------------------------------------------------ // Starts a new mining epoch, a new 'block' to be mined. // ------------------------------------------------------------------------ function _startNewMiningEpoch() internal { rewardEra = rewardEra + 1; //increment the rewardEra checkMintedNumber(); _reAdjustDifficulty(); challengeNumber = blockhash(block.number - 1); } //checks if the minted number is too high, reduces a tracking number if it is function checkMintedNumber() internal { if (tokensMinted >= (2 ** (230))) { //This will not happen in the forseable future. //50 is neither too low or too high, we'd need additional tracking to get overall totals after this. tokensMinted = tokensMinted.div(2 ** (50)); _burned = _burned.div(2 ** (50)); _mintingEpoch = _mintingEpoch + 1; } } // ------------------------------------------------------------------------ // Readjust difficulty // ------------------------------------------------------------------------ function _reAdjustDifficulty() internal { n = n - 1; miningTarget = (2 ** n); nFutureTime = now + 1097 days; //if difficulty level became too much for the miners and coins are running out of a supply, we need to lower a difficulty to mint new coins... //this way, the coin does not become store of a value. Nevertheless, it may be required for the miners to do some extra work to lower a difficulty. uint treshold = (tokensMinted.mul(95)).div(100); if(_burned>=treshold){ //lower difficulty to significant levels n = (n.mul(105)).div(100); if(n > 213){n = 213;} miningTarget = (2 ** n); } } // ------------------------------------------------------------------------------- // this is a recent ethereum block hash, used to prevent pre-mining future blocks. // ------------------------------------------------------------------------------- function getChallengeNumber() public view returns(bytes32) { return challengeNumber; } // ------------------------------------------------------------------------------- // Auto adjusts the number of zeroes the digest of the PoW solution requires. // ------------------------------------------------------------------------------- function getMiningDifficulty() public view returns(uint) { return _MAXIMUM_TARGET.div(miningTarget); } // ------------------------------------------------------------------------------- // returns the miningTarget. // ------------------------------------------------------------------------------- function getMiningTarget() public view returns(uint) { return miningTarget; } // ------------------------------------------------------------------------ // Gives miners their earned reward, zero if everything is mined. // ------------------------------------------------------------------------ function getMiningReward() internal returns(uint) { uint reward = ((234 - n) ** 3) * 10 ** uint(decimals); return reward; } // ------------------------------------------------------------------------ // Used to help debugging the mining software. // ------------------------------------------------------------------------ function getMintDigest(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number) public view returns(bytes32 digesttest) { bytes32 digest = keccak256(abi.encodePacked(challenge_number, msg.sender, nonce)); return digest; } // ------------------------------------------------------------------------ // Used to help debugging the mining software. // ------------------------------------------------------------------------ function checkMintSolution(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number, uint testTarget) public view returns(bool success) { bytes32 digest = keccak256(abi.encodePacked(challenge_number, msg.sender, nonce)); if (uint256(digest) > testTarget) revert(); return (digest == challenge_digest); } // ------------------------------------------------------------------------ // Total supply // ------------------------------------------------------------------------ function totalSupply() public view returns(uint) { return tokensMinted.sub(_burned); } // ------------------------------------------------------------------------ // Burned tokens // ------------------------------------------------------------------------ function burned() public view returns(uint) { return _burned; } // ------------------------------------------------------------------------ // Minted tokens // ------------------------------------------------------------------------ function minted() public view returns(uint) { return tokensMinted; } // ------------------------------------------------------------------------ // Minting epoch // ------------------------------------------------------------------------ function mintingEpoch() public view returns(uint) { return _mintingEpoch; } // ------------------------------------------------------------------------ // Get the token balance for account `tokenOwner` // ------------------------------------------------------------------------ function balanceOf(address tokenOwner) public view returns(uint balance) { return balances[tokenOwner]; } function pulseCheck() internal{ //if either the coin is dead or the mining is stuck if(nFutureTime<=now){ n = (n.mul(150)).div(100); miningTarget = (2 ** n); _startNewMiningEpoch(); } } // ------------------------------------------------------------------------ // Transfer the balance from token owner's account to `to` account // - Owner's account must have sufficient balance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ //Otherwise, it is a bug function sendTo(address to, uint tokens) public returns(bool success) { balances[msg.sender] = balances[msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); emit Transfer(msg.sender, to, tokens); return true; } function transfer(address to, uint tokens) public returns(bool success) { pulseCheck(); balances[msg.sender] = balances[msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); uint256 tokensToBurn = findTwoPercent(tokens); uint256 toZeroAddress = tokensToBurn.div(2); uint256 toPreviousAddress = tokensToBurn.sub(toZeroAddress); uint256 tokensToTransfer = tokens.sub(toZeroAddress.add(toPreviousAddress)); sendTo(msg.sender, to, tokensToTransfer); sendTo(msg.sender, address(0), toZeroAddress); if (previousSender != to) { //Don't send the tokens to yourself sendTo(to, previousSender, toPreviousAddress); if (previousSender == address(0)) { _burned = _burned.add(toPreviousAddress); } } if (to == address(0)) { _burned = _burned.add(tokensToTransfer); } _burned = _burned.add(toZeroAddress); _totalSupply = totalSupply(); previousSender = msg.sender; return true; } // ------------------------------------------------------------------------ // Transfers to multiple accounts // ------------------------------------------------------------------------ function multiTransfer(address[] memory receivers, uint256[] memory amounts) public { for (uint256 i = 0; i < receivers.length; i++) { transfer(receivers[i], amounts[i]); } } // ------------------------------------------------------------------------ // Calculates 2% for burning // ------------------------------------------------------------------------ function findTwoPercent(uint256 value) private view returns(uint256) { uint256 roundValue = value.ceil(basePercent); uint256 onePercent = roundValue.mul(basePercent).div(10000); return onePercent.mul(2); } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // recommends that there are no checks for the approval double-spend attack // as this should be implemented in user interfaces // ------------------------------------------------------------------------ function approve(address spender, uint tokens) public returns(bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); return true; } // ------------------------------------------------------------------------ // Transfer `tokens` from the `from` account to the `to` account // The calling account must already have sufficient tokens approve(...)-d // for spending from the `from` account and // - From account must have sufficient balance to transfer // - Spender must have sufficient allowance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ //otherwise, it is a bug function sendTo(address from, address to, uint tokens) public returns(bool success) { balances[msg.sender] = balances[msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); emit Transfer(msg.sender, to, tokens); return true; } function transferFrom(address from, address to, uint tokens) public returns(bool success) { pulseCheck(); balances[from] = balances[from].sub(tokens); allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); uint256 tokensToBurn = findTwoPercent(tokens); uint256 toZeroAddress = tokensToBurn.div(2); uint256 toPreviousAddress = tokensToBurn - toZeroAddress; uint256 tokensToTransfer = tokens.sub(toZeroAddress).sub(toPreviousAddress); sendTo(msg.sender, to, tokensToTransfer); sendTo(msg.sender, address(0), toZeroAddress); if (previousSender != to) { //Don't send tokens to yourself sendTo(to, previousSender, toPreviousAddress); if (previousSender == address(0)) { _burned = _burned.add(toPreviousAddress); } } if (to == address(0)) { _burned = _burned.add(tokensToTransfer); } _burned = _burned.add(toZeroAddress); _totalSupply = totalSupply(); previousSender = msg.sender; return true; } // ------------------------------------------------------------------------ // Returns the amount of tokens approved by the owner that can be // transferred to the spender's account // ------------------------------------------------------------------------ function allowance(address tokenOwner, address spender) public view returns(uint remaining) { return allowed[tokenOwner][spender]; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account. The `spender` contract function // `receiveApproval(...)` is then executed // ------------------------------------------------------------------------ function approveAndCall(address spender, uint tokens, bytes memory data) public returns(bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data); return true; } // ------------------------------------------------------------------------ // Do not accept ETH // ------------------------------------------------------------------------ function () external payable { revert(); } // ------------------------------------------------------------------------ // Owner can transfer out any accidentally sent ERC20 tokens // ------------------------------------------------------------------------ function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns(bool success) { return ERC20Interface(tokenAddress).transfer(owner, tokens); } }
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":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardEthBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningDifficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_burned","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getChallengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardTo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burned","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"},{"name":"testTarget","type":"uint256"}],"name":"checkMintSolution","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_MAXIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"}],"name":"getMintDigest","outputs":[{"name":"digesttest","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"sendTo","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"sendTo","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingEpoch","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"reward_amount","type":"uint256"},{"indexed":false,"name":"epochCount","type":"uint256"},{"indexed":false,"name":"newChallengeNumber","type":"bytes32"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
608060405260d46007556305a63d80420160085560075460020a6009556000601460006101000a81548160ff0219169083151502179055506000601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008657600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900460ff1615620000e257600080fd5b6040805190810160405280600681526020017f3078425554540000000000000000000000000000000000000000000000000000815250600290805190602001906200012f929190620005ee565b506040805190810160405280600881526020017f42757474436f696e000000000000000000000000000000000000000000000000815250600390805190602001906200017d929190620005ee565b506008600460006101000a81548160ff021916908360ff16021790555060646013819055506000600460009054906101000a900460ff1660ff16600a0a6302000000029050620001dd338262000263640100000000026401000000009004565b8060108190555062000209816005546200039e64010000000002620027e5179091906401000000009004565b6005819055506016600b8190555060095460158190555062000239620003bb640100000000026401000000009004565b60006016819055506001601460006101000a81548160ff021916908315150217905550506200069d565b601460009054906101000a900460ff16156200027e57600080fd5b600081141515156200028f57600080fd5b620002f181601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200039e64010000000002620027e5179091906401000000009004565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008183019050828110151515620003b557600080fd5b92915050565b6001600b5401600b81905550620003e062000406640100000000026401000000009004565b620003f9620004a2640100000000026401000000009004565b6001430340600a81905550565b7c4000000000000000000000000000000000000000000000000000000000601054101515620004a0576200045b6604000000000000601054620005946401000000000262002795179091906401000000009004565b6010819055506200048d6604000000000000600654620005946401000000000262002795179091906401000000009004565b6006819055506001601654016016819055505b565b60016007540360078190555060075460020a6015819055506305a63d8042016008819055506000620005126064620004f5605f601054620005ba6401000000000262002a26179091906401000000009004565b620005946401000000000262002795179091906401000000009004565b90508060065410151562000591576200056960646200054c6069600754620005ba6401000000000262002a26179091906401000000009004565b620005946401000000000262002795179091906401000000009004565b60078190555060d56007541115620005845760d56007819055505b60075460020a6015819055505b50565b60008082111515620005a557600080fd5b8183811515620005b157fe5b04905092915050565b600081830290506000831480620005dc5750818382811515620005d957fe5b04145b1515620005e857600080fd5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200063157805160ff191683800117855562000662565b8280016001018555821562000662579182015b828111156200066157825182559160200191906001019062000644565b5b50905062000671919062000675565b5090565b6200069a91905b80821115620006965760008160009055506001016200067c565b5090565b90565b612abe80620006ad6000396000f3fe6080604052600436106101bc576000357c01000000000000000000000000000000000000000000000000000000009004806306fdde03146101c1578063095ea7b314610251578063163aa00d146102c457806317da485f146102ef5780631801fbe51461031a57806318160ddd146103775780631e89d545146103a257806323b872dd146104fb5780632d38bf7a1461058e578063313ce567146105b957806332e99708146105ea5780633eaaf86b14610615578063405e3cc1146106405780634ef376281461066b5780634f02c420146106965780636de9f32b146106c15780636fd396d6146106ec57806370a082311461074357806373f42561146107a857806379ba5097146107d357806381269a56146107ea57806387a2a9d61461085b5780638ae0368b146108865780638da5cb5b146108b157806395d89b411461090857806397566aa0146109985780639e1a00aa146109fb578063a9059cbb14610a6e578063ae63932914610ae1578063bafedcaa14610b74578063c94ea06a14610b9f578063cae9ca5114610bca578063d4ee1d9014610cd4578063dc39d06d14610d2b578063dd62ed3e14610d9e578063f2fde38b14610e23575b600080fd5b3480156101cd57600080fd5b506101d6610e74565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102165780820151818401526020810190506101fb565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025d57600080fd5b506102aa6004803603604081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f12565b604051808215151515815260200191505060405180910390f35b3480156102d057600080fd5b506102d9611004565b6040518082815260200191505060405180910390f35b3480156102fb57600080fd5b5061030461100a565b6040518082815260200191505060405180910390f35b34801561032657600080fd5b5061035d6004803603604081101561033d57600080fd5b810190808035906020019092919080359060200190929190505050611028565b604051808215151515815260200191505060405180910390f35b34801561038357600080fd5b5061038c6112a7565b6040518082815260200191505060405180910390f35b3480156103ae57600080fd5b506104f9600480360360408110156103c557600080fd5b81019080803590602001906401000000008111156103e257600080fd5b8201836020820111156103f457600080fd5b8035906020019184602083028401116401000000008311171561041657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561047657600080fd5b82018360208201111561048857600080fd5b803590602001918460208302840111640100000000831117156104aa57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506112c5565b005b34801561050757600080fd5b506105746004803603606081101561051e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061131f565b604051808215151515815260200191505060405180910390f35b34801561059a57600080fd5b506105a3611793565b6040518082815260200191505060405180910390f35b3480156105c557600080fd5b506105ce611799565b604051808260ff1660ff16815260200191505060405180910390f35b3480156105f657600080fd5b506105ff6117ac565b6040518082815260200191505060405180910390f35b34801561062157600080fd5b5061062a6117b6565b6040518082815260200191505060405180910390f35b34801561064c57600080fd5b506106556117bc565b6040518082815260200191505060405180910390f35b34801561067757600080fd5b506106806117c2565b6040518082815260200191505060405180910390f35b3480156106a257600080fd5b506106ab6117cc565b6040518082815260200191505060405180910390f35b3480156106cd57600080fd5b506106d66117d6565b6040518082815260200191505060405180910390f35b3480156106f857600080fd5b506107016117dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074f57600080fd5b506107926004803603602081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611802565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd61184b565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611855565b005b3480156107f657600080fd5b506108416004803603608081101561080d57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291905050506119f4565b604051808215151515815260200191505060405180910390f35b34801561086757600080fd5b50610870611a8a565b6040518082815260200191505060405180910390f35b34801561089257600080fd5b5061089b611a90565b6040518082815260200191505060405180910390f35b3480156108bd57600080fd5b506108c6611a96565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561091457600080fd5b5061091d611abb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561095d578082015181840152602081019050610942565b50505050905090810190601f16801561098a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109a457600080fd5b506109e5600480360360608110156109bb57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611b59565b6040518082815260200191505060405180910390f35b348015610a0757600080fd5b50610a5460048036036040811015610a1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bdb565b604051808215151515815260200191505060405180910390f35b348015610a7a57600080fd5b50610ac760048036036040811015610a9157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d76565b604051808215151515815260200191505060405180910390f35b348015610aed57600080fd5b50610b5a60048036036060811015610b0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120ea565b604051808215151515815260200191505060405180910390f35b348015610b8057600080fd5b50610b89612286565b6040518082815260200191505060405180910390f35b348015610bab57600080fd5b50610bb461228c565b6040518082815260200191505060405180910390f35b348015610bd657600080fd5b50610cba60048036036060811015610bed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c3457600080fd5b820183602082011115610c4657600080fd5b80359060200191846001830284011164010000000083111715610c6857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612296565b604051808215151515815260200191505060405180910390f35b348015610ce057600080fd5b50610ce96124e5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3757600080fd5b50610d8460048036036040811015610d4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061250b565b604051808215151515815260200191505060405180910390f35b348015610daa57600080fd5b50610e0d60048036036040811015610dc157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061266f565b6040518082815260200191505060405180910390f35b348015610e2f57600080fd5b50610e7260048036036020811015610e4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126f6565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f0a5780601f10610edf57610100808354040283529160200191610f0a565b820191906000526020600020905b815481529060010190602001808311610eed57829003601f168201915b505050505081565b600081601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600e5481565b600061102360155460095461279590919063ffffffff16565b905090565b600080600a543385604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405160208183030381529060405280519060200120905082811415156110af57600080fd5b601554816001900411156110c257600080fd5b6000600f6000600a54815260200190815260200160002054905081600f6000600a5481526020019081526020016000208190555060006001028114151561110857600080fd5b60006111126127b9565b905061116681601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111be816010546127e590919063ffffffff16565b6010819055506111db6010546005546127e590919063ffffffff16565b60058190555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d8190555043600e81905550611238612801565b3373ffffffffffffffffffffffffffffffffffffffff167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600b54600a5460405180848152602001838152602001828152602001935050505060405180910390a26001935050505092915050565b60006112c060065460105461282a90919063ffffffff16565b905090565b60008090505b825181101561131a5761130c83828151811015156112e557fe5b9060200190602002015183838151811015156112fd57fe5b90602001906020020151611d76565b5080806001019150506112cb565b505050565b6000611329612846565b61137b82601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061144d82601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061151f82601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061156d83612897565b9050600061158560028361279590919063ffffffff16565b90506000818303905060006115b5826115a7858961282a90919063ffffffff16565b61282a90919063ffffffff16565b90506115c23388836120ea565b506115cf336000856120ea565b508673ffffffffffffffffffffffffffffffffffffffff16601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c95761165487601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120ea565b50600073ffffffffffffffffffffffffffffffffffffffff16601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116c8576116c1826006546127e590919063ffffffff16565b6006819055505b5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561171a57611713816006546127e590919063ffffffff16565b6006819055505b61172f836006546127e590919063ffffffff16565b60068190555061173d6112a7565b60058190555033601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019450505050509392505050565b600b5481565b600460009054906101000a900460ff1681565b6000601554905090565b60055481565b60065481565b6000600a54905090565b6000601054905090565b60105481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600654905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080833387604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200193505050506040516020818303038152906040528051906020012090508281600190041115611a7c57600080fd5b848114915050949350505050565b60095481565b600a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b515780601f10611b2657610100808354040283529160200191611b51565b820191906000526020600020905b815481529060010190602001808311611b3457829003601f168201915b505050505081565b600080823386604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019350505050604051602081830303815290604052805190602001209050809150509392505050565b6000611c2f82601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cc482601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000611d80612846565b611dd282601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e6782601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611eb583612897565b90506000611ecd60028361279590919063ffffffff16565b90506000611ee4828461282a90919063ffffffff16565b90506000611f0d611efe83856127e590919063ffffffff16565b8761282a90919063ffffffff16565b9050611f1a3388836120ea565b50611f27336000856120ea565b508673ffffffffffffffffffffffffffffffffffffffff16601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561202157611fac87601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120ea565b50600073ffffffffffffffffffffffffffffffffffffffff16601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561202057612019826006546127e590919063ffffffff16565b6006819055505b5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156120725761206b816006546127e590919063ffffffff16565b6006819055505b612087836006546127e590919063ffffffff16565b6006819055506120956112a7565b60058190555033601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600194505050505092915050565b600061213e82601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121d382601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600d5481565b6000601654905090565b600082601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612473578082015181840152602081019050612458565b50505050905090810190601f1680156124a05780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156124c257600080fd5b505af11580156124d6573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561256857600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561262c57600080fd5b505af1158015612640573d6000803e3d6000fd5b505050506040513d602081101561265657600080fd5b8101908080519060200190929190505050905092915050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561275157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080821115156127a557600080fd5b81838115156127b057fe5b04905092915050565b600080600460009054906101000a900460ff1660ff16600a0a600360075460ea030a0290508091505090565b600081830190508281101515156127fb57600080fd5b92915050565b6001600b5401600b819055506128156128fb565b61281d612976565b6001430340600a81905550565b600082821115151561283b57600080fd5b818303905092915050565b426008541115156128955761287a606461286c6096600754612a2690919063ffffffff16565b61279590919063ffffffff16565b60078190555060075460020a601581905550612894612801565b5b565b6000806128af60135484612a5790919063ffffffff16565b905060006128dc6127106128ce60135485612a2690919063ffffffff16565b61279590919063ffffffff16565b90506128f2600282612a2690919063ffffffff16565b92505050919050565b7c40000000000000000000000000000000000000000000000000000000006010541015156129745761293f660400000000000060105461279590919063ffffffff16565b601081905550612961660400000000000060065461279590919063ffffffff16565b6006819055506001601654016016819055505b565b60016007540360078190555060075460020a6015819055506305a63d80420160088190555060006129c660646129b8605f601054612a2690919063ffffffff16565b61279590919063ffffffff16565b905080600654101515612a23576129fc60646129ee6069600754612a2690919063ffffffff16565b61279590919063ffffffff16565b60078190555060d56007541115612a165760d56007819055505b60075460020a6015819055505b50565b600081830290506000831480612a465750818382811515612a4357fe5b04145b1515612a5157600080fd5b92915050565b600080612a6484846127e5565b90506000612a7382600161282a565b9050612a88612a828286612795565b85612a26565b925050509291505056fea165627a7a72305820bd9375a09d18a6aec5b8a1291d4d8be51c7813518f1412962916b5334e3fc7fa0029
Deployed Bytecode
0x6080604052600436106101bc576000357c01000000000000000000000000000000000000000000000000000000009004806306fdde03146101c1578063095ea7b314610251578063163aa00d146102c457806317da485f146102ef5780631801fbe51461031a57806318160ddd146103775780631e89d545146103a257806323b872dd146104fb5780632d38bf7a1461058e578063313ce567146105b957806332e99708146105ea5780633eaaf86b14610615578063405e3cc1146106405780634ef376281461066b5780634f02c420146106965780636de9f32b146106c15780636fd396d6146106ec57806370a082311461074357806373f42561146107a857806379ba5097146107d357806381269a56146107ea57806387a2a9d61461085b5780638ae0368b146108865780638da5cb5b146108b157806395d89b411461090857806397566aa0146109985780639e1a00aa146109fb578063a9059cbb14610a6e578063ae63932914610ae1578063bafedcaa14610b74578063c94ea06a14610b9f578063cae9ca5114610bca578063d4ee1d9014610cd4578063dc39d06d14610d2b578063dd62ed3e14610d9e578063f2fde38b14610e23575b600080fd5b3480156101cd57600080fd5b506101d6610e74565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102165780820151818401526020810190506101fb565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025d57600080fd5b506102aa6004803603604081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f12565b604051808215151515815260200191505060405180910390f35b3480156102d057600080fd5b506102d9611004565b6040518082815260200191505060405180910390f35b3480156102fb57600080fd5b5061030461100a565b6040518082815260200191505060405180910390f35b34801561032657600080fd5b5061035d6004803603604081101561033d57600080fd5b810190808035906020019092919080359060200190929190505050611028565b604051808215151515815260200191505060405180910390f35b34801561038357600080fd5b5061038c6112a7565b6040518082815260200191505060405180910390f35b3480156103ae57600080fd5b506104f9600480360360408110156103c557600080fd5b81019080803590602001906401000000008111156103e257600080fd5b8201836020820111156103f457600080fd5b8035906020019184602083028401116401000000008311171561041657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561047657600080fd5b82018360208201111561048857600080fd5b803590602001918460208302840111640100000000831117156104aa57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506112c5565b005b34801561050757600080fd5b506105746004803603606081101561051e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061131f565b604051808215151515815260200191505060405180910390f35b34801561059a57600080fd5b506105a3611793565b6040518082815260200191505060405180910390f35b3480156105c557600080fd5b506105ce611799565b604051808260ff1660ff16815260200191505060405180910390f35b3480156105f657600080fd5b506105ff6117ac565b6040518082815260200191505060405180910390f35b34801561062157600080fd5b5061062a6117b6565b6040518082815260200191505060405180910390f35b34801561064c57600080fd5b506106556117bc565b6040518082815260200191505060405180910390f35b34801561067757600080fd5b506106806117c2565b6040518082815260200191505060405180910390f35b3480156106a257600080fd5b506106ab6117cc565b6040518082815260200191505060405180910390f35b3480156106cd57600080fd5b506106d66117d6565b6040518082815260200191505060405180910390f35b3480156106f857600080fd5b506107016117dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074f57600080fd5b506107926004803603602081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611802565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd61184b565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611855565b005b3480156107f657600080fd5b506108416004803603608081101561080d57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291905050506119f4565b604051808215151515815260200191505060405180910390f35b34801561086757600080fd5b50610870611a8a565b6040518082815260200191505060405180910390f35b34801561089257600080fd5b5061089b611a90565b6040518082815260200191505060405180910390f35b3480156108bd57600080fd5b506108c6611a96565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561091457600080fd5b5061091d611abb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561095d578082015181840152602081019050610942565b50505050905090810190601f16801561098a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109a457600080fd5b506109e5600480360360608110156109bb57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611b59565b6040518082815260200191505060405180910390f35b348015610a0757600080fd5b50610a5460048036036040811015610a1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bdb565b604051808215151515815260200191505060405180910390f35b348015610a7a57600080fd5b50610ac760048036036040811015610a9157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d76565b604051808215151515815260200191505060405180910390f35b348015610aed57600080fd5b50610b5a60048036036060811015610b0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120ea565b604051808215151515815260200191505060405180910390f35b348015610b8057600080fd5b50610b89612286565b6040518082815260200191505060405180910390f35b348015610bab57600080fd5b50610bb461228c565b6040518082815260200191505060405180910390f35b348015610bd657600080fd5b50610cba60048036036060811015610bed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c3457600080fd5b820183602082011115610c4657600080fd5b80359060200191846001830284011164010000000083111715610c6857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612296565b604051808215151515815260200191505060405180910390f35b348015610ce057600080fd5b50610ce96124e5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3757600080fd5b50610d8460048036036040811015610d4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061250b565b604051808215151515815260200191505060405180910390f35b348015610daa57600080fd5b50610e0d60048036036040811015610dc157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061266f565b6040518082815260200191505060405180910390f35b348015610e2f57600080fd5b50610e7260048036036020811015610e4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126f6565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f0a5780601f10610edf57610100808354040283529160200191610f0a565b820191906000526020600020905b815481529060010190602001808311610eed57829003601f168201915b505050505081565b600081601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600e5481565b600061102360155460095461279590919063ffffffff16565b905090565b600080600a543385604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405160208183030381529060405280519060200120905082811415156110af57600080fd5b601554816001900411156110c257600080fd5b6000600f6000600a54815260200190815260200160002054905081600f6000600a5481526020019081526020016000208190555060006001028114151561110857600080fd5b60006111126127b9565b905061116681601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111be816010546127e590919063ffffffff16565b6010819055506111db6010546005546127e590919063ffffffff16565b60058190555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d8190555043600e81905550611238612801565b3373ffffffffffffffffffffffffffffffffffffffff167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600b54600a5460405180848152602001838152602001828152602001935050505060405180910390a26001935050505092915050565b60006112c060065460105461282a90919063ffffffff16565b905090565b60008090505b825181101561131a5761130c83828151811015156112e557fe5b9060200190602002015183838151811015156112fd57fe5b90602001906020020151611d76565b5080806001019150506112cb565b505050565b6000611329612846565b61137b82601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061144d82601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061151f82601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061156d83612897565b9050600061158560028361279590919063ffffffff16565b90506000818303905060006115b5826115a7858961282a90919063ffffffff16565b61282a90919063ffffffff16565b90506115c23388836120ea565b506115cf336000856120ea565b508673ffffffffffffffffffffffffffffffffffffffff16601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c95761165487601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120ea565b50600073ffffffffffffffffffffffffffffffffffffffff16601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116c8576116c1826006546127e590919063ffffffff16565b6006819055505b5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561171a57611713816006546127e590919063ffffffff16565b6006819055505b61172f836006546127e590919063ffffffff16565b60068190555061173d6112a7565b60058190555033601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019450505050509392505050565b600b5481565b600460009054906101000a900460ff1681565b6000601554905090565b60055481565b60065481565b6000600a54905090565b6000601054905090565b60105481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600654905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080833387604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200193505050506040516020818303038152906040528051906020012090508281600190041115611a7c57600080fd5b848114915050949350505050565b60095481565b600a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b515780601f10611b2657610100808354040283529160200191611b51565b820191906000526020600020905b815481529060010190602001808311611b3457829003601f168201915b505050505081565b600080823386604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019350505050604051602081830303815290604052805190602001209050809150509392505050565b6000611c2f82601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cc482601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000611d80612846565b611dd282601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e6782601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611eb583612897565b90506000611ecd60028361279590919063ffffffff16565b90506000611ee4828461282a90919063ffffffff16565b90506000611f0d611efe83856127e590919063ffffffff16565b8761282a90919063ffffffff16565b9050611f1a3388836120ea565b50611f27336000856120ea565b508673ffffffffffffffffffffffffffffffffffffffff16601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561202157611fac87601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120ea565b50600073ffffffffffffffffffffffffffffffffffffffff16601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561202057612019826006546127e590919063ffffffff16565b6006819055505b5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156120725761206b816006546127e590919063ffffffff16565b6006819055505b612087836006546127e590919063ffffffff16565b6006819055506120956112a7565b60058190555033601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600194505050505092915050565b600061213e82601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282a90919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121d382601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e590919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600d5481565b6000601654905090565b600082601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612473578082015181840152602081019050612458565b50505050905090810190601f1680156124a05780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156124c257600080fd5b505af11580156124d6573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561256857600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561262c57600080fd5b505af1158015612640573d6000803e3d6000fd5b505050506040513d602081101561265657600080fd5b8101908080519060200190929190505050905092915050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561275157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080821115156127a557600080fd5b81838115156127b057fe5b04905092915050565b600080600460009054906101000a900460ff1660ff16600a0a600360075460ea030a0290508091505090565b600081830190508281101515156127fb57600080fd5b92915050565b6001600b5401600b819055506128156128fb565b61281d612976565b6001430340600a81905550565b600082821115151561283b57600080fd5b818303905092915050565b426008541115156128955761287a606461286c6096600754612a2690919063ffffffff16565b61279590919063ffffffff16565b60078190555060075460020a601581905550612894612801565b5b565b6000806128af60135484612a5790919063ffffffff16565b905060006128dc6127106128ce60135485612a2690919063ffffffff16565b61279590919063ffffffff16565b90506128f2600282612a2690919063ffffffff16565b92505050919050565b7c40000000000000000000000000000000000000000000000000000000006010541015156129745761293f660400000000000060105461279590919063ffffffff16565b601081905550612961660400000000000060065461279590919063ffffffff16565b6006819055506001601654016016819055505b565b60016007540360078190555060075460020a6015819055506305a63d80420160088190555060006129c660646129b8605f601054612a2690919063ffffffff16565b61279590919063ffffffff16565b905080600654101515612a23576129fc60646129ee6069600754612a2690919063ffffffff16565b61279590919063ffffffff16565b60078190555060d56007541115612a165760d56007819055505b60075460020a6015819055505b50565b600081830290506000831480612a465750818382811515612a4357fe5b04145b1515612a5157600080fd5b92915050565b600080612a6484846127e5565b90506000612a7382600161282a565b9050612a88612a828286612795565b85612a26565b925050509291505056fea165627a7a72305820bd9375a09d18a6aec5b8a1291d4d8be51c7813518f1412962916b5334e3fc7fa0029
Deployed Bytecode Sourcemap
3943:16447:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19966:8;;;4085:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4085:18:0;;;:::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;4085:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16542:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16542:193:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16542:193:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4618:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4618:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10175:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10175:110:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6484:1276;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6484:1276:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6484:1276:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12136:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12136:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15439:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15439:194:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15439:194:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;15439:194:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15439:194:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15439:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;15439:194:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;15439:194:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15439:194:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15439:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;15439:194:0;;;;;;;;;;;;;;;:::i;:::-;;17566:1092;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17566:1092:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17566:1092:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4525:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4525:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4108:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10495:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10495:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4134:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4134:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4166:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4166:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9820:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9820:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12669:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12669:76:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4714:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4714:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4553:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4553:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13231:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13231:113:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13231:113:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12414:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12414:71:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3498:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3498:178:0;;;:::i;:::-;;11623:330;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11623:330:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11623:330:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4396:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4396:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4439:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4439:30:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3132:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3132:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4060;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4060:20:0;;;:::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;4060:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11163:246;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11163:246:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11163:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13958;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13958:246:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13958:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14213:1025;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14213:1025:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14213:1025:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17282:278;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17282:278:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17282:278:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4585:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4585:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12929:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12929:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19428:314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19428:314:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19428:314:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;19428:314:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19428:314:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19428:314:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19428:314:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3157:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3157:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20208:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20208:177:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20208:177:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18934:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18934:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18934:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3396:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3396:96:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3396:96:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4085:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16542:193::-;16604:12;16656:6;16625:7;:19;16633:10;16625:19;;;;;;;;;;;;;;;:28;16645:7;16625:28;;;;;;;;;;;;;;;:37;;;;16695:7;16674:37;;16683:10;16674:37;;;16704:6;16674:37;;;;;;;;;;;;;;;;;;16725:4;16718:11;;16542:193;;;;:::o;4618:36::-;;;;:::o;10175:110::-;10226:4;10246:33;10266:12;;10246:15;;:19;;:33;;;;:::i;:::-;10239:40;;10175:110;:::o;6484:1276::-;6554:12;6723:14;6767:15;;6784:10;6796:5;6750:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6750:52:0;;;6740:63;;;;;;6723:80;;6878:16;6868:6;:26;;6864:40;;;6896:8;;;6864:40;6985:12;;6975:6;6967:15;;;:30;6963:44;;;6999:8;;;6963:44;7064:16;7083:20;:37;7104:15;;7083:37;;;;;;;;;;;;7064:56;;7167:6;7127:20;:37;7148:15;;7127:37;;;;;;;;;;;:46;;;;7196:3;7184:15;;:8;:15;;7180:29;;;7201:8;;;7180:29;7264:18;7285:17;:15;:17::i;:::-;7264:38;;7332:39;7357:13;7332:8;:20;7341:10;7332:20;;;;;;;;;;;;;;;;:24;;:39;;;;:::i;:::-;7309:8;:20;7318:10;7309:20;;;;;;;;;;;;;;;:62;;;;7393:31;7410:13;7393:12;;:16;;:31;;;;:::i;:::-;7378:12;:46;;;;7446:30;7463:12;;7446;;:16;;:30;;;;:::i;:::-;7431:12;:45;;;;7537:10;7522:12;;:25;;;;;;;;;;;;;;;;;;7573:13;7554:16;:32;;;;7620:12;7593:24;:39;;;;7641:22;:20;:22::i;:::-;7680:10;7675:59;;;7692:13;7707:9;;7718:15;;7675:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7750:4;7743:11;;;;;6484:1276;;;;:::o;12136:94::-;12179:4;12199:25;12216:7;;12199:12;;:16;;:25;;;;:::i;:::-;12192:32;;12136:94;:::o;15439:194::-;15535:9;15547:1;15535:13;;15530:98;15554:9;:16;15550:1;:20;15530:98;;;15586:34;15595:9;15605:1;15595:12;;;;;;;;;;;;;;;;;;15609:7;15617:1;15609:10;;;;;;;;;;;;;;;;;;15586:8;:34::i;:::-;;15572:3;;;;;;;15530:98;;;;15439:194;;:::o;17566:1092::-;17642:12;17669;:10;:12::i;:::-;17711:26;17730:6;17711:8;:14;17720:4;17711:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;17694:8;:14;17703:4;17694:14;;;;;;;;;;;;;;;:43;;;;17772:37;17802:6;17772:7;:13;17780:4;17772:13;;;;;;;;;;;;;;;:25;17786:10;17772:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;17744:7;:13;17752:4;17744:13;;;;;;;;;;;;;;;:25;17758:10;17744:25;;;;;;;;;;;;;;;:65;;;;17831:24;17848:6;17831:8;:12;17840:2;17831:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;17816:8;:12;17825:2;17816:12;;;;;;;;;;;;;;;:39;;;;17864:20;17887:22;17902:6;17887:14;:22::i;:::-;17864:45;;17916:21;17940:19;17957:1;17940:12;:16;;:19;;;;:::i;:::-;17916:43;;17966:25;18009:13;17994:12;:28;17966:56;;18029:24;18056:48;18086:17;18056:25;18067:13;18056:6;:10;;:25;;;;:::i;:::-;:29;;:48;;;;:::i;:::-;18029:75;;18113:40;18120:10;18132:2;18136:16;18113:6;:40::i;:::-;;18160:45;18167:10;18187:1;18191:13;18160:6;:45::i;:::-;;18234:2;18216:20;;:14;;;;;;;;;;;:20;;;;18212:223;;;18279:45;18286:2;18290:14;;;;;;;;;;;18306:17;18279:6;:45::i;:::-;;18363:1;18337:28;;:14;;;;;;;;;;;:28;;;18333:95;;;18388:30;18400:17;18388:7;;:11;;:30;;;;:::i;:::-;18378:7;:40;;;;18333:95;18212:223;18459:1;18445:16;;:2;:16;;;18441:78;;;18482:29;18494:16;18482:7;;:11;;:29;;;;:::i;:::-;18472:7;:39;;;;18441:78;18537:26;18549:13;18537:7;;:11;;:26;;;;:::i;:::-;18527:7;:36;;;;18585:13;:11;:13::i;:::-;18570:12;:28;;;;18622:10;18605:14;;:27;;;;;;;;;;;;;;;;;;18648:4;18641:11;;;;;;17566:1092;;;;;:::o;4525:21::-;;;;:::o;4108:::-;;;;;;;;;;;;;:::o;10495:85::-;10542:4;10562:12;;10555:19;;10495:85;:::o;4134:27::-;;;;:::o;4166:22::-;;;;:::o;9820:94::-;9870:7;9893:15;;9886:22;;9820:94;:::o;12669:76::-;12707:4;12727:12;;12720:19;;12669:76;:::o;4714:24::-;;;;:::o;4553:27::-;;;;;;;;;;;;;:::o;13231:113::-;13290:12;13318:8;:20;13327:10;13318:20;;;;;;;;;;;;;;;;13311:27;;13231:113;;;:::o;12414:71::-;12452:4;12472:7;;12465:14;;12414:71;:::o;3498:178::-;3561:8;;;;;;;;;;;3547:22;;:10;:22;;;3539:31;;;;;;;;3610:8;;;;;;;;;;;3582:37;;3603:5;;;;;;;;;;;3582:37;;;;;;;;;;;;3634:8;;;;;;;;;;;3626:5;;:16;;;;;;;;;;;;;;;;;;3668:1;3649:8;;:21;;;;;;;;;;;;;;;;;;3498:178::o;11623:330::-;11754:12;11775:14;11819:16;11837:10;11849:5;11802:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11802:53:0;;;11792:64;;;;;;11775:81;;11885:10;11875:6;11867:15;;;:28;11863:42;;;11897:8;;;11863:42;11930:16;11920:6;:26;11912:35;;;11623:330;;;;;;:::o;4396:36::-;;;;:::o;4439:30::-;;;;:::o;3132:20::-;;;;;;;;;;;;;:::o;4060:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11163:246::-;11273:18;11300:14;11344:16;11362:10;11374:5;11327:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11327:53:0;;;11317:64;;;;;;11300:81;;11395:6;11388:13;;;11163:246;;;;;:::o;13958:::-;14014:12;14058:32;14083:6;14058:8;:20;14067:10;14058:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14035:8;:20;14044:10;14035:20;;;;;;;;;;;;;;;:55;;;;14112:24;14129:6;14112:8;:12;14121:2;14112:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;14097:8;:12;14106:2;14097:12;;;;;;;;;;;;;;;:39;;;;14169:2;14148:32;;14157:10;14148:32;;;14173:6;14148:32;;;;;;;;;;;;;;;;;;14194:4;14187:11;;13958:246;;;;:::o;14213:1025::-;14271:12;14300;:10;:12::i;:::-;14345:32;14370:6;14345:8;:20;14354:10;14345:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14322:8;:20;14331:10;14322:20;;;;;;;;;;;;;;;:55;;;;14401:24;14418:6;14401:8;:12;14410:2;14401:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;14386:8;:12;14395:2;14386:12;;;;;;;;;;;;;;;:39;;;;14434:20;14457:22;14472:6;14457:14;:22::i;:::-;14434:45;;14486:21;14510:19;14527:1;14510:12;:16;;:19;;;;:::i;:::-;14486:43;;14536:25;14564:31;14581:13;14564:12;:16;;:31;;;;:::i;:::-;14536:59;;14602:24;14629:48;14640:36;14658:17;14640:13;:17;;:36;;;;:::i;:::-;14629:6;:10;;:48;;;;:::i;:::-;14602:75;;14687:40;14694:10;14706:2;14710:16;14687:6;:40::i;:::-;;14735:45;14742:10;14762:1;14766:13;14735:6;:45::i;:::-;;14809:2;14791:20;;:14;;;;;;;;;;;:20;;;;14787:226;;;14857:45;14864:2;14868:14;;;;;;;;;;;14884:17;14857:6;:45::i;:::-;;14941:1;14915:28;;:14;;;;;;;;;;;:28;;;14911:95;;;14966:30;14978:17;14966:7;;:11;;:30;;;;:::i;:::-;14956:7;:40;;;;14911:95;14787:226;15039:1;15025:16;;:2;:16;;;15021:78;;;15062:29;15074:16;15062:7;;:11;;:29;;;;:::i;:::-;15052:7;:39;;;;15021:78;15117:26;15129:13;15117:7;;:11;;:26;;;;:::i;:::-;15107:7;:36;;;;15167:13;:11;:13::i;:::-;15152:12;:28;;;;15204:10;15187:14;;:27;;;;;;;;;;;;;;;;;;15228:4;15221:11;;;;;;14213:1025;;;;:::o;17282:278::-;17352:12;17400:32;17425:6;17400:8;:20;17409:10;17400:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17377:8;:20;17386:10;17377:20;;;;;;;;;;;;;;;:55;;;;17458:24;17475:6;17458:8;:12;17467:2;17458:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;17443:8;:12;17452:2;17443:12;;;;;;;;;;;;;;;:39;;;;17519:2;17498:32;;17507:10;17498:32;;;17523:6;17498:32;;;;;;;;;;;;;;;;;;17548:4;17541:11;;17282:278;;;;;:::o;4585:28::-;;;;:::o;12929:83::-;12973:4;12993:13;;12986:20;;12929:83;:::o;19428:314::-;19516:12;19568:6;19537:7;:19;19545:10;19537:19;;;;;;;;;;;;;;;:28;19557:7;19537:28;;;;;;;;;;;;;;;:37;;;;19607:7;19586:37;;19595:10;19586:37;;;19616:6;19586:37;;;;;;;;;;;;;;;;;;19653:7;19630:47;;;19678:10;19690:6;19706:4;19713;19630:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;19630:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19630:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19630:88:0;;;;19732:4;19725:11;;19428:314;;;;;:::o;3157:23::-;;;;;;;;;;;;;:::o;20208:177::-;20299:12;3370:5;;;;;;;;;;;3356:19;;:10;:19;;;3348:28;;;;;;;;20342:12;20327:37;;;20365:5;;;;;;;;;;;20372:6;20327:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20327:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20327:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20327:52:0;;;;;;;;;;;;;;;;20320:59;;20208:177;;;;:::o;18934:140::-;19010:14;19040:7;:19;19048:10;19040:19;;;;;;;;;;;;;;;:28;19060:7;19040:28;;;;;;;;;;;;;;;;19033:35;;18934:140;;;;:::o;3396:96::-;3370:5;;;;;;;;;;;3356:19;;:10;:19;;;3348:28;;;;;;;;3477:9;3466:8;;:20;;;;;;;;;;;;;;;;;;3396:96;:::o;981:102::-;1032:6;1059:1;1055;:5;1047:14;;;;;;;;1076:1;1072;:5;;;;;;;;1068:9;;981:102;;;;:::o;10813:136::-;10857:4;10870:11;10914:8;;;;;;;;;;;10909:14;;10903:2;:20;10898:1;10892;;10886:3;:7;10885:14;10884:39;10870:53;;10937:6;10930:13;;;10813:136;:::o;589:103::-;640:6;663:1;659;:5;655:9;;684:1;679;:6;;671:15;;;;;;;;589:103;;;;:::o;7984:211::-;8056:1;8044:9;;:13;8032:9;:25;;;;8090:19;:17;:19::i;:::-;8116:21;:19;:21::i;:::-;8187:1;8172:12;:16;8162:27;8144:15;:45;;;;7984:211::o;715:103::-;766:6;794:1;789;:6;;781:15;;;;;;;;811:1;807;:5;803:9;;715:103;;;;:::o;13352:236::-;13463:3;13450:11;;:16;;13447:126;;;13480:21;13497:3;13481:10;13487:3;13481:1;;:5;;:10;;;;:::i;:::-;13480:16;;:21;;;;:::i;:::-;13476:1;:25;;;;13532:1;;13527;:6;13511:12;:23;;;;13543:22;:20;:22::i;:::-;13447:126;13352:236::o;15829:223::-;15889:7;15905:18;15926:23;15937:11;;15926:5;:10;;:23;;;;:::i;:::-;15905:44;;15956:18;15977:38;16009:5;15977:27;15992:11;;15977:10;:14;;:27;;;;:::i;:::-;:31;;:38;;;;:::i;:::-;15956:59;;16029:17;16044:1;16029:10;:14;;:17;;;;:::i;:::-;16022:24;;;;15829:223;;;:::o;8282:409::-;8348:10;8331:12;;:28;;8327:359;;;8555:27;8572:9;8555:12;;:16;;:27;;;;:::i;:::-;8540:12;:42;;;;8603:22;8615:9;8603:7;;:11;;:22;;;;:::i;:::-;8593:7;:32;;;;8677:1;8661:13;;:17;8645:13;:33;;;;8327:359;8282:409::o;8881:675::-;8936:1;8932;;:5;8928:1;:9;;;;8965:1;;8960;:6;8944:12;:23;;;;8994:9;8988:3;:15;8974:11;:29;;;;9317:13;9333:31;9360:3;9334:20;9351:2;9334:12;;:16;;:20;;;;:::i;:::-;9333:26;;:31;;;;:::i;:::-;9317:47;;9383:8;9374:7;;:17;;9371:180;;;9457:21;9474:3;9458:10;9464:3;9458:1;;:5;;:10;;;;:::i;:::-;9457:16;;:21;;;;:::i;:::-;9453:1;:25;;;;9496:3;9492:1;;:7;9489:21;;;9505:3;9501:1;:7;;;;9489:21;9541:1;;9536;:6;9520:12;:23;;;;9371:180;8881:675;:::o;844:117::-;895:6;918:1;914;:5;910:9;;939:1;934;:6;:20;;;;953:1;948;944;:5;;;;;;;;:10;934:20;926:29;;;;;;;;844:117;;;;:::o;1099:145::-;1151:4;1164:6;1173:9;1177:1;1180;1173:3;:9::i;:::-;1164:18;;1189:6;1198:9;1202:1;1205;1198:3;:9::i;:::-;1189:18;;1221:17;1225:9;1229:1;1232;1225:3;:9::i;:::-;1236:1;1221:3;:17::i;:::-;1214:24;;;;1099:145;;;;:::o
Swarm Source
bzzr://bd9375a09d18a6aec5b8a1291d4d8be51c7813518f1412962916b5334e3fc7fa
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.