ERC-20
Overview
Max Total Supply
100,000,000 GAME
Holders
121
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000010737419 GAMEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GamePools
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-10 */ /** *Submitted for verification at Etherscan.io on 2022-12-10 */ // SPDX-License-Identifier: Unlicensed // https://t.me/gamepools // https://www.gamepools.org/ pragma solidity ^0.8.4; 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 ); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract GamePools is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "GamePools"; string private constant _symbol = "GAME"; uint8 private constant _decimals = 18; mapping (address => uint256) _balances; mapping(address => uint256) _lastTX; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 _totalSupply = 100000000 * 10**18; //Buy Fee uint256 private _taxFeeOnBuy = 8; //Sell Fee uint256 private _taxFeeOnSell = 12; //Original Fee uint256 private _taxFee = _taxFeeOnSell; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; address payable private _marketingAddress = payable(0xd2f676EeD9421eE48869D26A4B3a1C8d04820cB1); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private swapEnabled = true; bool private transferDelay = true; uint256 public _maxTxAmount = 1500000 * 10**18; //1.5 uint256 public _maxWalletSize = 3000000 * 10**18; //3 uint256 public _swapTokensAtAmount = 100000 * 10**18; //0.1 event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _balances[_msgSender()] = _totalSupply; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_marketingAddress] = true; _isExcludedFromFee[_marketingAddress] = 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 view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[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 _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (!_isExcludedFromFee[to] && !_isExcludedFromFee[from]) { require(tradingOpen, "TOKEN: Trading not yet started"); require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { if(from == uniswapV2Pair && transferDelay){ require(_lastTX[tx.origin] + 3 minutes < block.timestamp && _lastTX[to] + 3 minutes < block.timestamp, "TOKEN: 3 minutes cooldown between buys"); } require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _swapTokensAtAmount) { contractTokenBalance = _swapTokensAtAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) { swapTokensForEth(contractTokenBalance); // Reserve of 15% of tokens for liquidity uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0 ether) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _taxFee = _taxFeeOnSell; } } _lastTX[tx.origin] = block.timestamp; _lastTX[to] = block.timestamp; _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { uint256 ethAmt = tokenAmount.mul(85).div(100); uint256 liqAmt = tokenAmount - ethAmt; uint256 balanceBefore = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( ethAmt, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); addLiquidity(liqAmt, amountETH.mul(15).div(100)); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } 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 address(0), block.timestamp ); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) {_transferNoTax(sender,recipient, amount);} else {_transferStandard(sender, recipient, amount);} } function airdrop(address[] calldata recipients, uint256[] calldata amount) public onlyOwner{ for (uint256 i = 0; i < recipients.length; i++) { _transferNoTax(msg.sender,recipients[i], amount[i]); } } function _transferStandard( address sender, address recipient, uint256 amount ) private { uint256 amountReceived = takeFees(sender, amount); _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); } function _transferNoTax(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function takeFees(address sender,uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(_taxFee).div(100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } receive() external payable {} function transferOwnership(address newOwner) public override onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _isExcludedFromFee[owner()] = false; _transferOwnership(newOwner); _isExcludedFromFee[owner()] = true; } function setFees(uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function setIsFeeExempt(address holder, bool exempt) public onlyOwner { _isExcludedFromFee[holder] = exempt; } function toggleTransferDelay() public onlyOwner { transferDelay = !transferDelay; } }
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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdrop","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526a52b7d2dcc80cd2e40000006005556008600655600c60075560075460085560085460095573d2f676eed9421ee48869d26a4b3a1c8d04820cb1600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60146101000a81548160ff0219169083151502179055506000600d60156101000a81548160ff0219169083151502179055506001600d60166101000a81548160ff0219169083151502179055506001600d60176101000a81548160ff0219169083151502179055506a013da329b6336471800000600e556a027b46536c66c8e3000000600f5569152d02c7e14af68000006010553480156200012357600080fd5b506200014462000138620005cb60201b60201c565b620005d360201b60201c565b600554600160006200015b620005cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026591906200072a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f391906200072a565b6040518363ffffffff1660e01b8152600401620003129291906200076d565b6020604051808303816000875af115801562000332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035891906200072a565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000620003ae6200069760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200055b620005cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620005bc9190620007b5565b60405180910390a350620007d2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006f282620006c5565b9050919050565b6200070481620006e5565b81146200071057600080fd5b50565b6000815190506200072481620006f9565b92915050565b600060208284031215620007435762000742620006c0565b5b6000620007538482850162000713565b91505092915050565b6200076781620006e5565b82525050565b60006040820190506200078460008301856200075c565b6200079360208301846200075c565b9392505050565b6000819050919050565b620007af816200079a565b82525050565b6000602082019050620007cc6000830184620007a4565b92915050565b613f8580620007e26000396000f3fe6080604052600436106101d05760003560e01c8063715018a6116100f757806395d89b4111610095578063c3c8cd8011610064578063c3c8cd801461065a578063dd62ed3e14610671578063ea1644d5146106ae578063f2fde38b146106d7576101d7565b806395d89b411461058c57806398a5c315146105b7578063a9059cbb146105e0578063bfd792841461061d576101d7565b80638da5cb5b116100d15780638da5cb5b146104f65780638eb59a5f146105215780638f70ccf7146105385780638f9a55c014610561576101d7565b8063715018a61461048b57806374010ece146104a25780637d1db4a5146104cb576101d7565b80632fd689e31161016f578063672434821161013e57806367243482146103d35780636b999053146103fc5780636d8aa8f81461042557806370a082311461044e576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f578063658d4b7f146103aa576101d7565b80630b78f9c0116101ab5780630b78f9c01461026d5780631694505e1461029657806318160ddd146102c157806323b872dd146102ec576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612e22565b610700565b005b34801561021157600080fd5b5061021a610811565b6040516102279190612eea565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f42565b61084e565b6040516102649190612f9d565b60405180910390f35b34801561027957600080fd5b50610294600480360381019061028f9190612fb8565b61086c565b005b3480156102a257600080fd5b506102ab6108fa565b6040516102b89190613057565b60405180910390f35b3480156102cd57600080fd5b506102d6610920565b6040516102e39190613081565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e919061309c565b61092a565b6040516103209190612f9d565b60405180910390f35b34801561033557600080fd5b5061033e610a03565b60405161034b9190613081565b60405180910390f35b34801561036057600080fd5b50610369610a09565b604051610376919061310b565b60405180910390f35b34801561038b57600080fd5b50610394610a12565b6040516103a19190613135565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061317c565b610a38565b005b3480156103df57600080fd5b506103fa60048036038101906103f5919061326d565b610b0f565b005b34801561040857600080fd5b50610423600480360381019061041e91906132ee565b610bff565b005b34801561043157600080fd5b5061044c6004803603810190610447919061331b565b610cd6565b005b34801561045a57600080fd5b50610475600480360381019061047091906132ee565b610d6f565b6040516104829190613081565b60405180910390f35b34801561049757600080fd5b506104a0610db8565b005b3480156104ae57600080fd5b506104c960048036038101906104c49190613348565b610e40565b005b3480156104d757600080fd5b506104e0610ec6565b6040516104ed9190613081565b60405180910390f35b34801561050257600080fd5b5061050b610ecc565b6040516105189190613135565b60405180910390f35b34801561052d57600080fd5b50610536610ef5565b005b34801561054457600080fd5b5061055f600480360381019061055a919061331b565b610f9d565b005b34801561056d57600080fd5b50610576611036565b6040516105839190613081565b60405180910390f35b34801561059857600080fd5b506105a161103c565b6040516105ae9190612eea565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190613348565b611079565b005b3480156105ec57600080fd5b5061060760048036038101906106029190612f42565b6110ff565b6040516106149190612f9d565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f91906132ee565b61111d565b6040516106519190612f9d565b60405180910390f35b34801561066657600080fd5b5061066f61113d565b005b34801561067d57600080fd5b5061069860048036038101906106939190613375565b6111d2565b6040516106a59190613081565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190613348565b611259565b005b3480156106e357600080fd5b506106fe60048036038101906106f991906132ee565b6112df565b005b610708611494565b73ffffffffffffffffffffffffffffffffffffffff16610726610ecc565b73ffffffffffffffffffffffffffffffffffffffff161461077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077390613401565b60405180910390fd5b60005b815181101561080d576001600a60008484815181106107a1576107a0613421565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108059061347f565b91505061077f565b5050565b60606040518060400160405280600981526020017f47616d65506f6f6c730000000000000000000000000000000000000000000000815250905090565b600061086261085b611494565b848461149c565b6001905092915050565b610874611494565b73ffffffffffffffffffffffffffffffffffffffff16610892610ecc565b73ffffffffffffffffffffffffffffffffffffffff16146108e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108df90613401565b60405180910390fd5b81600681905550806007819055505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6000610937848484611665565b6109f884610943611494565b6109f385604051806060016040528060288152602001613f2860289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109a9611494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99092919063ffffffff16565b61149c565b600190509392505050565b60105481565b60006012905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a40611494565b73ffffffffffffffffffffffffffffffffffffffff16610a5e610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab90613401565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610b17611494565b73ffffffffffffffffffffffffffffffffffffffff16610b35610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290613401565b60405180910390fd5b60005b84849050811015610bf857610be433868684818110610bb057610baf613421565b5b9050602002016020810190610bc591906132ee565b858585818110610bd857610bd7613421565b5b9050602002013561205d565b508080610bf09061347f565b915050610b8e565b5050505050565b610c07611494565b73ffffffffffffffffffffffffffffffffffffffff16610c25610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290613401565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cde611494565b73ffffffffffffffffffffffffffffffffffffffff16610cfc610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613401565b60405180910390fd5b80600d60166101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc0611494565b73ffffffffffffffffffffffffffffffffffffffff16610dde610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b90613401565b60405180910390fd5b610e3e6000612230565b565b610e48611494565b73ffffffffffffffffffffffffffffffffffffffff16610e66610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390613401565b60405180910390fd5b80600e8190555050565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610efd611494565b73ffffffffffffffffffffffffffffffffffffffff16610f1b610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613401565b60405180910390fd5b600d60179054906101000a900460ff1615600d60176101000a81548160ff021916908315150217905550565b610fa5611494565b73ffffffffffffffffffffffffffffffffffffffff16610fc3610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090613401565b60405180910390fd5b80600d60146101000a81548160ff02191690831515021790555050565b600f5481565b60606040518060400160405280600481526020017f47414d4500000000000000000000000000000000000000000000000000000000815250905090565b611081611494565b73ffffffffffffffffffffffffffffffffffffffff1661109f610ecc565b73ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90613401565b60405180910390fd5b8060108190555050565b600061111361110c611494565b8484611665565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b611145611494565b73ffffffffffffffffffffffffffffffffffffffff16611163610ecc565b73ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090613401565b60405180910390fd5b60006111c430610d6f565b90506111cf816122f4565b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611261611494565b73ffffffffffffffffffffffffffffffffffffffff1661127f610ecc565b73ffffffffffffffffffffffffffffffffffffffff16146112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90613401565b60405180910390fd5b80600f8190555050565b6112e7611494565b73ffffffffffffffffffffffffffffffffffffffff16611305610ecc565b73ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135290613401565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613539565b60405180910390fd5b6000600460006113d8610ecc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061143281612230565b600160046000611440610ecc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361150b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611502906135cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361157a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115719061365d565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116589190613081565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb906136ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a90613781565b60405180910390fd5b60008111611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d90613813565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561182a5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c8257600d60149054906101000a900460ff1661187e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118759061387f565b60405180910390fd5b600e548111156118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906138eb565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119675750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d9061397d565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba557600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a645750600d60179054906101000a900460ff165b15611b4d574260b4600260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab6919061399d565b108015611b0d57504260b4600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0b919061399d565b105b611b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4390613a43565b60405180910390fd5b5b600f5481611b5a84610d6f565b611b64919061399d565b10611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90613ad5565b60405180910390fd5b5b6000611bb030610d6f565b9050600060105482101590506010548210611bcb5760105491505b808015611be55750600d60159054906101000a900460ff16155b8015611c3f5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c575750600d60169054906101000a900460ff165b15611c7f57611c65826122f4565b60004790506000811115611c7d57611c7c476125f8565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d295750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ddc5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ddb5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dea5760009050611f5f565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e955750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ea4576006546008819055505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f4f5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f5e576007546008819055505b5b42600260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ff384848484612664565b50505050565b6000838311158290612041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120389190612eea565b60405180910390fd5b50600083856120509190613af5565b9050809150509392505050565b60006120e8826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061217d82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268c90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161221d9190613081565b60405180910390a3600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600d60156101000a81548160ff0219169083151502179055506000612338606461232a6055856126ea90919063ffffffff16565b61276490919063ffffffff16565b9050600081836123489190613af5565b905060004790506000600267ffffffffffffffff81111561236c5761236b612c81565b5b60405190808252806020026020018201604052801561239a5781602001602082028036833780820191505090505b50905030816000815181106123b2576123b1613421565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d9190613b3e565b8160018151811061249157612490613421565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124f830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168761149c565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b815260040161255c959493929190613c64565b600060405180830381600087803b15801561257657600080fd5b505af115801561258a573d6000803e3d6000fd5b5050505060006125a383476127ae90919063ffffffff16565b90506125d5846125d060646125c2600f866126ea90919063ffffffff16565b61276490919063ffffffff16565b6127f8565b50505050506000600d60156101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612660573d6000803e3d6000fd5b5050565b8061267a5761267484848461205d565b50612686565b6126858484846128d7565b5b50505050565b600080828461269b919061399d565b9050838110156126e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d790613d0a565b60405180910390fd5b8091505092915050565b60008083036126fc576000905061275e565b6000828461270a9190613d2a565b90508284826127199190613d9b565b14612759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275090613e3e565b60405180910390fd5b809150505b92915050565b60006127a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ab1565b905092915050565b60006127f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ff9565b905092915050565b61282530600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461149c565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806000426040518863ffffffff1660e01b815260040161288d96959493929190613e5e565b60606040518083038185885af11580156128ab573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128d09190613ed4565b5050505050565b60006128e38483612b14565b905061296e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a0381600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268c90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612aa39190613081565b60405180910390a350505050565b60008083118290612af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aef9190612eea565b60405180910390fd5b5060008385612b079190613d9b565b9050809150509392505050565b600080612b3f6064612b31600854866126ea90919063ffffffff16565b61276490919063ffffffff16565b9050612b9381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c339190613081565b60405180910390a3612c4e81846127ae90919063ffffffff16565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cb982612c70565b810181811067ffffffffffffffff82111715612cd857612cd7612c81565b5b80604052505050565b6000612ceb612c57565b9050612cf78282612cb0565b919050565b600067ffffffffffffffff821115612d1757612d16612c81565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5882612d2d565b9050919050565b612d6881612d4d565b8114612d7357600080fd5b50565b600081359050612d8581612d5f565b92915050565b6000612d9e612d9984612cfc565b612ce1565b90508083825260208201905060208402830185811115612dc157612dc0612d28565b5b835b81811015612dea5780612dd68882612d76565b845260208401935050602081019050612dc3565b5050509392505050565b600082601f830112612e0957612e08612c6b565b5b8135612e19848260208601612d8b565b91505092915050565b600060208284031215612e3857612e37612c61565b5b600082013567ffffffffffffffff811115612e5657612e55612c66565b5b612e6284828501612df4565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ea5578082015181840152602081019050612e8a565b60008484015250505050565b6000612ebc82612e6b565b612ec68185612e76565b9350612ed6818560208601612e87565b612edf81612c70565b840191505092915050565b60006020820190508181036000830152612f048184612eb1565b905092915050565b6000819050919050565b612f1f81612f0c565b8114612f2a57600080fd5b50565b600081359050612f3c81612f16565b92915050565b60008060408385031215612f5957612f58612c61565b5b6000612f6785828601612d76565b9250506020612f7885828601612f2d565b9150509250929050565b60008115159050919050565b612f9781612f82565b82525050565b6000602082019050612fb26000830184612f8e565b92915050565b60008060408385031215612fcf57612fce612c61565b5b6000612fdd85828601612f2d565b9250506020612fee85828601612f2d565b9150509250929050565b6000819050919050565b600061301d61301861301384612d2d565b612ff8565b612d2d565b9050919050565b600061302f82613002565b9050919050565b600061304182613024565b9050919050565b61305181613036565b82525050565b600060208201905061306c6000830184613048565b92915050565b61307b81612f0c565b82525050565b60006020820190506130966000830184613072565b92915050565b6000806000606084860312156130b5576130b4612c61565b5b60006130c386828701612d76565b93505060206130d486828701612d76565b92505060406130e586828701612f2d565b9150509250925092565b600060ff82169050919050565b613105816130ef565b82525050565b600060208201905061312060008301846130fc565b92915050565b61312f81612d4d565b82525050565b600060208201905061314a6000830184613126565b92915050565b61315981612f82565b811461316457600080fd5b50565b60008135905061317681613150565b92915050565b6000806040838503121561319357613192612c61565b5b60006131a185828601612d76565b92505060206131b285828601613167565b9150509250929050565b600080fd5b60008083601f8401126131d7576131d6612c6b565b5b8235905067ffffffffffffffff8111156131f4576131f36131bc565b5b6020830191508360208202830111156132105761320f612d28565b5b9250929050565b60008083601f84011261322d5761322c612c6b565b5b8235905067ffffffffffffffff81111561324a576132496131bc565b5b60208301915083602082028301111561326657613265612d28565b5b9250929050565b6000806000806040858703121561328757613286612c61565b5b600085013567ffffffffffffffff8111156132a5576132a4612c66565b5b6132b1878288016131c1565b9450945050602085013567ffffffffffffffff8111156132d4576132d3612c66565b5b6132e087828801613217565b925092505092959194509250565b60006020828403121561330457613303612c61565b5b600061331284828501612d76565b91505092915050565b60006020828403121561333157613330612c61565b5b600061333f84828501613167565b91505092915050565b60006020828403121561335e5761335d612c61565b5b600061336c84828501612f2d565b91505092915050565b6000806040838503121561338c5761338b612c61565b5b600061339a85828601612d76565b92505060206133ab85828601612d76565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133eb602083612e76565b91506133f6826133b5565b602082019050919050565b6000602082019050818103600083015261341a816133de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061348a82612f0c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134bc576134bb613450565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613523602683612e76565b915061352e826134c7565b604082019050919050565b6000602082019050818103600083015261355281613516565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135b5602483612e76565b91506135c082613559565b604082019050919050565b600060208201905081810360008301526135e4816135a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613647602283612e76565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136d9602583612e76565b91506136e48261367d565b604082019050919050565b60006020820190508181036000830152613708816136cc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061376b602383612e76565b91506137768261370f565b604082019050919050565b6000602082019050818103600083015261379a8161375e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137fd602983612e76565b9150613808826137a1565b604082019050919050565b6000602082019050818103600083015261382c816137f0565b9050919050565b7f544f4b454e3a2054726164696e67206e6f742079657420737461727465640000600082015250565b6000613869601e83612e76565b915061387482613833565b602082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138d5601c83612e76565b91506138e08261389f565b602082019050919050565b60006020820190508181036000830152613904816138c8565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613967602383612e76565b91506139728261390b565b604082019050919050565b600060208201905081810360008301526139968161395a565b9050919050565b60006139a882612f0c565b91506139b383612f0c565b92508282019050808211156139cb576139ca613450565b5b92915050565b7f544f4b454e3a2033206d696e7574657320636f6f6c646f776e2062657477656560008201527f6e20627579730000000000000000000000000000000000000000000000000000602082015250565b6000613a2d602683612e76565b9150613a38826139d1565b604082019050919050565b60006020820190508181036000830152613a5c81613a20565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613abf602383612e76565b9150613aca82613a63565b604082019050919050565b60006020820190508181036000830152613aee81613ab2565b9050919050565b6000613b0082612f0c565b9150613b0b83612f0c565b9250828203905081811115613b2357613b22613450565b5b92915050565b600081519050613b3881612d5f565b92915050565b600060208284031215613b5457613b53612c61565b5b6000613b6284828501613b29565b91505092915050565b6000819050919050565b6000613b90613b8b613b8684613b6b565b612ff8565b612f0c565b9050919050565b613ba081613b75565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bdb81612d4d565b82525050565b6000613bed8383613bd2565b60208301905092915050565b6000602082019050919050565b6000613c1182613ba6565b613c1b8185613bb1565b9350613c2683613bc2565b8060005b83811015613c57578151613c3e8882613be1565b9750613c4983613bf9565b925050600181019050613c2a565b5085935050505092915050565b600060a082019050613c796000830188613072565b613c866020830187613b97565b8181036040830152613c988186613c06565b9050613ca76060830185613126565b613cb46080830184613072565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cf4601b83612e76565b9150613cff82613cbe565b602082019050919050565b60006020820190508181036000830152613d2381613ce7565b9050919050565b6000613d3582612f0c565b9150613d4083612f0c565b9250828202613d4e81612f0c565b91508282048414831517613d6557613d64613450565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613da682612f0c565b9150613db183612f0c565b925082613dc157613dc0613d6c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e28602183612e76565b9150613e3382613dcc565b604082019050919050565b60006020820190508181036000830152613e5781613e1b565b9050919050565b600060c082019050613e736000830189613126565b613e806020830188613072565b613e8d6040830187613b97565b613e9a6060830186613b97565b613ea76080830185613126565b613eb460a0830184613072565b979650505050505050565b600081519050613ece81612f16565b92915050565b600080600060608486031215613eed57613eec612c61565b5b6000613efb86828701613ebf565b9350506020613f0c86828701613ebf565b9250506040613f1d86828701613ebf565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122068ac18cbabcdf235b1c6db42c7fc729b1a167595180931de2818375e22bd845a64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101d05760003560e01c8063715018a6116100f757806395d89b4111610095578063c3c8cd8011610064578063c3c8cd801461065a578063dd62ed3e14610671578063ea1644d5146106ae578063f2fde38b146106d7576101d7565b806395d89b411461058c57806398a5c315146105b7578063a9059cbb146105e0578063bfd792841461061d576101d7565b80638da5cb5b116100d15780638da5cb5b146104f65780638eb59a5f146105215780638f70ccf7146105385780638f9a55c014610561576101d7565b8063715018a61461048b57806374010ece146104a25780637d1db4a5146104cb576101d7565b80632fd689e31161016f578063672434821161013e57806367243482146103d35780636b999053146103fc5780636d8aa8f81461042557806370a082311461044e576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f578063658d4b7f146103aa576101d7565b80630b78f9c0116101ab5780630b78f9c01461026d5780631694505e1461029657806318160ddd146102c157806323b872dd146102ec576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612e22565b610700565b005b34801561021157600080fd5b5061021a610811565b6040516102279190612eea565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f42565b61084e565b6040516102649190612f9d565b60405180910390f35b34801561027957600080fd5b50610294600480360381019061028f9190612fb8565b61086c565b005b3480156102a257600080fd5b506102ab6108fa565b6040516102b89190613057565b60405180910390f35b3480156102cd57600080fd5b506102d6610920565b6040516102e39190613081565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e919061309c565b61092a565b6040516103209190612f9d565b60405180910390f35b34801561033557600080fd5b5061033e610a03565b60405161034b9190613081565b60405180910390f35b34801561036057600080fd5b50610369610a09565b604051610376919061310b565b60405180910390f35b34801561038b57600080fd5b50610394610a12565b6040516103a19190613135565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061317c565b610a38565b005b3480156103df57600080fd5b506103fa60048036038101906103f5919061326d565b610b0f565b005b34801561040857600080fd5b50610423600480360381019061041e91906132ee565b610bff565b005b34801561043157600080fd5b5061044c6004803603810190610447919061331b565b610cd6565b005b34801561045a57600080fd5b50610475600480360381019061047091906132ee565b610d6f565b6040516104829190613081565b60405180910390f35b34801561049757600080fd5b506104a0610db8565b005b3480156104ae57600080fd5b506104c960048036038101906104c49190613348565b610e40565b005b3480156104d757600080fd5b506104e0610ec6565b6040516104ed9190613081565b60405180910390f35b34801561050257600080fd5b5061050b610ecc565b6040516105189190613135565b60405180910390f35b34801561052d57600080fd5b50610536610ef5565b005b34801561054457600080fd5b5061055f600480360381019061055a919061331b565b610f9d565b005b34801561056d57600080fd5b50610576611036565b6040516105839190613081565b60405180910390f35b34801561059857600080fd5b506105a161103c565b6040516105ae9190612eea565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190613348565b611079565b005b3480156105ec57600080fd5b5061060760048036038101906106029190612f42565b6110ff565b6040516106149190612f9d565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f91906132ee565b61111d565b6040516106519190612f9d565b60405180910390f35b34801561066657600080fd5b5061066f61113d565b005b34801561067d57600080fd5b5061069860048036038101906106939190613375565b6111d2565b6040516106a59190613081565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190613348565b611259565b005b3480156106e357600080fd5b506106fe60048036038101906106f991906132ee565b6112df565b005b610708611494565b73ffffffffffffffffffffffffffffffffffffffff16610726610ecc565b73ffffffffffffffffffffffffffffffffffffffff161461077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077390613401565b60405180910390fd5b60005b815181101561080d576001600a60008484815181106107a1576107a0613421565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108059061347f565b91505061077f565b5050565b60606040518060400160405280600981526020017f47616d65506f6f6c730000000000000000000000000000000000000000000000815250905090565b600061086261085b611494565b848461149c565b6001905092915050565b610874611494565b73ffffffffffffffffffffffffffffffffffffffff16610892610ecc565b73ffffffffffffffffffffffffffffffffffffffff16146108e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108df90613401565b60405180910390fd5b81600681905550806007819055505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6000610937848484611665565b6109f884610943611494565b6109f385604051806060016040528060288152602001613f2860289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109a9611494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99092919063ffffffff16565b61149c565b600190509392505050565b60105481565b60006012905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a40611494565b73ffffffffffffffffffffffffffffffffffffffff16610a5e610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab90613401565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610b17611494565b73ffffffffffffffffffffffffffffffffffffffff16610b35610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290613401565b60405180910390fd5b60005b84849050811015610bf857610be433868684818110610bb057610baf613421565b5b9050602002016020810190610bc591906132ee565b858585818110610bd857610bd7613421565b5b9050602002013561205d565b508080610bf09061347f565b915050610b8e565b5050505050565b610c07611494565b73ffffffffffffffffffffffffffffffffffffffff16610c25610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290613401565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cde611494565b73ffffffffffffffffffffffffffffffffffffffff16610cfc610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613401565b60405180910390fd5b80600d60166101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc0611494565b73ffffffffffffffffffffffffffffffffffffffff16610dde610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b90613401565b60405180910390fd5b610e3e6000612230565b565b610e48611494565b73ffffffffffffffffffffffffffffffffffffffff16610e66610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390613401565b60405180910390fd5b80600e8190555050565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610efd611494565b73ffffffffffffffffffffffffffffffffffffffff16610f1b610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613401565b60405180910390fd5b600d60179054906101000a900460ff1615600d60176101000a81548160ff021916908315150217905550565b610fa5611494565b73ffffffffffffffffffffffffffffffffffffffff16610fc3610ecc565b73ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090613401565b60405180910390fd5b80600d60146101000a81548160ff02191690831515021790555050565b600f5481565b60606040518060400160405280600481526020017f47414d4500000000000000000000000000000000000000000000000000000000815250905090565b611081611494565b73ffffffffffffffffffffffffffffffffffffffff1661109f610ecc565b73ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90613401565b60405180910390fd5b8060108190555050565b600061111361110c611494565b8484611665565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b611145611494565b73ffffffffffffffffffffffffffffffffffffffff16611163610ecc565b73ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090613401565b60405180910390fd5b60006111c430610d6f565b90506111cf816122f4565b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611261611494565b73ffffffffffffffffffffffffffffffffffffffff1661127f610ecc565b73ffffffffffffffffffffffffffffffffffffffff16146112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90613401565b60405180910390fd5b80600f8190555050565b6112e7611494565b73ffffffffffffffffffffffffffffffffffffffff16611305610ecc565b73ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135290613401565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613539565b60405180910390fd5b6000600460006113d8610ecc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061143281612230565b600160046000611440610ecc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361150b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611502906135cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361157a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115719061365d565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116589190613081565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb906136ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a90613781565b60405180910390fd5b60008111611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d90613813565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561182a5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c8257600d60149054906101000a900460ff1661187e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118759061387f565b60405180910390fd5b600e548111156118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906138eb565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119675750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d9061397d565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba557600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a645750600d60179054906101000a900460ff165b15611b4d574260b4600260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab6919061399d565b108015611b0d57504260b4600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0b919061399d565b105b611b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4390613a43565b60405180910390fd5b5b600f5481611b5a84610d6f565b611b64919061399d565b10611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90613ad5565b60405180910390fd5b5b6000611bb030610d6f565b9050600060105482101590506010548210611bcb5760105491505b808015611be55750600d60159054906101000a900460ff16155b8015611c3f5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c575750600d60169054906101000a900460ff165b15611c7f57611c65826122f4565b60004790506000811115611c7d57611c7c476125f8565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d295750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ddc5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ddb5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dea5760009050611f5f565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e955750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ea4576006546008819055505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f4f5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f5e576007546008819055505b5b42600260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ff384848484612664565b50505050565b6000838311158290612041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120389190612eea565b60405180910390fd5b50600083856120509190613af5565b9050809150509392505050565b60006120e8826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061217d82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268c90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161221d9190613081565b60405180910390a3600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600d60156101000a81548160ff0219169083151502179055506000612338606461232a6055856126ea90919063ffffffff16565b61276490919063ffffffff16565b9050600081836123489190613af5565b905060004790506000600267ffffffffffffffff81111561236c5761236b612c81565b5b60405190808252806020026020018201604052801561239a5781602001602082028036833780820191505090505b50905030816000815181106123b2576123b1613421565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d9190613b3e565b8160018151811061249157612490613421565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124f830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168761149c565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b815260040161255c959493929190613c64565b600060405180830381600087803b15801561257657600080fd5b505af115801561258a573d6000803e3d6000fd5b5050505060006125a383476127ae90919063ffffffff16565b90506125d5846125d060646125c2600f866126ea90919063ffffffff16565b61276490919063ffffffff16565b6127f8565b50505050506000600d60156101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612660573d6000803e3d6000fd5b5050565b8061267a5761267484848461205d565b50612686565b6126858484846128d7565b5b50505050565b600080828461269b919061399d565b9050838110156126e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d790613d0a565b60405180910390fd5b8091505092915050565b60008083036126fc576000905061275e565b6000828461270a9190613d2a565b90508284826127199190613d9b565b14612759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275090613e3e565b60405180910390fd5b809150505b92915050565b60006127a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ab1565b905092915050565b60006127f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ff9565b905092915050565b61282530600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461149c565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806000426040518863ffffffff1660e01b815260040161288d96959493929190613e5e565b60606040518083038185885af11580156128ab573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128d09190613ed4565b5050505050565b60006128e38483612b14565b905061296e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ff99092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a0381600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268c90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612aa39190613081565b60405180910390a350505050565b60008083118290612af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aef9190612eea565b60405180910390fd5b5060008385612b079190613d9b565b9050809150509392505050565b600080612b3f6064612b31600854866126ea90919063ffffffff16565b61276490919063ffffffff16565b9050612b9381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c339190613081565b60405180910390a3612c4e81846127ae90919063ffffffff16565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cb982612c70565b810181811067ffffffffffffffff82111715612cd857612cd7612c81565b5b80604052505050565b6000612ceb612c57565b9050612cf78282612cb0565b919050565b600067ffffffffffffffff821115612d1757612d16612c81565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5882612d2d565b9050919050565b612d6881612d4d565b8114612d7357600080fd5b50565b600081359050612d8581612d5f565b92915050565b6000612d9e612d9984612cfc565b612ce1565b90508083825260208201905060208402830185811115612dc157612dc0612d28565b5b835b81811015612dea5780612dd68882612d76565b845260208401935050602081019050612dc3565b5050509392505050565b600082601f830112612e0957612e08612c6b565b5b8135612e19848260208601612d8b565b91505092915050565b600060208284031215612e3857612e37612c61565b5b600082013567ffffffffffffffff811115612e5657612e55612c66565b5b612e6284828501612df4565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ea5578082015181840152602081019050612e8a565b60008484015250505050565b6000612ebc82612e6b565b612ec68185612e76565b9350612ed6818560208601612e87565b612edf81612c70565b840191505092915050565b60006020820190508181036000830152612f048184612eb1565b905092915050565b6000819050919050565b612f1f81612f0c565b8114612f2a57600080fd5b50565b600081359050612f3c81612f16565b92915050565b60008060408385031215612f5957612f58612c61565b5b6000612f6785828601612d76565b9250506020612f7885828601612f2d565b9150509250929050565b60008115159050919050565b612f9781612f82565b82525050565b6000602082019050612fb26000830184612f8e565b92915050565b60008060408385031215612fcf57612fce612c61565b5b6000612fdd85828601612f2d565b9250506020612fee85828601612f2d565b9150509250929050565b6000819050919050565b600061301d61301861301384612d2d565b612ff8565b612d2d565b9050919050565b600061302f82613002565b9050919050565b600061304182613024565b9050919050565b61305181613036565b82525050565b600060208201905061306c6000830184613048565b92915050565b61307b81612f0c565b82525050565b60006020820190506130966000830184613072565b92915050565b6000806000606084860312156130b5576130b4612c61565b5b60006130c386828701612d76565b93505060206130d486828701612d76565b92505060406130e586828701612f2d565b9150509250925092565b600060ff82169050919050565b613105816130ef565b82525050565b600060208201905061312060008301846130fc565b92915050565b61312f81612d4d565b82525050565b600060208201905061314a6000830184613126565b92915050565b61315981612f82565b811461316457600080fd5b50565b60008135905061317681613150565b92915050565b6000806040838503121561319357613192612c61565b5b60006131a185828601612d76565b92505060206131b285828601613167565b9150509250929050565b600080fd5b60008083601f8401126131d7576131d6612c6b565b5b8235905067ffffffffffffffff8111156131f4576131f36131bc565b5b6020830191508360208202830111156132105761320f612d28565b5b9250929050565b60008083601f84011261322d5761322c612c6b565b5b8235905067ffffffffffffffff81111561324a576132496131bc565b5b60208301915083602082028301111561326657613265612d28565b5b9250929050565b6000806000806040858703121561328757613286612c61565b5b600085013567ffffffffffffffff8111156132a5576132a4612c66565b5b6132b1878288016131c1565b9450945050602085013567ffffffffffffffff8111156132d4576132d3612c66565b5b6132e087828801613217565b925092505092959194509250565b60006020828403121561330457613303612c61565b5b600061331284828501612d76565b91505092915050565b60006020828403121561333157613330612c61565b5b600061333f84828501613167565b91505092915050565b60006020828403121561335e5761335d612c61565b5b600061336c84828501612f2d565b91505092915050565b6000806040838503121561338c5761338b612c61565b5b600061339a85828601612d76565b92505060206133ab85828601612d76565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133eb602083612e76565b91506133f6826133b5565b602082019050919050565b6000602082019050818103600083015261341a816133de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061348a82612f0c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134bc576134bb613450565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613523602683612e76565b915061352e826134c7565b604082019050919050565b6000602082019050818103600083015261355281613516565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135b5602483612e76565b91506135c082613559565b604082019050919050565b600060208201905081810360008301526135e4816135a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613647602283612e76565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136d9602583612e76565b91506136e48261367d565b604082019050919050565b60006020820190508181036000830152613708816136cc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061376b602383612e76565b91506137768261370f565b604082019050919050565b6000602082019050818103600083015261379a8161375e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137fd602983612e76565b9150613808826137a1565b604082019050919050565b6000602082019050818103600083015261382c816137f0565b9050919050565b7f544f4b454e3a2054726164696e67206e6f742079657420737461727465640000600082015250565b6000613869601e83612e76565b915061387482613833565b602082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138d5601c83612e76565b91506138e08261389f565b602082019050919050565b60006020820190508181036000830152613904816138c8565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613967602383612e76565b91506139728261390b565b604082019050919050565b600060208201905081810360008301526139968161395a565b9050919050565b60006139a882612f0c565b91506139b383612f0c565b92508282019050808211156139cb576139ca613450565b5b92915050565b7f544f4b454e3a2033206d696e7574657320636f6f6c646f776e2062657477656560008201527f6e20627579730000000000000000000000000000000000000000000000000000602082015250565b6000613a2d602683612e76565b9150613a38826139d1565b604082019050919050565b60006020820190508181036000830152613a5c81613a20565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613abf602383612e76565b9150613aca82613a63565b604082019050919050565b60006020820190508181036000830152613aee81613ab2565b9050919050565b6000613b0082612f0c565b9150613b0b83612f0c565b9250828203905081811115613b2357613b22613450565b5b92915050565b600081519050613b3881612d5f565b92915050565b600060208284031215613b5457613b53612c61565b5b6000613b6284828501613b29565b91505092915050565b6000819050919050565b6000613b90613b8b613b8684613b6b565b612ff8565b612f0c565b9050919050565b613ba081613b75565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bdb81612d4d565b82525050565b6000613bed8383613bd2565b60208301905092915050565b6000602082019050919050565b6000613c1182613ba6565b613c1b8185613bb1565b9350613c2683613bc2565b8060005b83811015613c57578151613c3e8882613be1565b9750613c4983613bf9565b925050600181019050613c2a565b5085935050505092915050565b600060a082019050613c796000830188613072565b613c866020830187613b97565b8181036040830152613c988186613c06565b9050613ca76060830185613126565b613cb46080830184613072565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cf4601b83612e76565b9150613cff82613cbe565b602082019050919050565b60006020820190508181036000830152613d2381613ce7565b9050919050565b6000613d3582612f0c565b9150613d4083612f0c565b9250828202613d4e81612f0c565b91508282048414831517613d6557613d64613450565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613da682612f0c565b9150613db183612f0c565b925082613dc157613dc0613d6c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e28602183612e76565b9150613e3382613dcc565b604082019050919050565b60006020820190508181036000830152613e5781613e1b565b9050919050565b600060c082019050613e736000830189613126565b613e806020830188613072565b613e8d6040830187613b97565b613e9a6060830186613b97565b613ea76080830185613126565b613eb460a0830184613072565b979650505050505050565b600081519050613ece81612f16565b92915050565b600080600060608486031215613eed57613eec612c61565b5b6000613efb86828701613ebf565b9350506020613f0c86828701613ebf565b9250506040613f1d86828701613ebf565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122068ac18cbabcdf235b1c6db42c7fc729b1a167595180931de2818375e22bd845a64736f6c63430008110033
Deployed Bytecode Sourcemap
4214:11313:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12395:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6333:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7245:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14617:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5099:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6610:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7446:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5455:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6519:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5147:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15293:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12958:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12572:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14937:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6718:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1582:103;;;;;;;;;;;;;:::i;:::-;;15050:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5337:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1349:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15427:97;;;;;;;;;;;;;:::i;:::-;;12124:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5396:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6424:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14786:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6846:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4948:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12233:154;;;;;;;;;;;;;:::i;:::-;;7053:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15170:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14312:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12395:169;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12471:9:::1;12466:91;12490:5;:12;12486:1;:16;12466:91;;;12541:4;12524;:14;12529:5;12535:1;12529:8;;;;;;;;:::i;:::-;;;;;;;;12524:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12504:3;;;;;:::i;:::-;;;;12466:91;;;;12395:169:::0;:::o;6333:83::-;6370:13;6403:5;;;;;;;;;;;;;;;;;6396:12;;6333:83;:::o;7245:193::-;7347:4;7369:39;7378:12;:10;:12::i;:::-;7392:7;7401:6;7369:8;:39::i;:::-;7426:4;7419:11;;7245:193;;;;:::o;14617:161::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14720:11:::1;14705:12;:26;;;;14758:12;14742:13;:28;;;;14617:161:::0;;:::o;5099:41::-;;;;;;;;;;;;;:::o;6610:100::-;6663:7;6690:12;;6683:19;;6610:100;:::o;7446:446::-;7578:4;7595:36;7605:6;7613:9;7624:6;7595:9;:36::i;:::-;7642:220;7665:6;7686:12;:10;:12::i;:::-;7713:138;7769:6;7713:138;;;;;;;;;;;;;;;;;:11;:19;7725:6;7713:19;;;;;;;;;;;;;;;:33;7733:12;:10;:12::i;:::-;7713:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7642:8;:220::i;:::-;7880:4;7873:11;;7446:446;;;;;:::o;5455:52::-;;;;:::o;6519:83::-;6560:5;4437:2;6578:16;;6519:83;:::o;5147:28::-;;;;;;;;;;;;;:::o;15293:124::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15403:6:::1;15374:18;:26;15393:6;15374:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15293:124:::0;;:::o;12958:234::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13064:9:::1;13059:126;13083:10;;:17;;13079:1;:21;13059:126;;;13122:51;13137:10;13148;;13159:1;13148:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13163:6;;13170:1;13163:9;;;;;;;:::i;:::-;;;;;;;;13122:14;:51::i;:::-;;13102:3;;;;;:::i;:::-;;;;13059:126;;;;12958:234:::0;;;;:::o;12572:92::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12651:5:::1;12636:4;:12;12641:6;12636:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12572:92:::0;:::o;14937:101::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15018:12:::1;15004:11;;:26;;;;;;;;;;;;;;;;;;14937:101:::0;:::o;6718:120::-;6784:7;6811:9;:18;6821:7;6811:18;;;;;;;;;;;;;;;;6804:25;;6718:120;;;:::o;1582:103::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1647:30:::1;1674:1;1647:18;:30::i;:::-;1582:103::o:0;15050:108::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15139:11:::1;15124:12;:26;;;;15050:108:::0;:::o;5337:46::-;;;;:::o;1349:87::-;1395:7;1422:6;;;;;;;;;;;1415:13;;1349:87;:::o;15427:97::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15503:13:::1;;;;;;;;;;;15502:14;15486:13;;:30;;;;;;;;;;;;;;;;;;15427:97::o:0;12124:101::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12205:12:::1;12191:11;;:26;;;;;;;;;;;;;;;;;;12124:101:::0;:::o;5396:48::-;;;;:::o;6424:87::-;6463:13;6496:7;;;;;;;;;;;;;;;;;6489:14;;6424:87;:::o;14786:139::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14899:18:::1;14877:19;:40;;;;14786:139:::0;:::o;6846:199::-;6951:4;6973:42;6983:12;:10;:12::i;:::-;6997:9;7008:6;6973:9;:42::i;:::-;7033:4;7026:11;;6846:199;;;;:::o;4948:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12233:154::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12285:23:::1;12311:24;12329:4;12311:9;:24::i;:::-;12285:50;;12346:33;12363:15;12346:16;:33::i;:::-;12274:113;12233:154::o:0;7053:184::-;7170:7;7202:11;:18;7214:5;7202:18;;;;;;;;;;;;;;;:27;7221:7;7202:27;;;;;;;;;;;;;;;;7195:34;;7053:184;;;;:::o;15170:115::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15264:13:::1;15247:14;:30;;;;15170:115:::0;:::o;14312:295::-;1500:12;:10;:12::i;:::-;1489:23;;:7;:5;:7::i;:::-;:23;;;1481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14422:1:::1;14402:22;;:8;:22;;::::0;14394:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14508:5;14478:18;:27;14497:7;:5;:7::i;:::-;14478:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;14524:28;14543:8;14524:18;:28::i;:::-;14593:4;14563:18;:27;14582:7;:5;:7::i;:::-;14563:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14312:295:::0;:::o;235:98::-;288:7;315:10;308:17;;235:98;:::o;7900:369::-;8044:1;8027:19;;:5;:19;;;8019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8125:1;8106:21;;:7;:21;;;8098:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8207:6;8177:11;:18;8189:5;8177:18;;;;;;;;;;;;;;;:27;8196:7;8177:27;;;;;;;;;;;;;;;:36;;;;8245:7;8229:32;;8238:5;8229:32;;;8254:6;8229:32;;;;;;:::i;:::-;;;;;;;;7900:369;;;:::o;8277:2440::-;8415:1;8399:18;;:4;:18;;;8391:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8492:1;8478:16;;:2;:16;;;8470:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8562:1;8553:6;:10;8545:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8627:18;:22;8646:2;8627:22;;;;;;;;;;;;;;;;;;;;;;;;;8626:23;:52;;;;;8654:18;:24;8673:4;8654:24;;;;;;;;;;;;;;;;;;;;;;;;;8653:25;8626:52;8622:1381;;;8696:11;;;;;;;;;;;8688:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8775:12;;8765:6;:22;;8757:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8844:4;:10;8849:4;8844:10;;;;;;;;;;;;;;;;;;;;;;;;;8843:11;:24;;;;;8859:4;:8;8864:2;8859:8;;;;;;;;;;;;;;;;;;;;;;;;;8858:9;8843:24;8835:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8933:13;;;;;;;;;;;8927:19;;:2;:19;;;8924:375;;8972:13;;;;;;;;;;;8964:21;;:4;:21;;;:38;;;;;8989:13;;;;;;;;;;;8964:38;8961:217;;;9061:15;9049:9;9028:7;:18;9036:9;9028:18;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;:48;:93;;;;;9106:15;9094:9;9080:7;:11;9088:2;9080:11;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;:41;9028:93;9020:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;8961:217;9229:14;;9220:6;9204:13;9214:2;9204:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9196:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;8924:375;9315:28;9346:24;9364:4;9346:9;:24::i;:::-;9315:55;;9385:12;9424:19;;9400:20;:43;;9385:58;;9487:19;;9463:20;:43;9460:138;;9563:19;;9540:42;;9460:138;9618:7;:18;;;;;9630:6;;;;;;;;;;;9629:7;9618:18;:43;;;;;9648:13;;;;;;;;;;;9640:21;;:4;:21;;;;9618:43;:58;;;;;9665:11;;;;;;;;;;;9618:58;9614:378;;;9697:38;9714:20;9697:16;:38::i;:::-;9796:26;9825:21;9796:50;;9890:7;9869:18;:28;9865:112;;;9922:35;9935:21;9922:12;:35::i;:::-;9865:112;9678:314;9614:378;8680:1323;;8622:1381;10015:12;10030:4;10015:19;;10079:18;:24;10098:4;10079:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10107:18;:22;10126:2;10107:22;;;;;;;;;;;;;;;;;;;;;;;;;10079:50;10078:102;;;;10143:13;;;;;;;;;;;10135:21;;:4;:21;;;;:44;;;;;10166:13;;;;;;;;;;;10160:19;;:2;:19;;;;10135:44;10078:102;10074:503;;;10207:5;10197:15;;10074:503;;;10290:13;;;;;;;;;;;10282:21;;:4;:21;;;:55;;;;;10321:15;;;;;;;;;;;10307:30;;:2;:30;;;;10282:55;10279:117;;;10368:12;;10358:7;:22;;;;10279:117;10455:13;;;;;;;;;;;10449:19;;:2;:19;;;:55;;;;;10488:15;;;;;;;;;;;10472:32;;:4;:32;;;;10449:55;10445:119;;;10535:13;;10525:7;:23;;;;10445:119;10074:503;10605:15;10584:7;:18;10592:9;10584:18;;;;;;;;;;;;;;;:36;;;;10642:15;10628:7;:11;10636:2;10628:11;;;;;;;;;;;;;;;:29;;;;10668:41;10683:4;10689:2;10693:6;10701:7;10668:14;:41::i;:::-;8380:2337;8277:2440;;;:::o;2465:224::-;2585:7;2618:1;2613;:6;;2621:12;2605:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2645:9;2661:1;2657;:5;;;;:::i;:::-;2645:17;;2680:1;2673:8;;;2465:224;;;;;:::o;13612:330::-;13705:4;13742:53;13764:6;13742:53;;;;;;;;;;;;;;;;;:9;:17;13752:6;13742:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;13722:9;:17;13732:6;13722:17;;;;;;;;;;;;;;;:73;;;;13829:32;13854:6;13829:9;:20;13839:9;13829:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13806:9;:20;13816:9;13806:20;;;;;;;;;;;;;;;:55;;;;13894:9;13877:35;;13886:6;13877:35;;;13905:6;13877:35;;;;;;:::i;:::-;;;;;;;;13930:4;13923:11;;13612:330;;;;;:::o;1912:191::-;1986:16;2005:6;;;;;;;;;;;1986:25;;2031:8;2022:6;;:17;;;;;;;;;;;;;;;;;;2086:8;2055:40;;2076:8;2055:40;;;;;;;;;;;;1975:128;1912:191;:::o;10725:756::-;5616:4;5607:6;;:13;;;;;;;;;;;;;;;;;;10796:14:::1;10813:28;10837:3;10813:19;10829:2;10813:11;:15;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;10796:45;;10845:14;10876:6;10862:11;:20;;;;:::i;:::-;10845:37;;10893:21;10917;10893:45;;10951:21;10989:1;10975:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10951:40;;11020:4;11002;11007:1;11002:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11046:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11036:4;11041:1;11036:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11079:62;11096:4;11111:15;;;;;;;;;;;11129:11;11079:8;:62::i;:::-;11152:15;;;;;;;;;;;:66;;;11233:6;11254:1;11270:4;11297;11317:15;11152:191;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11354:17;11374:40;11400:13;11374:21;:25;;:40;;;;:::i;:::-;11354:60;;11425:48;11438:6;11446:26;11468:3;11446:17;11460:2;11446:9;:13;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;11425:12;:48::i;:::-;10792:689;;;;;5652:5:::0;5643:6;;:14;;;;;;;;;;;;;;;;;;10725:756;:::o;11489:99::-;11546:17;;;;;;;;;;;:26;;:34;11573:6;11546:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11489:99;:::o;12672:277::-;12828:7;12823:119;;12838:40;12853:6;12860:9;12871:6;12838:14;:40::i;:::-;;12823:119;;;12896:44;12914:6;12922:9;12933:6;12896:17;:44::i;:::-;12823:119;12672:277;;;;:::o;2134:179::-;2192:7;2212:9;2228:1;2224;:5;;;;:::i;:::-;2212:17;;2253:1;2248;:6;;2240:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2304:1;2297:8;;;2134:179;;;;:::o;2697:246::-;2755:7;2784:1;2779;:6;2775:47;;2809:1;2802:8;;;;2775:47;2832:9;2848:1;2844;:5;;;;:::i;:::-;2832:17;;2877:1;2872;2868;:5;;;;:::i;:::-;:10;2860:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2934:1;2927:8;;;2697:246;;;;;:::o;2951:132::-;3009:7;3036:39;3040:1;3043;3036:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3029:46;;2951:132;;;;:::o;2321:136::-;2379:7;2406:43;2410:1;2413;2406:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2399:50;;2321:136;;;;:::o;11596:520::-;11746:62;11763:4;11778:15;;;;;;;;;;;11796:11;11746:8;:62::i;:::-;11851:15;;;;;;;;;;;:31;;;11890:9;11923:4;11943:11;11969:1;12012;12063;12080:15;11851:255;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11596:520;;:::o;13200:405::-;13331:22;13356:24;13365:6;13373;13356:8;:24::i;:::-;13331:49;;13411:53;13433:6;13411:53;;;;;;;;;;;;;;;;;:9;:17;13421:6;13411:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;13391:9;:17;13401:6;13391:17;;;;;;;;;;;;;;;:73;;;;13498:40;13523:14;13498:9;:20;13508:9;13498:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;13475:9;:20;13485:9;13475:20;;;;;;;;;;;;;;;:63;;;;13571:9;13554:43;;13563:6;13554:43;;;13582:14;13554:43;;;;;;:::i;:::-;;;;;;;;13320:285;13200:405;;;:::o;3091:223::-;3211:7;3243:1;3239;:5;3246:12;3231:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3270:9;3286:1;3282;:5;;;;:::i;:::-;3270:17;;3305:1;3298:8;;;3091:223;;;;;:::o;13948:317::-;14015:7;14035:17;14055:28;14079:3;14055:19;14066:7;;14055:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14035:48;;14121:39;14150:9;14121;:24;14139:4;14121:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;14094:9;:24;14112:4;14094:24;;;;;;;;;;;;;;;:66;;;;14201:4;14176:42;;14185:6;14176:42;;;14208:9;14176:42;;;;;;:::i;:::-;;;;;;;;14236:21;14247:9;14236:6;:10;;:21;;;;:::i;:::-;14229:28;;;13948:317;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:474::-;6356:6;6364;6413:2;6401:9;6392:7;6388:23;6384:32;6381:119;;;6419:79;;:::i;:::-;6381:119;6539:1;6564:53;6609:7;6600:6;6589:9;6585:22;6564:53;:::i;:::-;6554:63;;6510:117;6666:2;6692:53;6737:7;6728:6;6717:9;6713:22;6692:53;:::i;:::-;6682:63;;6637:118;6288:474;;;;;:::o;6768:60::-;6796:3;6817:5;6810:12;;6768:60;;;:::o;6834:142::-;6884:9;6917:53;6935:34;6944:24;6962:5;6944:24;:::i;:::-;6935:34;:::i;:::-;6917:53;:::i;:::-;6904:66;;6834:142;;;:::o;6982:126::-;7032:9;7065:37;7096:5;7065:37;:::i;:::-;7052:50;;6982:126;;;:::o;7114:152::-;7190:9;7223:37;7254:5;7223:37;:::i;:::-;7210:50;;7114:152;;;:::o;7272:183::-;7385:63;7442:5;7385:63;:::i;:::-;7380:3;7373:76;7272:183;;:::o;7461:274::-;7580:4;7618:2;7607:9;7603:18;7595:26;;7631:97;7725:1;7714:9;7710:17;7701:6;7631:97;:::i;:::-;7461:274;;;;:::o;7741:118::-;7828:24;7846:5;7828:24;:::i;:::-;7823:3;7816:37;7741:118;;:::o;7865:222::-;7958:4;7996:2;7985:9;7981:18;7973:26;;8009:71;8077:1;8066:9;8062:17;8053:6;8009:71;:::i;:::-;7865:222;;;;:::o;8093:619::-;8170:6;8178;8186;8235:2;8223:9;8214:7;8210:23;8206:32;8203:119;;;8241:79;;:::i;:::-;8203:119;8361:1;8386:53;8431:7;8422:6;8411:9;8407:22;8386:53;:::i;:::-;8376:63;;8332:117;8488:2;8514:53;8559:7;8550:6;8539:9;8535:22;8514:53;:::i;:::-;8504:63;;8459:118;8616:2;8642:53;8687:7;8678:6;8667:9;8663:22;8642:53;:::i;:::-;8632:63;;8587:118;8093:619;;;;;:::o;8718:86::-;8753:7;8793:4;8786:5;8782:16;8771:27;;8718:86;;;:::o;8810:112::-;8893:22;8909:5;8893:22;:::i;:::-;8888:3;8881:35;8810:112;;:::o;8928:214::-;9017:4;9055:2;9044:9;9040:18;9032:26;;9068:67;9132:1;9121:9;9117:17;9108:6;9068:67;:::i;:::-;8928:214;;;;:::o;9148:118::-;9235:24;9253:5;9235:24;:::i;:::-;9230:3;9223:37;9148:118;;:::o;9272:222::-;9365:4;9403:2;9392:9;9388:18;9380:26;;9416:71;9484:1;9473:9;9469:17;9460:6;9416:71;:::i;:::-;9272:222;;;;:::o;9500:116::-;9570:21;9585:5;9570:21;:::i;:::-;9563:5;9560:32;9550:60;;9606:1;9603;9596:12;9550:60;9500:116;:::o;9622:133::-;9665:5;9703:6;9690:20;9681:29;;9719:30;9743:5;9719:30;:::i;:::-;9622:133;;;;:::o;9761:468::-;9826:6;9834;9883:2;9871:9;9862:7;9858:23;9854:32;9851:119;;;9889:79;;:::i;:::-;9851:119;10009:1;10034:53;10079:7;10070:6;10059:9;10055:22;10034:53;:::i;:::-;10024:63;;9980:117;10136:2;10162:50;10204:7;10195:6;10184:9;10180:22;10162:50;:::i;:::-;10152:60;;10107:115;9761:468;;;;;:::o;10235:117::-;10344:1;10341;10334:12;10375:568;10448:8;10458:6;10508:3;10501:4;10493:6;10489:17;10485:27;10475:122;;10516:79;;:::i;:::-;10475:122;10629:6;10616:20;10606:30;;10659:18;10651:6;10648:30;10645:117;;;10681:79;;:::i;:::-;10645:117;10795:4;10787:6;10783:17;10771:29;;10849:3;10841:4;10833:6;10829:17;10819:8;10815:32;10812:41;10809:128;;;10856:79;;:::i;:::-;10809:128;10375:568;;;;;:::o;10966:::-;11039:8;11049:6;11099:3;11092:4;11084:6;11080:17;11076:27;11066:122;;11107:79;;:::i;:::-;11066:122;11220:6;11207:20;11197:30;;11250:18;11242:6;11239:30;11236:117;;;11272:79;;:::i;:::-;11236:117;11386:4;11378:6;11374:17;11362:29;;11440:3;11432:4;11424:6;11420:17;11410:8;11406:32;11403:41;11400:128;;;11447:79;;:::i;:::-;11400:128;10966:568;;;;;:::o;11540:934::-;11662:6;11670;11678;11686;11735:2;11723:9;11714:7;11710:23;11706:32;11703:119;;;11741:79;;:::i;:::-;11703:119;11889:1;11878:9;11874:17;11861:31;11919:18;11911:6;11908:30;11905:117;;;11941:79;;:::i;:::-;11905:117;12054:80;12126:7;12117:6;12106:9;12102:22;12054:80;:::i;:::-;12036:98;;;;11832:312;12211:2;12200:9;12196:18;12183:32;12242:18;12234:6;12231:30;12228:117;;;12264:79;;:::i;:::-;12228:117;12377:80;12449:7;12440:6;12429:9;12425:22;12377:80;:::i;:::-;12359:98;;;;12154:313;11540:934;;;;;;;:::o;12480:329::-;12539:6;12588:2;12576:9;12567:7;12563:23;12559:32;12556:119;;;12594:79;;:::i;:::-;12556:119;12714:1;12739:53;12784:7;12775:6;12764:9;12760:22;12739:53;:::i;:::-;12729:63;;12685:117;12480:329;;;;:::o;12815:323::-;12871:6;12920:2;12908:9;12899:7;12895:23;12891:32;12888:119;;;12926:79;;:::i;:::-;12888:119;13046:1;13071:50;13113:7;13104:6;13093:9;13089:22;13071:50;:::i;:::-;13061:60;;13017:114;12815:323;;;;:::o;13144:329::-;13203:6;13252:2;13240:9;13231:7;13227:23;13223:32;13220:119;;;13258:79;;:::i;:::-;13220:119;13378:1;13403:53;13448:7;13439:6;13428:9;13424:22;13403:53;:::i;:::-;13393:63;;13349:117;13144:329;;;;:::o;13479:474::-;13547:6;13555;13604:2;13592:9;13583:7;13579:23;13575:32;13572:119;;;13610:79;;:::i;:::-;13572:119;13730:1;13755:53;13800:7;13791:6;13780:9;13776:22;13755:53;:::i;:::-;13745:63;;13701:117;13857:2;13883:53;13928:7;13919:6;13908:9;13904:22;13883:53;:::i;:::-;13873:63;;13828:118;13479:474;;;;;:::o;13959:182::-;14099:34;14095:1;14087:6;14083:14;14076:58;13959:182;:::o;14147:366::-;14289:3;14310:67;14374:2;14369:3;14310:67;:::i;:::-;14303:74;;14386:93;14475:3;14386:93;:::i;:::-;14504:2;14499:3;14495:12;14488:19;;14147:366;;;:::o;14519:419::-;14685:4;14723:2;14712:9;14708:18;14700:26;;14772:9;14766:4;14762:20;14758:1;14747:9;14743:17;14736:47;14800:131;14926:4;14800:131;:::i;:::-;14792:139;;14519:419;;;:::o;14944:180::-;14992:77;14989:1;14982:88;15089:4;15086:1;15079:15;15113:4;15110:1;15103:15;15130:180;15178:77;15175:1;15168:88;15275:4;15272:1;15265:15;15299:4;15296:1;15289:15;15316:233;15355:3;15378:24;15396:5;15378:24;:::i;:::-;15369:33;;15424:66;15417:5;15414:77;15411:103;;15494:18;;:::i;:::-;15411:103;15541:1;15534:5;15530:13;15523:20;;15316:233;;;:::o;15555:225::-;15695:34;15691:1;15683:6;15679:14;15672:58;15764:8;15759:2;15751:6;15747:15;15740:33;15555:225;:::o;15786:366::-;15928:3;15949:67;16013:2;16008:3;15949:67;:::i;:::-;15942:74;;16025:93;16114:3;16025:93;:::i;:::-;16143:2;16138:3;16134:12;16127:19;;15786:366;;;:::o;16158:419::-;16324:4;16362:2;16351:9;16347:18;16339:26;;16411:9;16405:4;16401:20;16397:1;16386:9;16382:17;16375:47;16439:131;16565:4;16439:131;:::i;:::-;16431:139;;16158:419;;;:::o;16583:223::-;16723:34;16719:1;16711:6;16707:14;16700:58;16792:6;16787:2;16779:6;16775:15;16768:31;16583:223;:::o;16812:366::-;16954:3;16975:67;17039:2;17034:3;16975:67;:::i;:::-;16968:74;;17051:93;17140:3;17051:93;:::i;:::-;17169:2;17164:3;17160:12;17153:19;;16812:366;;;:::o;17184:419::-;17350:4;17388:2;17377:9;17373:18;17365:26;;17437:9;17431:4;17427:20;17423:1;17412:9;17408:17;17401:47;17465:131;17591:4;17465:131;:::i;:::-;17457:139;;17184:419;;;:::o;17609:221::-;17749:34;17745:1;17737:6;17733:14;17726:58;17818:4;17813:2;17805:6;17801:15;17794:29;17609:221;:::o;17836:366::-;17978:3;17999:67;18063:2;18058:3;17999:67;:::i;:::-;17992:74;;18075:93;18164:3;18075:93;:::i;:::-;18193:2;18188:3;18184:12;18177:19;;17836:366;;;:::o;18208:419::-;18374:4;18412:2;18401:9;18397:18;18389:26;;18461:9;18455:4;18451:20;18447:1;18436:9;18432:17;18425:47;18489:131;18615:4;18489:131;:::i;:::-;18481:139;;18208:419;;;:::o;18633:224::-;18773:34;18769:1;18761:6;18757:14;18750:58;18842:7;18837:2;18829:6;18825:15;18818:32;18633:224;:::o;18863:366::-;19005:3;19026:67;19090:2;19085:3;19026:67;:::i;:::-;19019:74;;19102:93;19191:3;19102:93;:::i;:::-;19220:2;19215:3;19211:12;19204:19;;18863:366;;;:::o;19235:419::-;19401:4;19439:2;19428:9;19424:18;19416:26;;19488:9;19482:4;19478:20;19474:1;19463:9;19459:17;19452:47;19516:131;19642:4;19516:131;:::i;:::-;19508:139;;19235:419;;;:::o;19660:222::-;19800:34;19796:1;19788:6;19784:14;19777:58;19869:5;19864:2;19856:6;19852:15;19845:30;19660:222;:::o;19888:366::-;20030:3;20051:67;20115:2;20110:3;20051:67;:::i;:::-;20044:74;;20127:93;20216:3;20127:93;:::i;:::-;20245:2;20240:3;20236:12;20229:19;;19888:366;;;:::o;20260:419::-;20426:4;20464:2;20453:9;20449:18;20441:26;;20513:9;20507:4;20503:20;20499:1;20488:9;20484:17;20477:47;20541:131;20667:4;20541:131;:::i;:::-;20533:139;;20260:419;;;:::o;20685:228::-;20825:34;20821:1;20813:6;20809:14;20802:58;20894:11;20889:2;20881:6;20877:15;20870:36;20685:228;:::o;20919:366::-;21061:3;21082:67;21146:2;21141:3;21082:67;:::i;:::-;21075:74;;21158:93;21247:3;21158:93;:::i;:::-;21276:2;21271:3;21267:12;21260:19;;20919:366;;;:::o;21291:419::-;21457:4;21495:2;21484:9;21480:18;21472:26;;21544:9;21538:4;21534:20;21530:1;21519:9;21515:17;21508:47;21572:131;21698:4;21572:131;:::i;:::-;21564:139;;21291:419;;;:::o;21716:180::-;21856:32;21852:1;21844:6;21840:14;21833:56;21716:180;:::o;21902:366::-;22044:3;22065:67;22129:2;22124:3;22065:67;:::i;:::-;22058:74;;22141:93;22230:3;22141:93;:::i;:::-;22259:2;22254:3;22250:12;22243:19;;21902:366;;;:::o;22274:419::-;22440:4;22478:2;22467:9;22463:18;22455:26;;22527:9;22521:4;22517:20;22513:1;22502:9;22498:17;22491:47;22555:131;22681:4;22555:131;:::i;:::-;22547:139;;22274:419;;;:::o;22699:178::-;22839:30;22835:1;22827:6;22823:14;22816:54;22699:178;:::o;22883:366::-;23025:3;23046:67;23110:2;23105:3;23046:67;:::i;:::-;23039:74;;23122:93;23211:3;23122:93;:::i;:::-;23240:2;23235:3;23231:12;23224:19;;22883:366;;;:::o;23255:419::-;23421:4;23459:2;23448:9;23444:18;23436:26;;23508:9;23502:4;23498:20;23494:1;23483:9;23479:17;23472:47;23536:131;23662:4;23536:131;:::i;:::-;23528:139;;23255:419;;;:::o;23680:222::-;23820:34;23816:1;23808:6;23804:14;23797:58;23889:5;23884:2;23876:6;23872:15;23865:30;23680:222;:::o;23908:366::-;24050:3;24071:67;24135:2;24130:3;24071:67;:::i;:::-;24064:74;;24147:93;24236:3;24147:93;:::i;:::-;24265:2;24260:3;24256:12;24249:19;;23908:366;;;:::o;24280:419::-;24446:4;24484:2;24473:9;24469:18;24461:26;;24533:9;24527:4;24523:20;24519:1;24508:9;24504:17;24497:47;24561:131;24687:4;24561:131;:::i;:::-;24553:139;;24280:419;;;:::o;24705:191::-;24745:3;24764:20;24782:1;24764:20;:::i;:::-;24759:25;;24798:20;24816:1;24798:20;:::i;:::-;24793:25;;24841:1;24838;24834:9;24827:16;;24862:3;24859:1;24856:10;24853:36;;;24869:18;;:::i;:::-;24853:36;24705:191;;;;:::o;24902:225::-;25042:34;25038:1;25030:6;25026:14;25019:58;25111:8;25106:2;25098:6;25094:15;25087:33;24902:225;:::o;25133:366::-;25275:3;25296:67;25360:2;25355:3;25296:67;:::i;:::-;25289:74;;25372:93;25461:3;25372:93;:::i;:::-;25490:2;25485:3;25481:12;25474:19;;25133:366;;;:::o;25505:419::-;25671:4;25709:2;25698:9;25694:18;25686:26;;25758:9;25752:4;25748:20;25744:1;25733:9;25729:17;25722:47;25786:131;25912:4;25786:131;:::i;:::-;25778:139;;25505:419;;;:::o;25930:222::-;26070:34;26066:1;26058:6;26054:14;26047:58;26139:5;26134:2;26126:6;26122:15;26115:30;25930:222;:::o;26158:366::-;26300:3;26321:67;26385:2;26380:3;26321:67;:::i;:::-;26314:74;;26397:93;26486:3;26397:93;:::i;:::-;26515:2;26510:3;26506:12;26499:19;;26158:366;;;:::o;26530:419::-;26696:4;26734:2;26723:9;26719:18;26711:26;;26783:9;26777:4;26773:20;26769:1;26758:9;26754:17;26747:47;26811:131;26937:4;26811:131;:::i;:::-;26803:139;;26530:419;;;:::o;26955:194::-;26995:4;27015:20;27033:1;27015:20;:::i;:::-;27010:25;;27049:20;27067:1;27049:20;:::i;:::-;27044:25;;27093:1;27090;27086:9;27078:17;;27117:1;27111:4;27108:11;27105:37;;;27122:18;;:::i;:::-;27105:37;26955:194;;;;:::o;27155:143::-;27212:5;27243:6;27237:13;27228:22;;27259:33;27286:5;27259:33;:::i;:::-;27155:143;;;;:::o;27304:351::-;27374:6;27423:2;27411:9;27402:7;27398:23;27394:32;27391:119;;;27429:79;;:::i;:::-;27391:119;27549:1;27574:64;27630:7;27621:6;27610:9;27606:22;27574:64;:::i;:::-;27564:74;;27520:128;27304:351;;;;:::o;27661:85::-;27706:7;27735:5;27724:16;;27661:85;;;:::o;27752:158::-;27810:9;27843:61;27861:42;27870:32;27896:5;27870:32;:::i;:::-;27861:42;:::i;:::-;27843:61;:::i;:::-;27830:74;;27752:158;;;:::o;27916:147::-;28011:45;28050:5;28011:45;:::i;:::-;28006:3;27999:58;27916:147;;:::o;28069:114::-;28136:6;28170:5;28164:12;28154:22;;28069:114;;;:::o;28189:184::-;28288:11;28322:6;28317:3;28310:19;28362:4;28357:3;28353:14;28338:29;;28189:184;;;;:::o;28379:132::-;28446:4;28469:3;28461:11;;28499:4;28494:3;28490:14;28482:22;;28379:132;;;:::o;28517:108::-;28594:24;28612:5;28594:24;:::i;:::-;28589:3;28582:37;28517:108;;:::o;28631:179::-;28700:10;28721:46;28763:3;28755:6;28721:46;:::i;:::-;28799:4;28794:3;28790:14;28776:28;;28631:179;;;;:::o;28816:113::-;28886:4;28918;28913:3;28909:14;28901:22;;28816:113;;;:::o;28965:732::-;29084:3;29113:54;29161:5;29113:54;:::i;:::-;29183:86;29262:6;29257:3;29183:86;:::i;:::-;29176:93;;29293:56;29343:5;29293:56;:::i;:::-;29372:7;29403:1;29388:284;29413:6;29410:1;29407:13;29388:284;;;29489:6;29483:13;29516:63;29575:3;29560:13;29516:63;:::i;:::-;29509:70;;29602:60;29655:6;29602:60;:::i;:::-;29592:70;;29448:224;29435:1;29432;29428:9;29423:14;;29388:284;;;29392:14;29688:3;29681:10;;29089:608;;;28965:732;;;;:::o;29703:831::-;29966:4;30004:3;29993:9;29989:19;29981:27;;30018:71;30086:1;30075:9;30071:17;30062:6;30018:71;:::i;:::-;30099:80;30175:2;30164:9;30160:18;30151:6;30099:80;:::i;:::-;30226:9;30220:4;30216:20;30211:2;30200:9;30196:18;30189:48;30254:108;30357:4;30348:6;30254:108;:::i;:::-;30246:116;;30372:72;30440:2;30429:9;30425:18;30416:6;30372:72;:::i;:::-;30454:73;30522:3;30511:9;30507:19;30498:6;30454:73;:::i;:::-;29703:831;;;;;;;;:::o;30540:177::-;30680:29;30676:1;30668:6;30664:14;30657:53;30540:177;:::o;30723:366::-;30865:3;30886:67;30950:2;30945:3;30886:67;:::i;:::-;30879:74;;30962:93;31051:3;30962:93;:::i;:::-;31080:2;31075:3;31071:12;31064:19;;30723:366;;;:::o;31095:419::-;31261:4;31299:2;31288:9;31284:18;31276:26;;31348:9;31342:4;31338:20;31334:1;31323:9;31319:17;31312:47;31376:131;31502:4;31376:131;:::i;:::-;31368:139;;31095:419;;;:::o;31520:410::-;31560:7;31583:20;31601:1;31583:20;:::i;:::-;31578:25;;31617:20;31635:1;31617:20;:::i;:::-;31612:25;;31672:1;31669;31665:9;31694:30;31712:11;31694:30;:::i;:::-;31683:41;;31873:1;31864:7;31860:15;31857:1;31854:22;31834:1;31827:9;31807:83;31784:139;;31903:18;;:::i;:::-;31784:139;31568:362;31520:410;;;;:::o;31936:180::-;31984:77;31981:1;31974:88;32081:4;32078:1;32071:15;32105:4;32102:1;32095:15;32122:185;32162:1;32179:20;32197:1;32179:20;:::i;:::-;32174:25;;32213:20;32231:1;32213:20;:::i;:::-;32208:25;;32252:1;32242:35;;32257:18;;:::i;:::-;32242:35;32299:1;32296;32292:9;32287:14;;32122:185;;;;:::o;32313:220::-;32453:34;32449:1;32441:6;32437:14;32430:58;32522:3;32517:2;32509:6;32505:15;32498:28;32313:220;:::o;32539:366::-;32681:3;32702:67;32766:2;32761:3;32702:67;:::i;:::-;32695:74;;32778:93;32867:3;32778:93;:::i;:::-;32896:2;32891:3;32887:12;32880:19;;32539:366;;;:::o;32911:419::-;33077:4;33115:2;33104:9;33100:18;33092:26;;33164:9;33158:4;33154:20;33150:1;33139:9;33135:17;33128:47;33192:131;33318:4;33192:131;:::i;:::-;33184:139;;32911:419;;;:::o;33336:807::-;33585:4;33623:3;33612:9;33608:19;33600:27;;33637:71;33705:1;33694:9;33690:17;33681:6;33637:71;:::i;:::-;33718:72;33786:2;33775:9;33771:18;33762:6;33718:72;:::i;:::-;33800:80;33876:2;33865:9;33861:18;33852:6;33800:80;:::i;:::-;33890;33966:2;33955:9;33951:18;33942:6;33890:80;:::i;:::-;33980:73;34048:3;34037:9;34033:19;34024:6;33980:73;:::i;:::-;34063;34131:3;34120:9;34116:19;34107:6;34063:73;:::i;:::-;33336:807;;;;;;;;;:::o;34149:143::-;34206:5;34237:6;34231:13;34222:22;;34253:33;34280:5;34253:33;:::i;:::-;34149:143;;;;:::o;34298:663::-;34386:6;34394;34402;34451:2;34439:9;34430:7;34426:23;34422:32;34419:119;;;34457:79;;:::i;:::-;34419:119;34577:1;34602:64;34658:7;34649:6;34638:9;34634:22;34602:64;:::i;:::-;34592:74;;34548:128;34715:2;34741:64;34797:7;34788:6;34777:9;34773:22;34741:64;:::i;:::-;34731:74;;34686:129;34854:2;34880:64;34936:7;34927:6;34916:9;34912:22;34880:64;:::i;:::-;34870:74;;34825:129;34298:663;;;;;:::o
Swarm Source
ipfs://68ac18cbabcdf235b1c6db42c7fc729b1a167595180931de2818375e22bd845a
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.