ERC-20
Overview
Max Total Supply
1,000,000,000 GWC
Holders
115
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.324128641136152067 GWCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GWC
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-06 */ /* $$$$$$\ $$\ $$\ $$$$$$\ $$ __$$\ $$ | $\ $$ |$$ __$$\ $$ / \__|$$ |$$$\ $$ |$$ / \__| $$ |$$$$\ $$ $$ $$\$$ |$$ | $$ |\_$$ |$$$$ _$$$$ |$$ | $$ | $$ |$$$ / \$$$ |$$ | $$\ \$$$$$$ |$$ / \$$ |\$$$$$$ | \______/ \__/ \__| \______/ * Telegram: https://t.me/greenwhalechallenge * Website: https://greenwhalechallenge.com * Discord: https://discord.gg/greenwhalechallenge * Twitter: https://twitter.com/gwctoken */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract GWC is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balance; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _walletExcluded; uint256 private constant MAX = ~uint256(0); uint8 private constant _decimals = 18; uint256 private constant _totalSupply = 1000000000 * 10**_decimals; //Swap Threshold (0.04%) uint256 private constant minSwap = 4000 * 10**_decimals; //Define 1% uint256 private constant onePercent = 10000000 * 10**_decimals; //Max Tx at Launch uint256 public maxTxAmount = onePercent * 2; uint256 private launchBlock; uint256 private buyValue = 0; uint256 private _tax; uint public _buylpfee = 1; uint public _buymarketingfee = 2; uint public _buycashprize = 1; uint256 public buyTax; uint public _sellpfee = 1; uint public _sellmarketingfee = 2; uint public _sellcashprize = 1; uint256 public sellTax; string private constant _name = "Green Whale Challenge"; string private constant _symbol = "GWC"; IUniswapV2Router02 private uniswapV2Router; address public uniswapV2Pair; address public liquidityReciever; address public marketingWallet = address(0xE9BD9Aa937BCdA1e7f1f485aE02eAF74C0C5edF7); address public cashPrizeWallet = address(0x3B79C22101D97B71906f33a86e3Bb796aA0Eddf0); bool private launch = false; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); constructor() { uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); liquidityReciever = msg.sender; _balance[msg.sender] = _totalSupply; buyTax = _buylpfee + _buymarketingfee + _buycashprize; sellTax = _sellpfee + _sellmarketingfee + _sellcashprize; _walletExcluded[msg.sender] = true; _walletExcluded[marketingWallet] = true; _walletExcluded[cashPrizeWallet] = true; _walletExcluded[address(this)] = true; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balance[account]; } function transfer(address recipient, uint256 amount)public override returns (bool){ _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256){ return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool){ _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function enableTrading() external onlyOwner { launch = true; launchBlock = block.number; } function addExcludedWallet(address wallet) external onlyOwner { _walletExcluded[wallet] = true; } function removeLimits() external onlyOwner { maxTxAmount = _totalSupply; } function setBuyFee(uint _lp, uint _marketing, uint _cashPrize) external onlyOwner { _buylpfee = _lp; _buymarketingfee = _marketing; _buycashprize = _cashPrize; buyTax = _buylpfee + _buymarketingfee + _buycashprize; } function setSellFee(uint _lp, uint _marketing, uint _cashPrize) external onlyOwner { _sellpfee = _lp; _sellmarketingfee = _marketing; _sellcashprize = _cashPrize; sellTax = _sellpfee + _sellmarketingfee + _sellcashprize; } function setliquidityWallet(address _newWallet) public onlyOwner { liquidityReciever = _newWallet; } function setMarketingWallet(address _newWallet) public onlyOwner { marketingWallet = _newWallet; } function setCashPrizeWallet(address _newWallet) public onlyOwner { cashPrizeWallet = _newWallet; } function changeBuyValue(uint256 newBuyValue) external onlyOwner { buyValue = newBuyValue; } function rescueStuckFunds() external { require(_msgSender() == liquidityReciever); uint bal = address(this).balance; payable(liquidityReciever).transfer(bal); } function rescueStuckTokens(address _token,uint _amount) external { require(_msgSender() == liquidityReciever); (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)', liquidityReciever, _amount)); require(success, 'Token payment failed'); } function _tokenTransfer(address from, address to, uint256 amount) private { uint256 taxTokens = (amount * _tax) / 100; uint256 transferAmount = amount - taxTokens; _balance[from] = _balance[from] - amount; _balance[to] = _balance[to] + transferAmount; _balance[address(this)] = _balance[address(this)] + taxTokens; emit Transfer(from, to, transferAmount); } function _basicTransfer(address sender, address recipient, uint256 amount) private { _balance[sender] = _balance[sender].sub(amount, "Insufficient Balance"); _balance[recipient] = _balance[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); if (inSwap) { _basicTransfer(from, to, amount); } else { if (_walletExcluded[from] || _walletExcluded[to]) { _tax = 0; } else { require(launch, "Trading not open"); require(amount <= maxTxAmount, "MaxTx Enabled at launch"); if (block.number < launchBlock + buyValue + 2) {_tax=99;} else { if (from == uniswapV2Pair) { _tax = buyTax; } else if (to == uniswapV2Pair) { uint256 tokensToSwap = balanceOf(address(this)); if (tokensToSwap > minSwap) { //Sets Max Internal Swap if (tokensToSwap > onePercent * 4) { tokensToSwap = onePercent * 4; } swapAndLiquifiy(tokensToSwap); } _tax = sellTax; } else { _tax = 0; } } } _tokenTransfer(from, to, amount); } } function swapAndLiquifiy(uint contractBalance) internal swapping { uint256 totalShares = buyTax.add(sellTax); if(totalShares == 0) return; uint256 _liquidityShare = _buylpfee.add(_sellpfee); uint256 _marketingShare = _buymarketingfee.add(_sellmarketingfee); // uint256 _cashPrizeShare = _buycashprize.add(_sellcashprize); uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2); uint256 tokensForSwap = contractBalance.sub(tokensForLP); uint256 initialBalance = address(this).balance; swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance.sub(initialBalance); uint256 totalETHFee = totalShares.sub(_liquidityShare.div(2)); uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2); uint256 amountETHMarketing = amountReceived.mul(_marketingShare).div(totalETHFee); uint256 amountETHPrize = amountReceived.sub(amountETHLiquidity).sub(amountETHMarketing); if(amountETHMarketing > 0) payable(marketingWallet).transfer(amountETHMarketing); if(amountETHPrize > 0) payable(cashPrizeWallet).transfer(amountETHPrize); if(amountETHLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountETHLiquidity); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable liquidityReciever, block.timestamp ); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buycashprize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buylpfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buymarketingfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellcashprize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellmarketingfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellpfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"addExcludedWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cashPrizeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyValue","type":"uint256"}],"name":"changeBuyValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lp","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_cashPrize","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setCashPrizeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lp","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_cashPrize","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setliquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260026012600a620000169190620008ef565b6298968062000026919062000940565b62000032919062000940565b600555600060075560016009556002600a556001600b556001600d556002600e556001600f5573e9bd9aa937bcda1e7f1f485ae02eaf74c0c5edf7601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733b79c22101d97b71906f33a86e3bb796aa0eddf0601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff0219169083151502179055503480156200012a57600080fd5b5060006200013d6200074d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c49190620009f5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003749190620009f5565b6040518363ffffffff1660e01b81526004016200039392919062000a38565b6020604051808303816000875af1158015620003b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d99190620009f5565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200046a9190620008ef565b633b9aca006200047b919062000940565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600a54600954620004d3919062000a65565b620004df919062000a65565b600c81905550600f54600e54600d54620004fa919062000a65565b62000506919062000a65565b6010819055506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006c06200074d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200071f9190620008ef565b633b9aca0062000730919062000940565b6040516200073f919062000ab1565b60405180910390a362000ace565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007e357808604811115620007bb57620007ba62000755565b5b6001851615620007cb5780820291505b8081029050620007db8562000784565b94506200079b565b94509492505050565b600082620007fe5760019050620008d1565b816200080e5760009050620008d1565b8160018114620008275760028114620008325762000868565b6001915050620008d1565b60ff84111562000847576200084662000755565b5b8360020a91508482111562000861576200086062000755565b5b50620008d1565b5060208310610133831016604e8410600b8410161715620008a25782820a9050838111156200089c576200089b62000755565b5b620008d1565b620008b1848484600162000791565b92509050818404811115620008cb57620008ca62000755565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008fc82620008d8565b91506200090983620008e2565b9250620009387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007ec565b905092915050565b60006200094d82620008d8565b91506200095a83620008d8565b92508282026200096a81620008d8565b9150828204841483151762000984576200098362000755565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009bd8262000990565b9050919050565b620009cf81620009b0565b8114620009db57600080fd5b50565b600081519050620009ef81620009c4565b92915050565b60006020828403121562000a0e5762000a0d6200098b565b5b600062000a1e84828501620009de565b91505092915050565b62000a3281620009b0565b82525050565b600060408201905062000a4f600083018562000a27565b62000a5e602083018462000a27565b9392505050565b600062000a7282620008d8565b915062000a7f83620008d8565b925082820190508082111562000a9a5762000a9962000755565b5b92915050565b62000aab81620008d8565b82525050565b600060208201905062000ac8600083018462000aa0565b92915050565b6139888062000ade6000396000f3fe6080604052600436106102135760003560e01c806389112cdb11610118578063bd74d025116100a0578063e36ad6ab1161006f578063e36ad6ab1461074e578063ea7c8d0d14610779578063ede60d33146107a4578063f2fde38b146107cf578063fefdbb56146107f85761021a565b8063bd74d02514610694578063cc1776d3146106bd578063dba9d420146106e8578063dd62ed3e146107115761021a565b806395d89b41116100e757806395d89b41146105af57806398e944c8146105da5780639f1fb4f414610605578063a9059cbb1461062e578063b5998a061461066b5761021a565b806389112cdb146105195780638a8c523c146105425780638c0b5e22146105595780638da5cb5b146105845761021a565b806339a77a561161019b5780635d098b381161016a5780635d098b381461045a57806370a0823114610483578063715018a6146104c0578063751039fc146104d757806375f0a874146104ee5761021a565b806339a77a56146103ae57806349bd5a5e146103d95780634f7041a5146104045780635b9d0bae1461042f5761021a565b80631842f91d116101e25780631842f91d146102c95780631d865c30146102f457806323b872dd1461031d57806325519cf21461035a578063313ce567146103835761021a565b806306fdde031461021f578063095ea7b31461024a5780630a5c722f1461028757806318160ddd1461029e5761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610823565b6040516102419190612b04565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190612bbf565b610860565b60405161027e9190612c1a565b60405180910390f35b34801561029357600080fd5b5061029c61087e565b005b3480156102aa57600080fd5b506102b3610950565b6040516102c09190612c44565b60405180910390f35b3480156102d557600080fd5b506102de610974565b6040516102eb9190612c44565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612c5f565b61097a565b005b34801561032957600080fd5b50610344600480360381019061033f9190612cb2565b610a4c565b6040516103519190612c1a565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612c5f565b610b25565b005b34801561038f57600080fd5b50610398610bf7565b6040516103a59190612d21565b60405180910390f35b3480156103ba57600080fd5b506103c3610c00565b6040516103d09190612c44565b60405180910390f35b3480156103e557600080fd5b506103ee610c06565b6040516103fb9190612d4b565b60405180910390f35b34801561041057600080fd5b50610419610c2c565b6040516104269190612c44565b60405180910390f35b34801561043b57600080fd5b50610444610c32565b6040516104519190612c44565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c9190612d66565b610c38565b005b34801561048f57600080fd5b506104aa60048036038101906104a59190612d66565b610d11565b6040516104b79190612c44565b60405180910390f35b3480156104cc57600080fd5b506104d5610d5a565b005b3480156104e357600080fd5b506104ec610ead565b005b3480156104fa57600080fd5b50610503610f67565b6040516105109190612d4b565b60405180910390f35b34801561052557600080fd5b50610540600480360381019061053b9190612d93565b610f8d565b005b34801561054e57600080fd5b5061055761102c565b005b34801561056557600080fd5b5061056e6110e5565b60405161057b9190612c44565b60405180910390f35b34801561059057600080fd5b506105996110eb565b6040516105a69190612d4b565b60405180910390f35b3480156105bb57600080fd5b506105c4611114565b6040516105d19190612b04565b60405180910390f35b3480156105e657600080fd5b506105ef611151565b6040516105fc9190612d4b565b60405180910390f35b34801561061157600080fd5b5061062c60048036038101906106279190612d66565b611177565b005b34801561063a57600080fd5b5061065560048036038101906106509190612bbf565b611250565b6040516106629190612c1a565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612bbf565b61126e565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190612d66565b611432565b005b3480156106c957600080fd5b506106d261150b565b6040516106df9190612c44565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a9190612d66565b611511565b005b34801561071d57600080fd5b5061073860048036038101906107339190612dc0565b611601565b6040516107459190612c44565b60405180910390f35b34801561075a57600080fd5b50610763611688565b6040516107709190612c44565b60405180910390f35b34801561078557600080fd5b5061078e61168e565b60405161079b9190612c44565b60405180910390f35b3480156107b057600080fd5b506107b9611694565b6040516107c69190612d4b565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190612d66565b6116ba565b005b34801561080457600080fd5b5061080d61175b565b60405161081a9190612c44565b60405180910390f35b60606040518060400160405280601581526020017f477265656e205768616c65204368616c6c656e67650000000000000000000000815250905090565b600061087461086d611761565b8484611769565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108bf611761565b73ffffffffffffffffffffffffffffffffffffffff16146108df57600080fd5b6000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561094c573d6000803e3d6000fd5b5050565b60006012600a6109609190612f62565b633b9aca0061096f9190612fad565b905090565b600a5481565b610982611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a069061303b565b60405180910390fd5b82600d8190555081600e8190555080600f81905550600f54600e54600d54610a37919061305b565b610a41919061305b565b601081905550505050565b6000610a59848484611932565b610b1a84610a65611761565b610b158560405180606001604052806028815260200161392b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610acb611761565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb29092919063ffffffff16565b611769565b600190509392505050565b610b2d611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb19061303b565b60405180910390fd5b8260098190555081600a8190555080600b81905550600b54600a54600954610be2919061305b565b610bec919061305b565b600c81905550505050565b60006012905090565b600b5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60095481565b610c40611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc49061303b565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d62611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de69061303b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610eb5611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f399061303b565b60405180910390fd5b6012600a610f509190612f62565b633b9aca00610f5f9190612fad565b600581905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f95611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110199061303b565b60405180910390fd5b8060078190555050565b611034611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b89061303b565b60405180910390fd5b6001601560146101000a81548160ff02191690831515021790555043600681905550565b60055481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4757430000000000000000000000000000000000000000000000000000000000815250905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61117f611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112039061303b565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061126461125d611761565b8484611932565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112af611761565b73ffffffffffffffffffffffffffffffffffffffff16146112cf57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360405160240161131d92919061308f565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113a791906130ff565b6000604051808303816000865af19150503d80600081146113e4576040519150601f19603f3d011682016040523d82523d6000602084013e6113e9565b606091505b505090508061142d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142490613162565b60405180910390fd5b505050565b61143a611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be9061303b565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b611519611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d9061303b565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b600d5481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116c2611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117469061303b565b60405180910390fd5b61175881611d16565b50565b600f5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cf906131f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e90613286565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119259190612c44565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890613318565b60405180910390fd5b60158054906101000a900460ff16156119c4576119bf838383611e42565b611cad565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a655750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a77576000600881905550611ca1565b601560149054906101000a900460ff16611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90613384565b60405180910390fd5b600554811115611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906133f0565b60405180910390fd5b6002600754600654611b1d919061305b565b611b27919061305b565b431015611b3b576063600881905550611ca0565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b9e57600c54600881905550611c9f565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c95576000611bfe30610d11565b90506012600a611c0e9190612f62565b610fa0611c1b9190612fad565b811115611c865760046012600a611c329190612f62565b62989680611c409190612fad565b611c4a9190612fad565b811115611c7c5760046012600a611c619190612f62565b62989680611c6f9190612fad565b611c799190612fad565b90505b611c858161200d565b5b60105460088190555050611c9e565b60006008819055505b5b5b5b611cac8383836122e5565b5b505050565b6000838311158290611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf19190612b04565b60405180910390fd5b5060008385611d099190613410565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7c906134b6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ecb816040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb29092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252990919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120009190612c44565b60405180910390a3505050565b60016015806101000a81548160ff0219169083151502179055506000612040601054600c5461252990919063ffffffff16565b90506000810361205057506122c8565b6000612069600d5460095461252990919063ffffffff16565b90506000612084600e54600a5461252990919063ffffffff16565b905060006120c060026120b2866120a4878a61258790919063ffffffff16565b61260190919063ffffffff16565b61260190919063ffffffff16565b905060006120d7828761264b90919063ffffffff16565b905060004790506120e782612695565b60006120fc824761264b90919063ffffffff16565b9050600061212661211760028961260190919063ffffffff16565b8961264b90919063ffffffff16565b905060006121626002612154846121468c8861258790919063ffffffff16565b61260190919063ffffffff16565b61260190919063ffffffff16565b9050600061218b8361217d8a8761258790919063ffffffff16565b61260190919063ffffffff16565b905060006121b4826121a6858861264b90919063ffffffff16565b61264b90919063ffffffff16565b9050600082111561222957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612227573d6000803e3d6000fd5b505b600081111561229c57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561229a573d6000803e3d6000fd5b505b6000831180156122ac5750600088115b156122bc576122bb8884612911565b5b50505050505050505050505b60006015806101000a81548160ff02191690831515021790555050565b60006064600854836122f79190612fad565b6123019190613505565b9050600081836123119190613410565b905082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461235e9190613410565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ec919061305b565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a919061305b565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161251a9190612c44565b60405180910390a35050505050565b6000808284612538919061305b565b90508381101561257d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257490613582565b60405180910390fd5b8091505092915050565b600080830361259957600090506125fb565b600082846125a79190612fad565b90508284826125b69190613505565b146125f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ed90613614565b60405180910390fd5b809150505b92915050565b600061264383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a11565b905092915050565b600061268d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb2565b905092915050565b6000600267ffffffffffffffff8111156126b2576126b1613634565b5b6040519080825280602002602001820160405280156126e05781602001602082028036833780820191505090505b50905030816000815181106126f8576126f7613663565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561279f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c391906136a7565b816001815181106127d7576127d6613663565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061283e30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611769565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128a29594939291906137d7565b600060405180830381600087803b1580156128bc57600080fd5b505af11580156128d0573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612905929190613831565b60405180910390a15050565b61293e30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611769565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129c796959493929190613861565b60606040518083038185885af11580156129e5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a0a91906138d7565b5050505050565b60008083118290612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f9190612b04565b60405180910390fd5b5060008385612a679190613505565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612aae578082015181840152602081019050612a93565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ad682612a74565b612ae08185612a7f565b9350612af0818560208601612a90565b612af981612aba565b840191505092915050565b60006020820190508181036000830152612b1e8184612acb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5682612b2b565b9050919050565b612b6681612b4b565b8114612b7157600080fd5b50565b600081359050612b8381612b5d565b92915050565b6000819050919050565b612b9c81612b89565b8114612ba757600080fd5b50565b600081359050612bb981612b93565b92915050565b60008060408385031215612bd657612bd5612b26565b5b6000612be485828601612b74565b9250506020612bf585828601612baa565b9150509250929050565b60008115159050919050565b612c1481612bff565b82525050565b6000602082019050612c2f6000830184612c0b565b92915050565b612c3e81612b89565b82525050565b6000602082019050612c596000830184612c35565b92915050565b600080600060608486031215612c7857612c77612b26565b5b6000612c8686828701612baa565b9350506020612c9786828701612baa565b9250506040612ca886828701612baa565b9150509250925092565b600080600060608486031215612ccb57612cca612b26565b5b6000612cd986828701612b74565b9350506020612cea86828701612b74565b9250506040612cfb86828701612baa565b9150509250925092565b600060ff82169050919050565b612d1b81612d05565b82525050565b6000602082019050612d366000830184612d12565b92915050565b612d4581612b4b565b82525050565b6000602082019050612d606000830184612d3c565b92915050565b600060208284031215612d7c57612d7b612b26565b5b6000612d8a84828501612b74565b91505092915050565b600060208284031215612da957612da8612b26565b5b6000612db784828501612baa565b91505092915050565b60008060408385031215612dd757612dd6612b26565b5b6000612de585828601612b74565b9250506020612df685828601612b74565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e8657808604811115612e6257612e61612e00565b5b6001851615612e715780820291505b8081029050612e7f85612e2f565b9450612e46565b94509492505050565b600082612e9f5760019050612f5b565b81612ead5760009050612f5b565b8160018114612ec35760028114612ecd57612efc565b6001915050612f5b565b60ff841115612edf57612ede612e00565b5b8360020a915084821115612ef657612ef5612e00565b5b50612f5b565b5060208310610133831016604e8410600b8410161715612f315782820a905083811115612f2c57612f2b612e00565b5b612f5b565b612f3e8484846001612e3c565b92509050818404811115612f5557612f54612e00565b5b81810290505b9392505050565b6000612f6d82612b89565b9150612f7883612d05565b9250612fa57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e8f565b905092915050565b6000612fb882612b89565b9150612fc383612b89565b9250828202612fd181612b89565b91508282048414831517612fe857612fe7612e00565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613025602083612a7f565b915061303082612fef565b602082019050919050565b6000602082019050818103600083015261305481613018565b9050919050565b600061306682612b89565b915061307183612b89565b925082820190508082111561308957613088612e00565b5b92915050565b60006040820190506130a46000830185612d3c565b6130b16020830184612c35565b9392505050565b600081519050919050565b600081905092915050565b60006130d9826130b8565b6130e381856130c3565b93506130f3818560208601612a90565b80840191505092915050565b600061310b82846130ce565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b600061314c601483612a7f565b915061315782613116565b602082019050919050565b6000602082019050818103600083015261317b8161313f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131de602483612a7f565b91506131e982613182565b604082019050919050565b6000602082019050818103600083015261320d816131d1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613270602283612a7f565b915061327b82613214565b604082019050919050565b6000602082019050818103600083015261329f81613263565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613302602583612a7f565b915061330d826132a6565b604082019050919050565b60006020820190508181036000830152613331816132f5565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061336e601083612a7f565b915061337982613338565b602082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b7f4d6178547820456e61626c6564206174206c61756e6368000000000000000000600082015250565b60006133da601783612a7f565b91506133e5826133a4565b602082019050919050565b60006020820190508181036000830152613409816133cd565b9050919050565b600061341b82612b89565b915061342683612b89565b925082820390508181111561343e5761343d612e00565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134a0602683612a7f565b91506134ab82613444565b604082019050919050565b600060208201905081810360008301526134cf81613493565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061351082612b89565b915061351b83612b89565b92508261352b5761352a6134d6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061356c601b83612a7f565b915061357782613536565b602082019050919050565b6000602082019050818103600083015261359b8161355f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006135fe602183612a7f565b9150613609826135a2565b604082019050919050565b6000602082019050818103600083015261362d816135f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506136a181612b5d565b92915050565b6000602082840312156136bd576136bc612b26565b5b60006136cb84828501613692565b91505092915050565b6000819050919050565b6000819050919050565b60006137036136fe6136f9846136d4565b6136de565b612b89565b9050919050565b613713816136e8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61374e81612b4b565b82525050565b60006137608383613745565b60208301905092915050565b6000602082019050919050565b600061378482613719565b61378e8185613724565b935061379983613735565b8060005b838110156137ca5781516137b18882613754565b97506137bc8361376c565b92505060018101905061379d565b5085935050505092915050565b600060a0820190506137ec6000830188612c35565b6137f9602083018761370a565b818103604083015261380b8186613779565b905061381a6060830185612d3c565b6138276080830184612c35565b9695505050505050565b60006040820190506138466000830185612c35565b81810360208301526138588184613779565b90509392505050565b600060c0820190506138766000830189612d3c565b6138836020830188612c35565b613890604083018761370a565b61389d606083018661370a565b6138aa6080830185612d3c565b6138b760a0830184612c35565b979650505050505050565b6000815190506138d181612b93565b92915050565b6000806000606084860312156138f0576138ef612b26565b5b60006138fe868287016138c2565b935050602061390f868287016138c2565b9250506040613920868287016138c2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eaf70d2a1094482a8c9258591dc9211e6246d5089416f9f97bbbac5602e0251364736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102135760003560e01c806389112cdb11610118578063bd74d025116100a0578063e36ad6ab1161006f578063e36ad6ab1461074e578063ea7c8d0d14610779578063ede60d33146107a4578063f2fde38b146107cf578063fefdbb56146107f85761021a565b8063bd74d02514610694578063cc1776d3146106bd578063dba9d420146106e8578063dd62ed3e146107115761021a565b806395d89b41116100e757806395d89b41146105af57806398e944c8146105da5780639f1fb4f414610605578063a9059cbb1461062e578063b5998a061461066b5761021a565b806389112cdb146105195780638a8c523c146105425780638c0b5e22146105595780638da5cb5b146105845761021a565b806339a77a561161019b5780635d098b381161016a5780635d098b381461045a57806370a0823114610483578063715018a6146104c0578063751039fc146104d757806375f0a874146104ee5761021a565b806339a77a56146103ae57806349bd5a5e146103d95780634f7041a5146104045780635b9d0bae1461042f5761021a565b80631842f91d116101e25780631842f91d146102c95780631d865c30146102f457806323b872dd1461031d57806325519cf21461035a578063313ce567146103835761021a565b806306fdde031461021f578063095ea7b31461024a5780630a5c722f1461028757806318160ddd1461029e5761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610823565b6040516102419190612b04565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190612bbf565b610860565b60405161027e9190612c1a565b60405180910390f35b34801561029357600080fd5b5061029c61087e565b005b3480156102aa57600080fd5b506102b3610950565b6040516102c09190612c44565b60405180910390f35b3480156102d557600080fd5b506102de610974565b6040516102eb9190612c44565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612c5f565b61097a565b005b34801561032957600080fd5b50610344600480360381019061033f9190612cb2565b610a4c565b6040516103519190612c1a565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612c5f565b610b25565b005b34801561038f57600080fd5b50610398610bf7565b6040516103a59190612d21565b60405180910390f35b3480156103ba57600080fd5b506103c3610c00565b6040516103d09190612c44565b60405180910390f35b3480156103e557600080fd5b506103ee610c06565b6040516103fb9190612d4b565b60405180910390f35b34801561041057600080fd5b50610419610c2c565b6040516104269190612c44565b60405180910390f35b34801561043b57600080fd5b50610444610c32565b6040516104519190612c44565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c9190612d66565b610c38565b005b34801561048f57600080fd5b506104aa60048036038101906104a59190612d66565b610d11565b6040516104b79190612c44565b60405180910390f35b3480156104cc57600080fd5b506104d5610d5a565b005b3480156104e357600080fd5b506104ec610ead565b005b3480156104fa57600080fd5b50610503610f67565b6040516105109190612d4b565b60405180910390f35b34801561052557600080fd5b50610540600480360381019061053b9190612d93565b610f8d565b005b34801561054e57600080fd5b5061055761102c565b005b34801561056557600080fd5b5061056e6110e5565b60405161057b9190612c44565b60405180910390f35b34801561059057600080fd5b506105996110eb565b6040516105a69190612d4b565b60405180910390f35b3480156105bb57600080fd5b506105c4611114565b6040516105d19190612b04565b60405180910390f35b3480156105e657600080fd5b506105ef611151565b6040516105fc9190612d4b565b60405180910390f35b34801561061157600080fd5b5061062c60048036038101906106279190612d66565b611177565b005b34801561063a57600080fd5b5061065560048036038101906106509190612bbf565b611250565b6040516106629190612c1a565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612bbf565b61126e565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190612d66565b611432565b005b3480156106c957600080fd5b506106d261150b565b6040516106df9190612c44565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a9190612d66565b611511565b005b34801561071d57600080fd5b5061073860048036038101906107339190612dc0565b611601565b6040516107459190612c44565b60405180910390f35b34801561075a57600080fd5b50610763611688565b6040516107709190612c44565b60405180910390f35b34801561078557600080fd5b5061078e61168e565b60405161079b9190612c44565b60405180910390f35b3480156107b057600080fd5b506107b9611694565b6040516107c69190612d4b565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190612d66565b6116ba565b005b34801561080457600080fd5b5061080d61175b565b60405161081a9190612c44565b60405180910390f35b60606040518060400160405280601581526020017f477265656e205768616c65204368616c6c656e67650000000000000000000000815250905090565b600061087461086d611761565b8484611769565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108bf611761565b73ffffffffffffffffffffffffffffffffffffffff16146108df57600080fd5b6000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561094c573d6000803e3d6000fd5b5050565b60006012600a6109609190612f62565b633b9aca0061096f9190612fad565b905090565b600a5481565b610982611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a069061303b565b60405180910390fd5b82600d8190555081600e8190555080600f81905550600f54600e54600d54610a37919061305b565b610a41919061305b565b601081905550505050565b6000610a59848484611932565b610b1a84610a65611761565b610b158560405180606001604052806028815260200161392b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610acb611761565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb29092919063ffffffff16565b611769565b600190509392505050565b610b2d611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb19061303b565b60405180910390fd5b8260098190555081600a8190555080600b81905550600b54600a54600954610be2919061305b565b610bec919061305b565b600c81905550505050565b60006012905090565b600b5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60095481565b610c40611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc49061303b565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d62611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de69061303b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610eb5611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f399061303b565b60405180910390fd5b6012600a610f509190612f62565b633b9aca00610f5f9190612fad565b600581905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f95611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110199061303b565b60405180910390fd5b8060078190555050565b611034611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b89061303b565b60405180910390fd5b6001601560146101000a81548160ff02191690831515021790555043600681905550565b60055481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4757430000000000000000000000000000000000000000000000000000000000815250905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61117f611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112039061303b565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061126461125d611761565b8484611932565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112af611761565b73ffffffffffffffffffffffffffffffffffffffff16146112cf57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360405160240161131d92919061308f565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516113a791906130ff565b6000604051808303816000865af19150503d80600081146113e4576040519150601f19603f3d011682016040523d82523d6000602084013e6113e9565b606091505b505090508061142d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142490613162565b60405180910390fd5b505050565b61143a611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be9061303b565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b611519611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d9061303b565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b600d5481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116c2611761565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117469061303b565b60405180910390fd5b61175881611d16565b50565b600f5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cf906131f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e90613286565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119259190612c44565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890613318565b60405180910390fd5b60158054906101000a900460ff16156119c4576119bf838383611e42565b611cad565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a655750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a77576000600881905550611ca1565b601560149054906101000a900460ff16611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90613384565b60405180910390fd5b600554811115611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906133f0565b60405180910390fd5b6002600754600654611b1d919061305b565b611b27919061305b565b431015611b3b576063600881905550611ca0565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b9e57600c54600881905550611c9f565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c95576000611bfe30610d11565b90506012600a611c0e9190612f62565b610fa0611c1b9190612fad565b811115611c865760046012600a611c329190612f62565b62989680611c409190612fad565b611c4a9190612fad565b811115611c7c5760046012600a611c619190612f62565b62989680611c6f9190612fad565b611c799190612fad565b90505b611c858161200d565b5b60105460088190555050611c9e565b60006008819055505b5b5b5b611cac8383836122e5565b5b505050565b6000838311158290611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf19190612b04565b60405180910390fd5b5060008385611d099190613410565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7c906134b6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ecb816040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cb29092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252990919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120009190612c44565b60405180910390a3505050565b60016015806101000a81548160ff0219169083151502179055506000612040601054600c5461252990919063ffffffff16565b90506000810361205057506122c8565b6000612069600d5460095461252990919063ffffffff16565b90506000612084600e54600a5461252990919063ffffffff16565b905060006120c060026120b2866120a4878a61258790919063ffffffff16565b61260190919063ffffffff16565b61260190919063ffffffff16565b905060006120d7828761264b90919063ffffffff16565b905060004790506120e782612695565b60006120fc824761264b90919063ffffffff16565b9050600061212661211760028961260190919063ffffffff16565b8961264b90919063ffffffff16565b905060006121626002612154846121468c8861258790919063ffffffff16565b61260190919063ffffffff16565b61260190919063ffffffff16565b9050600061218b8361217d8a8761258790919063ffffffff16565b61260190919063ffffffff16565b905060006121b4826121a6858861264b90919063ffffffff16565b61264b90919063ffffffff16565b9050600082111561222957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612227573d6000803e3d6000fd5b505b600081111561229c57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561229a573d6000803e3d6000fd5b505b6000831180156122ac5750600088115b156122bc576122bb8884612911565b5b50505050505050505050505b60006015806101000a81548160ff02191690831515021790555050565b60006064600854836122f79190612fad565b6123019190613505565b9050600081836123119190613410565b905082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461235e9190613410565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ec919061305b565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a919061305b565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161251a9190612c44565b60405180910390a35050505050565b6000808284612538919061305b565b90508381101561257d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257490613582565b60405180910390fd5b8091505092915050565b600080830361259957600090506125fb565b600082846125a79190612fad565b90508284826125b69190613505565b146125f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ed90613614565b60405180910390fd5b809150505b92915050565b600061264383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a11565b905092915050565b600061268d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cb2565b905092915050565b6000600267ffffffffffffffff8111156126b2576126b1613634565b5b6040519080825280602002602001820160405280156126e05781602001602082028036833780820191505090505b50905030816000815181106126f8576126f7613663565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561279f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c391906136a7565b816001815181106127d7576127d6613663565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061283e30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611769565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128a29594939291906137d7565b600060405180830381600087803b1580156128bc57600080fd5b505af11580156128d0573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612905929190613831565b60405180910390a15050565b61293e30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611769565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129c796959493929190613861565b60606040518083038185885af11580156129e5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a0a91906138d7565b5050505050565b60008083118290612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f9190612b04565b60405180910390fd5b5060008385612a679190613505565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612aae578082015181840152602081019050612a93565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ad682612a74565b612ae08185612a7f565b9350612af0818560208601612a90565b612af981612aba565b840191505092915050565b60006020820190508181036000830152612b1e8184612acb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5682612b2b565b9050919050565b612b6681612b4b565b8114612b7157600080fd5b50565b600081359050612b8381612b5d565b92915050565b6000819050919050565b612b9c81612b89565b8114612ba757600080fd5b50565b600081359050612bb981612b93565b92915050565b60008060408385031215612bd657612bd5612b26565b5b6000612be485828601612b74565b9250506020612bf585828601612baa565b9150509250929050565b60008115159050919050565b612c1481612bff565b82525050565b6000602082019050612c2f6000830184612c0b565b92915050565b612c3e81612b89565b82525050565b6000602082019050612c596000830184612c35565b92915050565b600080600060608486031215612c7857612c77612b26565b5b6000612c8686828701612baa565b9350506020612c9786828701612baa565b9250506040612ca886828701612baa565b9150509250925092565b600080600060608486031215612ccb57612cca612b26565b5b6000612cd986828701612b74565b9350506020612cea86828701612b74565b9250506040612cfb86828701612baa565b9150509250925092565b600060ff82169050919050565b612d1b81612d05565b82525050565b6000602082019050612d366000830184612d12565b92915050565b612d4581612b4b565b82525050565b6000602082019050612d606000830184612d3c565b92915050565b600060208284031215612d7c57612d7b612b26565b5b6000612d8a84828501612b74565b91505092915050565b600060208284031215612da957612da8612b26565b5b6000612db784828501612baa565b91505092915050565b60008060408385031215612dd757612dd6612b26565b5b6000612de585828601612b74565b9250506020612df685828601612b74565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e8657808604811115612e6257612e61612e00565b5b6001851615612e715780820291505b8081029050612e7f85612e2f565b9450612e46565b94509492505050565b600082612e9f5760019050612f5b565b81612ead5760009050612f5b565b8160018114612ec35760028114612ecd57612efc565b6001915050612f5b565b60ff841115612edf57612ede612e00565b5b8360020a915084821115612ef657612ef5612e00565b5b50612f5b565b5060208310610133831016604e8410600b8410161715612f315782820a905083811115612f2c57612f2b612e00565b5b612f5b565b612f3e8484846001612e3c565b92509050818404811115612f5557612f54612e00565b5b81810290505b9392505050565b6000612f6d82612b89565b9150612f7883612d05565b9250612fa57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e8f565b905092915050565b6000612fb882612b89565b9150612fc383612b89565b9250828202612fd181612b89565b91508282048414831517612fe857612fe7612e00565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613025602083612a7f565b915061303082612fef565b602082019050919050565b6000602082019050818103600083015261305481613018565b9050919050565b600061306682612b89565b915061307183612b89565b925082820190508082111561308957613088612e00565b5b92915050565b60006040820190506130a46000830185612d3c565b6130b16020830184612c35565b9392505050565b600081519050919050565b600081905092915050565b60006130d9826130b8565b6130e381856130c3565b93506130f3818560208601612a90565b80840191505092915050565b600061310b82846130ce565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b600061314c601483612a7f565b915061315782613116565b602082019050919050565b6000602082019050818103600083015261317b8161313f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131de602483612a7f565b91506131e982613182565b604082019050919050565b6000602082019050818103600083015261320d816131d1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613270602283612a7f565b915061327b82613214565b604082019050919050565b6000602082019050818103600083015261329f81613263565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613302602583612a7f565b915061330d826132a6565b604082019050919050565b60006020820190508181036000830152613331816132f5565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061336e601083612a7f565b915061337982613338565b602082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b7f4d6178547820456e61626c6564206174206c61756e6368000000000000000000600082015250565b60006133da601783612a7f565b91506133e5826133a4565b602082019050919050565b60006020820190508181036000830152613409816133cd565b9050919050565b600061341b82612b89565b915061342683612b89565b925082820390508181111561343e5761343d612e00565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134a0602683612a7f565b91506134ab82613444565b604082019050919050565b600060208201905081810360008301526134cf81613493565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061351082612b89565b915061351b83612b89565b92508261352b5761352a6134d6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061356c601b83612a7f565b915061357782613536565b602082019050919050565b6000602082019050818103600083015261359b8161355f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006135fe602183612a7f565b9150613609826135a2565b604082019050919050565b6000602082019050818103600083015261362d816135f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506136a181612b5d565b92915050565b6000602082840312156136bd576136bc612b26565b5b60006136cb84828501613692565b91505092915050565b6000819050919050565b6000819050919050565b60006137036136fe6136f9846136d4565b6136de565b612b89565b9050919050565b613713816136e8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61374e81612b4b565b82525050565b60006137608383613745565b60208301905092915050565b6000602082019050919050565b600061378482613719565b61378e8185613724565b935061379983613735565b8060005b838110156137ca5781516137b18882613754565b97506137bc8361376c565b92505060018101905061379d565b5085935050505092915050565b600060a0820190506137ec6000830188612c35565b6137f9602083018761370a565b818103604083015261380b8186613779565b905061381a6060830185612d3c565b6138276080830184612c35565b9695505050505050565b60006040820190506138466000830185612c35565b81810360208301526138588184613779565b90509392505050565b600060c0820190506138766000830189612d3c565b6138836020830188612c35565b613890604083018761370a565b61389d606083018661370a565b6138aa6080830185612d3c565b6138b760a0830184612c35565b979650505050505050565b6000815190506138d181612b93565b92915050565b6000806000606084860312156138f0576138ef612b26565b5b60006138fe868287016138c2565b935050602061390f868287016138c2565b9250506040613920868287016138c2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eaf70d2a1094482a8c9258591dc9211e6246d5089416f9f97bbbac5602e0251364736f6c63430008120033
Deployed Bytecode Sourcemap
4504:10791:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7208:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8042:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10220:192;;;;;;;;;;;;;:::i;:::-;;7485:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5339:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9472:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8210:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9207:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7394:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5378:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5743:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5414:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5307:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9867:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7593:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3554:148;;;;;;;;;;;;;:::i;:::-;;9111:88;;;;;;;;;;;;;:::i;:::-;;5819:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10107:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8871:113;;;;;;;;;;;;;:::i;:::-;;5155:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2986:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7299:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5780:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9987:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7719:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10420:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9745:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5553:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8992:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7892:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5476:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5444:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5910:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3200:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5516:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7208:83;7245:13;7278:5;;;;;;;;;;;;;;;;;7271:12;;7208:83;:::o;8042:160::-;8117:4;8133:39;8142:12;:10;:12::i;:::-;8156:7;8165:6;8133:8;:39::i;:::-;8190:4;8183:11;;8042:160;;;;:::o;10220:192::-;10292:17;;;;;;;;;;;10276:33;;:12;:10;:12::i;:::-;:33;;;10268:42;;;;;;10321:8;10332:21;10321:32;;10372:17;;;;;;;;;;;10364:35;;:40;10400:3;10364:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10257:155;10220:192::o;7485:100::-;7538:7;4869:2;4933;:13;;;;:::i;:::-;4920:10;:26;;;;:::i;:::-;7558:19;;7485:100;:::o;5339:32::-;;;;:::o;9472:262::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9578:3:::1;9566:9;:15;;;;9612:10;9592:17;:30;;;;9650:10;9633:14;:27;;;;9712:14;;9692:17;;9680:9;;:29;;;;:::i;:::-;:46;;;;:::i;:::-;9670:7;:56;;;;9472:262:::0;;;:::o;8210:310::-;8308:4;8325:36;8335:6;8343:9;8354:6;8325:9;:36::i;:::-;8372:118;8381:6;8388:12;:10;:12::i;:::-;8401:88;8439:6;8401:88;;;;;;;;;;;;;;;;;:11;:19;8413:6;8401:19;;;;;;;;;;;;;;;:33;8421:12;:10;:12::i;:::-;8401:33;;;;;;;;;;;;;;;;:37;;:88;;;;;:::i;:::-;8372:8;:118::i;:::-;8508:4;8501:11;;8210:310;;;;;:::o;9207:257::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9312:3:::1;9300:9;:15;;;;9345:10;9326:16;:29;;;;9382:10;9366:13;:26;;;;9443:13;;9424:16;;9412:9;;:28;;;;:::i;:::-;:44;;;;:::i;:::-;9403:6;:53;;;;9207:257:::0;;;:::o;7394:83::-;7435:5;4869:2;7453:16;;7394:83;:::o;5378:29::-;;;;:::o;5743:28::-;;;;;;;;;;;;;:::o;5414:21::-;;;;:::o;5307:25::-;;;;:::o;9867:112::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9961:10:::1;9943:15;;:28;;;;;;;;;;;;;;;;;;9867:112:::0;:::o;7593:118::-;7659:7;7686:8;:17;7695:7;7686:17;;;;;;;;;;;;;;;;7679:24;;7593:118;;;:::o;3554:148::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3661:1:::1;3624:40;;3645:6;::::0;::::1;;;;;;;;3624:40;;;;;;;;;;;;3692:1;3675:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3554:148::o:0;9111:88::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4869:2:::1;4933;:13;;;;:::i;:::-;4920:10;:26;;;;:::i;:::-;9165:11;:26;;;;9111:88::o:0;5819:84::-;;;;;;;;;;;;;:::o;10107:105::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10193:11:::1;10182:8;:22;;;;10107:105:::0;:::o;8871:113::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8935:4:::1;8926:6;;:13;;;;;;;;;;;;;;;;;;8964:12;8950:11;:26;;;;8871:113::o:0;5155:43::-;;;;:::o;2986:79::-;3024:7;3051:6;;;;;;;;;;;3044:13;;2986:79;:::o;7299:87::-;7338:13;7371:7;;;;;;;;;;;;;;;;;7364:14;;7299:87;:::o;5780:32::-;;;;;;;;;;;;;:::o;9987:112::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10081:10:::1;10063:15;;:28;;;;;;;;;;;;;;;;;;9987:112:::0;:::o;7719:165::-;7796:4;7812:42;7822:12;:10;:12::i;:::-;7836:9;7847:6;7812:9;:42::i;:::-;7872:4;7865:11;;7719:165;;;;:::o;10420:310::-;10520:17;;;;;;;;;;;10504:33;;:12;:10;:12::i;:::-;:33;;;10496:42;;;;;;10550:12;10576:6;10568:20;;10643:17;;;;;;;;;;;10662:7;10589:81;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10568:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10549:122;;;10690:7;10682:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10485:245;10420:310;;:::o;9745:114::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9841:10:::1;9821:17;;:30;;;;;;;;;;;;;;;;;;9745:114:::0;:::o;5553:22::-;;;;:::o;8992:111::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9091:4:::1;9065:15;:23;9081:6;9065:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;8992:111:::0;:::o;7892:142::-;7973:7;7999:11;:18;8011:5;7999:18;;;;;;;;;;;;;;;:27;8018:7;7999:27;;;;;;;;;;;;;;;;7992:34;;7892:142;;;;:::o;5476:33::-;;;;:::o;5444:25::-;;;;:::o;5910:84::-;;;;;;;;;;;;;:::o;3200:109::-;3123:12;:10;:12::i;:::-;3113:22;;:6;;;;;;;;;;:22;;;3105:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3273:28:::1;3292:8;3273:18;:28::i;:::-;3200:109:::0;:::o;5516:30::-;;;;:::o;681:98::-;734:7;761:10;754:17;;681:98;:::o;8528:335::-;8638:1;8621:19;;:5;:19;;;8613:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8719:1;8700:21;;:7;:21;;;8692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8801:6;8771:11;:18;8783:5;8771:18;;;;;;;;;;;;;;;:27;8790:7;8771:27;;;;;;;;;;;;;;;:36;;;;8839:7;8823:32;;8832:5;8823:32;;;8848:6;8823:32;;;;;;:::i;:::-;;;;;;;;8528:335;;;:::o;11462:1350::-;11566:1;11550:18;;:4;:18;;;11542:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11627:6;;;;;;;;;;11623:1182;;;11650:32;11665:4;11671:2;11675:6;11650:14;:32::i;:::-;11623:1182;;;11728:15;:21;11744:4;11728:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;11753:15;:19;11769:2;11753:19;;;;;;;;;;;;;;;;;;;;;;;;;11728:44;11724:1023;;;11800:1;11793:4;:8;;;;11724:1023;;;11850:6;;;;;;;;;;;11842:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;11914:11;;11904:6;:21;;11896:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12016:1;12005:8;;11991:11;;:22;;;;:::i;:::-;:26;;;;:::i;:::-;11976:12;:41;11972:760;;;12025:2;12020:4;:7;;;;11972:760;;;12070:13;;;;;;;;;;;12062:21;;:4;:21;;;12058:655;;12119:6;;12112:4;:13;;;;12058:655;;;12165:13;;;;;;;;;;;12159:19;;:2;:19;;;12155:558;;12207:20;12230:24;12248:4;12230:9;:24::i;:::-;12207:47;;4869:2;5025;:13;;;;:::i;:::-;5018:4;:20;;;;:::i;:::-;12285:12;:22;12281:303;;;12397:1;4869:2;5111;:13;;;;:::i;:::-;5100:8;:24;;;;:::i;:::-;12384:14;;;;:::i;:::-;12369:12;:29;12365:132;;;12464:1;4869:2;5111;:13;;;;:::i;:::-;5100:8;:24;;;;:::i;:::-;12451:14;;;;:::i;:::-;12436:29;;12365:132;12527:29;12543:12;12527:15;:29::i;:::-;12281:303;12617:7;;12610:4;:14;;;;12180:468;12155:558;;;12688:1;12681:4;:8;;;;12155:558;12058:655;11972:760;11724:1023;12761:32;12776:4;12782:2;12786:6;12761:14;:32::i;:::-;11623:1182;11462:1350;;;:::o;1819:190::-;1905:7;1938:1;1933;:6;;1941:12;1925:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1965:9;1981:1;1977;:5;;;;:::i;:::-;1965:17;;2000:1;1993:8;;;1819:190;;;;;:::o;3317:229::-;3411:1;3391:22;;:8;:22;;;3383:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3501:8;3472:38;;3493:6;;;;;;;;;;3472:38;;;;;;;;;;;;3530:8;3521:6;;:17;;;;;;;;;;;;;;;;;;3317:229;:::o;11166:288::-;11279:52;11300:6;11279:52;;;;;;;;;;;;;;;;;:8;:16;11288:6;11279:16;;;;;;;;;;;;;;;;:20;;:52;;;;;:::i;:::-;11260:8;:16;11269:6;11260:16;;;;;;;;;;;;;;;:71;;;;11364:31;11388:6;11364:8;:19;11373:9;11364:19;;;;;;;;;;;;;;;;:23;;:31;;;;:::i;:::-;11342:8;:19;11351:9;11342:19;;;;;;;;;;;;;;;:53;;;;11428:9;11411:35;;11420:6;11411:35;;;11439:6;11411:35;;;;;;:::i;:::-;;;;;;;;11166:288;;;:::o;12820:1372::-;6103:4;6094:6;;:13;;;;;;;;;;;;;;;;;;12898:19:::1;12920;12931:7;;12920:6;;:10;;:19;;;;:::i;:::-;12898:41;;12970:1;12955:11;:16:::0;12952:28:::1;;12973:7;;;12952:28;12992:23;13018:24;13032:9;;13018;;:13;;:24;;;;:::i;:::-;12992:50;;13053:23;13079:39;13100:17;;13079:16;;:20;;:39;;;;:::i;:::-;13053:65;;13204:19;13226:60;13284:1;13226:53;13267:11;13226:36;13246:15;13226;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;13204:82;;13297:21;13321:32;13341:11;13321:15;:19;;:32;;;;:::i;:::-;13297:56;;13366:22;13391:21;13366:46;;13423:31;13440:13;13423:16;:31::i;:::-;13465:22;13490:41;13516:14;13490:21;:25;;:41;;;;:::i;:::-;13465:66;;13544:19;13566:39;13582:22;13602:1;13582:15;:19;;:22;;;;:::i;:::-;13566:11;:15;;:39;;;;:::i;:::-;13544:61;;13626:26;13655:59;13712:1;13655:52;13695:11;13655:35;13674:15;13655:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;13626:88;;13725:26;13754:52;13794:11;13754:35;13773:15;13754:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;13725:81;;13817:22;13842:62;13885:18;13842:38;13861:18;13842:14;:18;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;13817:87;;13941:1;13920:18;:22;13917:80;;;13952:15;;;;;;;;;;;13944:33;;:53;13978:18;13944:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13917:80;14028:1;14011:14;:18;14008:72;;;14039:15;;;;;;;;;;;14031:33;;:49;14065:14;14031:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14008:72;14115:1;14094:18;:22;:41;;;;;14134:1;14120:11;:15;14094:41;14091:91;;;14137:45;14150:11;14163:18;14137:12;:45::i;:::-;14091:91;12885:1307;;;;;;;;;;;6118:1;6139:5:::0;6130:6;;:14;;;;;;;;;;;;;;;;;;12820:1372;:::o;10738:420::-;10823:17;10861:3;10853:4;;10844:6;:13;;;;:::i;:::-;10843:21;;;;:::i;:::-;10823:41;;10875:22;10909:9;10900:6;:18;;;;:::i;:::-;10875:43;;10965:6;10948:8;:14;10957:4;10948:14;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;10931:8;:14;10940:4;10931:14;;;;;;;;;;;;;;;:40;;;;11012:14;10997:8;:12;11006:2;10997:12;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;10982:8;:12;10991:2;10982:12;;;;;;;;;;;;;;;:44;;;;11089:9;11063:8;:23;11080:4;11063:23;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;11037:8;:23;11054:4;11037:23;;;;;;;;;;;;;;;:61;;;;11131:2;11116:34;;11125:4;11116:34;;;11135:14;11116:34;;;;;;:::i;:::-;;;;;;;;10812:346;;10738:420;;;:::o;1488:179::-;1546:7;1566:9;1582:1;1578;:5;;;;:::i;:::-;1566:17;;1607:1;1602;:6;;1594:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1658:1;1651:8;;;1488:179;;;;:::o;2017:246::-;2075:7;2104:1;2099;:6;2095:47;;2129:1;2122:8;;;;2095:47;2152:9;2168:1;2164;:5;;;;:::i;:::-;2152:17;;2197:1;2192;2188;:5;;;;:::i;:::-;:10;2180:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2254:1;2247:8;;;2017:246;;;;;:::o;2271:132::-;2329:7;2356:39;2360:1;2363;2356:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2349:46;;2271:132;;;;:::o;1675:136::-;1733:7;1760:43;1764:1;1767;1760:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1753:50;;1675:136;;;;:::o;14200:522::-;14266:21;14304:1;14290:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14266:40;;14335:4;14317;14322:1;14317:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14361:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14351:4;14356:1;14351:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;14394:62;14411:4;14426:15;;;;;;;;;;;14444:11;14394:8;:62::i;:::-;14467:15;;;;;;;;;;;:66;;;14548:11;14574:1;14590:4;14617;14637:15;14467:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14679:35;14696:11;14709:4;14679:35;;;;;;;:::i;:::-;;;;;;;;14255:467;14200:522;:::o;14730:523::-;14878:62;14895:4;14910:15;;;;;;;;;;;14928:11;14878:8;:62::i;:::-;14983:15;;;;;;;;;;;:31;;;15022:9;15055:4;15075:11;15101:1;15144;15187:17;;;;;;;;;;;15219:15;14983:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14730:523;;:::o;2411:189::-;2497:7;2529:1;2525;:5;2532:12;2517:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2556:9;2572:1;2568;:5;;;;:::i;:::-;2556:17;;2591:1;2584:8;;;2411:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:::-;4500:6;4508;4516;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;4423:619;;;;;:::o;5048:86::-;5083:7;5123:4;5116:5;5112:16;5101:27;;5048:86;;;:::o;5140:112::-;5223:22;5239:5;5223:22;:::i;:::-;5218:3;5211:35;5140:112;;:::o;5258:214::-;5347:4;5385:2;5374:9;5370:18;5362:26;;5398:67;5462:1;5451:9;5447:17;5438:6;5398:67;:::i;:::-;5258:214;;;;:::o;5478:118::-;5565:24;5583:5;5565:24;:::i;:::-;5560:3;5553:37;5478:118;;:::o;5602:222::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:71;5814:1;5803:9;5799:17;5790:6;5746:71;:::i;:::-;5602:222;;;;:::o;5830:329::-;5889:6;5938:2;5926:9;5917:7;5913:23;5909:32;5906:119;;;5944:79;;:::i;:::-;5906:119;6064:1;6089:53;6134:7;6125:6;6114:9;6110:22;6089:53;:::i;:::-;6079:63;;6035:117;5830:329;;;;:::o;6165:::-;6224:6;6273:2;6261:9;6252:7;6248:23;6244:32;6241:119;;;6279:79;;:::i;:::-;6241:119;6399:1;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6370:117;6165:329;;;;:::o;6500:474::-;6568:6;6576;6625:2;6613:9;6604:7;6600:23;6596:32;6593:119;;;6631:79;;:::i;:::-;6593:119;6751:1;6776:53;6821:7;6812:6;6801:9;6797:22;6776:53;:::i;:::-;6766:63;;6722:117;6878:2;6904:53;6949:7;6940:6;6929:9;6925:22;6904:53;:::i;:::-;6894:63;;6849:118;6500:474;;;;;:::o;6980:180::-;7028:77;7025:1;7018:88;7125:4;7122:1;7115:15;7149:4;7146:1;7139:15;7166:102;7208:8;7255:5;7252:1;7248:13;7227:34;;7166:102;;;:::o;7274:848::-;7335:5;7342:4;7366:6;7357:15;;7390:5;7381:14;;7404:712;7425:1;7415:8;7412:15;7404:712;;;7520:4;7515:3;7511:14;7505:4;7502:24;7499:50;;;7529:18;;:::i;:::-;7499:50;7579:1;7569:8;7565:16;7562:451;;;7994:4;7987:5;7983:16;7974:25;;7562:451;8044:4;8038;8034:15;8026:23;;8074:32;8097:8;8074:32;:::i;:::-;8062:44;;7404:712;;;7274:848;;;;;;;:::o;8128:1073::-;8182:5;8373:8;8363:40;;8394:1;8385:10;;8396:5;;8363:40;8422:4;8412:36;;8439:1;8430:10;;8441:5;;8412:36;8508:4;8556:1;8551:27;;;;8592:1;8587:191;;;;8501:277;;8551:27;8569:1;8560:10;;8571:5;;;8587:191;8632:3;8622:8;8619:17;8616:43;;;8639:18;;:::i;:::-;8616:43;8688:8;8685:1;8681:16;8672:25;;8723:3;8716:5;8713:14;8710:40;;;8730:18;;:::i;:::-;8710:40;8763:5;;;8501:277;;8887:2;8877:8;8874:16;8868:3;8862:4;8859:13;8855:36;8837:2;8827:8;8824:16;8819:2;8813:4;8810:12;8806:35;8790:111;8787:246;;;8943:8;8937:4;8933:19;8924:28;;8978:3;8971:5;8968:14;8965:40;;;8985:18;;:::i;:::-;8965:40;9018:5;;8787:246;9058:42;9096:3;9086:8;9080:4;9077:1;9058:42;:::i;:::-;9043:57;;;;9132:4;9127:3;9123:14;9116:5;9113:25;9110:51;;;9141:18;;:::i;:::-;9110:51;9190:4;9183:5;9179:16;9170:25;;8128:1073;;;;;;:::o;9207:281::-;9265:5;9289:23;9307:4;9289:23;:::i;:::-;9281:31;;9333:25;9349:8;9333:25;:::i;:::-;9321:37;;9377:104;9414:66;9404:8;9398:4;9377:104;:::i;:::-;9368:113;;9207:281;;;;:::o;9494:410::-;9534:7;9557:20;9575:1;9557:20;:::i;:::-;9552:25;;9591:20;9609:1;9591:20;:::i;:::-;9586:25;;9646:1;9643;9639:9;9668:30;9686:11;9668:30;:::i;:::-;9657:41;;9847:1;9838:7;9834:15;9831:1;9828:22;9808:1;9801:9;9781:83;9758:139;;9877:18;;:::i;:::-;9758:139;9542:362;9494:410;;;;:::o;9910:182::-;10050:34;10046:1;10038:6;10034:14;10027:58;9910:182;:::o;10098:366::-;10240:3;10261:67;10325:2;10320:3;10261:67;:::i;:::-;10254:74;;10337:93;10426:3;10337:93;:::i;:::-;10455:2;10450:3;10446:12;10439:19;;10098:366;;;:::o;10470:419::-;10636:4;10674:2;10663:9;10659:18;10651:26;;10723:9;10717:4;10713:20;10709:1;10698:9;10694:17;10687:47;10751:131;10877:4;10751:131;:::i;:::-;10743:139;;10470:419;;;:::o;10895:191::-;10935:3;10954:20;10972:1;10954:20;:::i;:::-;10949:25;;10988:20;11006:1;10988:20;:::i;:::-;10983:25;;11031:1;11028;11024:9;11017:16;;11052:3;11049:1;11046:10;11043:36;;;11059:18;;:::i;:::-;11043:36;10895:191;;;;:::o;11092:332::-;11213:4;11251:2;11240:9;11236:18;11228:26;;11264:71;11332:1;11321:9;11317:17;11308:6;11264:71;:::i;:::-;11345:72;11413:2;11402:9;11398:18;11389:6;11345:72;:::i;:::-;11092:332;;;;;:::o;11430:98::-;11481:6;11515:5;11509:12;11499:22;;11430:98;;;:::o;11534:147::-;11635:11;11672:3;11657:18;;11534:147;;;;:::o;11687:386::-;11791:3;11819:38;11851:5;11819:38;:::i;:::-;11873:88;11954:6;11949:3;11873:88;:::i;:::-;11866:95;;11970:65;12028:6;12023:3;12016:4;12009:5;12005:16;11970:65;:::i;:::-;12060:6;12055:3;12051:16;12044:23;;11795:278;11687:386;;;;:::o;12079:271::-;12209:3;12231:93;12320:3;12311:6;12231:93;:::i;:::-;12224:100;;12341:3;12334:10;;12079:271;;;;:::o;12356:170::-;12496:22;12492:1;12484:6;12480:14;12473:46;12356:170;:::o;12532:366::-;12674:3;12695:67;12759:2;12754:3;12695:67;:::i;:::-;12688:74;;12771:93;12860:3;12771:93;:::i;:::-;12889:2;12884:3;12880:12;12873:19;;12532:366;;;:::o;12904:419::-;13070:4;13108:2;13097:9;13093:18;13085:26;;13157:9;13151:4;13147:20;13143:1;13132:9;13128:17;13121:47;13185:131;13311:4;13185:131;:::i;:::-;13177:139;;12904:419;;;:::o;13329:223::-;13469:34;13465:1;13457:6;13453:14;13446:58;13538:6;13533:2;13525:6;13521:15;13514:31;13329:223;:::o;13558:366::-;13700:3;13721:67;13785:2;13780:3;13721:67;:::i;:::-;13714:74;;13797:93;13886:3;13797:93;:::i;:::-;13915:2;13910:3;13906:12;13899:19;;13558:366;;;:::o;13930:419::-;14096:4;14134:2;14123:9;14119:18;14111:26;;14183:9;14177:4;14173:20;14169:1;14158:9;14154:17;14147:47;14211:131;14337:4;14211:131;:::i;:::-;14203:139;;13930:419;;;:::o;14355:221::-;14495:34;14491:1;14483:6;14479:14;14472:58;14564:4;14559:2;14551:6;14547:15;14540:29;14355:221;:::o;14582:366::-;14724:3;14745:67;14809:2;14804:3;14745:67;:::i;:::-;14738:74;;14821:93;14910:3;14821:93;:::i;:::-;14939:2;14934:3;14930:12;14923:19;;14582:366;;;:::o;14954:419::-;15120:4;15158:2;15147:9;15143:18;15135:26;;15207:9;15201:4;15197:20;15193:1;15182:9;15178:17;15171:47;15235:131;15361:4;15235:131;:::i;:::-;15227:139;;14954:419;;;:::o;15379:224::-;15519:34;15515:1;15507:6;15503:14;15496:58;15588:7;15583:2;15575:6;15571:15;15564:32;15379:224;:::o;15609:366::-;15751:3;15772:67;15836:2;15831:3;15772:67;:::i;:::-;15765:74;;15848:93;15937:3;15848:93;:::i;:::-;15966:2;15961:3;15957:12;15950:19;;15609:366;;;:::o;15981:419::-;16147:4;16185:2;16174:9;16170:18;16162:26;;16234:9;16228:4;16224:20;16220:1;16209:9;16205:17;16198:47;16262:131;16388:4;16262:131;:::i;:::-;16254:139;;15981:419;;;:::o;16406:166::-;16546:18;16542:1;16534:6;16530:14;16523:42;16406:166;:::o;16578:366::-;16720:3;16741:67;16805:2;16800:3;16741:67;:::i;:::-;16734:74;;16817:93;16906:3;16817:93;:::i;:::-;16935:2;16930:3;16926:12;16919:19;;16578:366;;;:::o;16950:419::-;17116:4;17154:2;17143:9;17139:18;17131:26;;17203:9;17197:4;17193:20;17189:1;17178:9;17174:17;17167:47;17231:131;17357:4;17231:131;:::i;:::-;17223:139;;16950:419;;;:::o;17375:173::-;17515:25;17511:1;17503:6;17499:14;17492:49;17375:173;:::o;17554:366::-;17696:3;17717:67;17781:2;17776:3;17717:67;:::i;:::-;17710:74;;17793:93;17882:3;17793:93;:::i;:::-;17911:2;17906:3;17902:12;17895:19;;17554:366;;;:::o;17926:419::-;18092:4;18130:2;18119:9;18115:18;18107:26;;18179:9;18173:4;18169:20;18165:1;18154:9;18150:17;18143:47;18207:131;18333:4;18207:131;:::i;:::-;18199:139;;17926:419;;;:::o;18351:194::-;18391:4;18411:20;18429:1;18411:20;:::i;:::-;18406:25;;18445:20;18463:1;18445:20;:::i;:::-;18440:25;;18489:1;18486;18482:9;18474:17;;18513:1;18507:4;18504:11;18501:37;;;18518:18;;:::i;:::-;18501:37;18351:194;;;;:::o;18551:225::-;18691:34;18687:1;18679:6;18675:14;18668:58;18760:8;18755:2;18747:6;18743:15;18736:33;18551:225;:::o;18782:366::-;18924:3;18945:67;19009:2;19004:3;18945:67;:::i;:::-;18938:74;;19021:93;19110:3;19021:93;:::i;:::-;19139:2;19134:3;19130:12;19123:19;;18782:366;;;:::o;19154:419::-;19320:4;19358:2;19347:9;19343:18;19335:26;;19407:9;19401:4;19397:20;19393:1;19382:9;19378:17;19371:47;19435:131;19561:4;19435:131;:::i;:::-;19427:139;;19154:419;;;:::o;19579:180::-;19627:77;19624:1;19617:88;19724:4;19721:1;19714:15;19748:4;19745:1;19738:15;19765:185;19805:1;19822:20;19840:1;19822:20;:::i;:::-;19817:25;;19856:20;19874:1;19856:20;:::i;:::-;19851:25;;19895:1;19885:35;;19900:18;;:::i;:::-;19885:35;19942:1;19939;19935:9;19930:14;;19765:185;;;;:::o;19956:177::-;20096:29;20092:1;20084:6;20080:14;20073:53;19956:177;:::o;20139:366::-;20281:3;20302:67;20366:2;20361:3;20302:67;:::i;:::-;20295:74;;20378:93;20467:3;20378:93;:::i;:::-;20496:2;20491:3;20487:12;20480:19;;20139:366;;;:::o;20511:419::-;20677:4;20715:2;20704:9;20700:18;20692:26;;20764:9;20758:4;20754:20;20750:1;20739:9;20735:17;20728:47;20792:131;20918:4;20792:131;:::i;:::-;20784:139;;20511:419;;;:::o;20936:220::-;21076:34;21072:1;21064:6;21060:14;21053:58;21145:3;21140:2;21132:6;21128:15;21121:28;20936:220;:::o;21162:366::-;21304:3;21325:67;21389:2;21384:3;21325:67;:::i;:::-;21318:74;;21401:93;21490:3;21401:93;:::i;:::-;21519:2;21514:3;21510:12;21503:19;;21162:366;;;:::o;21534:419::-;21700:4;21738:2;21727:9;21723:18;21715:26;;21787:9;21781:4;21777:20;21773:1;21762:9;21758:17;21751:47;21815:131;21941:4;21815:131;:::i;:::-;21807:139;;21534:419;;;:::o;21959:180::-;22007:77;22004:1;21997:88;22104:4;22101:1;22094:15;22128:4;22125:1;22118:15;22145:180;22193:77;22190:1;22183:88;22290:4;22287:1;22280:15;22314:4;22311:1;22304:15;22331:143;22388:5;22419:6;22413:13;22404:22;;22435:33;22462:5;22435:33;:::i;:::-;22331:143;;;;:::o;22480:351::-;22550:6;22599:2;22587:9;22578:7;22574:23;22570:32;22567:119;;;22605:79;;:::i;:::-;22567:119;22725:1;22750:64;22806:7;22797:6;22786:9;22782:22;22750:64;:::i;:::-;22740:74;;22696:128;22480:351;;;;:::o;22837:85::-;22882:7;22911:5;22900:16;;22837:85;;;:::o;22928:60::-;22956:3;22977:5;22970:12;;22928:60;;;:::o;22994:158::-;23052:9;23085:61;23103:42;23112:32;23138:5;23112:32;:::i;:::-;23103:42;:::i;:::-;23085:61;:::i;:::-;23072:74;;22994:158;;;:::o;23158:147::-;23253:45;23292:5;23253:45;:::i;:::-;23248:3;23241:58;23158:147;;:::o;23311:114::-;23378:6;23412:5;23406:12;23396:22;;23311:114;;;:::o;23431:184::-;23530:11;23564:6;23559:3;23552:19;23604:4;23599:3;23595:14;23580:29;;23431:184;;;;:::o;23621:132::-;23688:4;23711:3;23703:11;;23741:4;23736:3;23732:14;23724:22;;23621:132;;;:::o;23759:108::-;23836:24;23854:5;23836:24;:::i;:::-;23831:3;23824:37;23759:108;;:::o;23873:179::-;23942:10;23963:46;24005:3;23997:6;23963:46;:::i;:::-;24041:4;24036:3;24032:14;24018:28;;23873:179;;;;:::o;24058:113::-;24128:4;24160;24155:3;24151:14;24143:22;;24058:113;;;:::o;24207:732::-;24326:3;24355:54;24403:5;24355:54;:::i;:::-;24425:86;24504:6;24499:3;24425:86;:::i;:::-;24418:93;;24535:56;24585:5;24535:56;:::i;:::-;24614:7;24645:1;24630:284;24655:6;24652:1;24649:13;24630:284;;;24731:6;24725:13;24758:63;24817:3;24802:13;24758:63;:::i;:::-;24751:70;;24844:60;24897:6;24844:60;:::i;:::-;24834:70;;24690:224;24677:1;24674;24670:9;24665:14;;24630:284;;;24634:14;24930:3;24923:10;;24331:608;;;24207:732;;;;:::o;24945:831::-;25208:4;25246:3;25235:9;25231:19;25223:27;;25260:71;25328:1;25317:9;25313:17;25304:6;25260:71;:::i;:::-;25341:80;25417:2;25406:9;25402:18;25393:6;25341:80;:::i;:::-;25468:9;25462:4;25458:20;25453:2;25442:9;25438:18;25431:48;25496:108;25599:4;25590:6;25496:108;:::i;:::-;25488:116;;25614:72;25682:2;25671:9;25667:18;25658:6;25614:72;:::i;:::-;25696:73;25764:3;25753:9;25749:19;25740:6;25696:73;:::i;:::-;24945:831;;;;;;;;:::o;25782:483::-;25953:4;25991:2;25980:9;25976:18;25968:26;;26004:71;26072:1;26061:9;26057:17;26048:6;26004:71;:::i;:::-;26122:9;26116:4;26112:20;26107:2;26096:9;26092:18;26085:48;26150:108;26253:4;26244:6;26150:108;:::i;:::-;26142:116;;25782:483;;;;;:::o;26271:807::-;26520:4;26558:3;26547:9;26543:19;26535:27;;26572:71;26640:1;26629:9;26625:17;26616:6;26572:71;:::i;:::-;26653:72;26721:2;26710:9;26706:18;26697:6;26653:72;:::i;:::-;26735:80;26811:2;26800:9;26796:18;26787:6;26735:80;:::i;:::-;26825;26901:2;26890:9;26886:18;26877:6;26825:80;:::i;:::-;26915:73;26983:3;26972:9;26968:19;26959:6;26915:73;:::i;:::-;26998;27066:3;27055:9;27051:19;27042:6;26998:73;:::i;:::-;26271:807;;;;;;;;;:::o;27084:143::-;27141:5;27172:6;27166:13;27157:22;;27188:33;27215:5;27188:33;:::i;:::-;27084:143;;;;:::o;27233:663::-;27321:6;27329;27337;27386:2;27374:9;27365:7;27361:23;27357:32;27354:119;;;27392:79;;:::i;:::-;27354:119;27512:1;27537:64;27593:7;27584:6;27573:9;27569:22;27537:64;:::i;:::-;27527:74;;27483:128;27650:2;27676:64;27732:7;27723:6;27712:9;27708:22;27676:64;:::i;:::-;27666:74;;27621:129;27789:2;27815:64;27871:7;27862:6;27851:9;27847:22;27815:64;:::i;:::-;27805:74;;27760:129;27233:663;;;;;:::o
Swarm Source
ipfs://eaf70d2a1094482a8c9258591dc9211e6246d5089416f9f97bbbac5602e02513
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.