ERC-20
Overview
Max Total Supply
1,000,000,000 KEKW
Holders
9
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.73247446 KEKWValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
KEKW
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-02 */ /* Telegram: https://t.me/KEKWStealth Website: https://kekweth.fun/ Twitter: https://twitter.com/KEKWMemecoin */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { emit OwnershipTransferred(_owner, newOwner); _owner = 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 KEKW is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "KEKW MEME"; string private constant _symbol = "KEKW"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 0; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 0; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0xBb9dA69657884cC3f239C39Bb41BbD9DbCA0F74D); address payable private _marketingAddress = payable(0xBb9dA69657884cC3f239C39Bb41BbD9DbCA0F74D); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private swapEnabled = true; string public Telegram = "t.me/KEKWStealth"; string public Website = "kekweth.fun/"; string public Twitter = "twitter.com/KEKWMemecoin"; uint256 public _maxTxAmount = 20000000 * 10**9; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 1 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } 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 (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { 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 && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { 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)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function enableTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function manualswapAndSend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); sendETHToFee(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) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%"); require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 30, "Buy tax must be between 0% and 30%"); require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%"); require(taxFeeOnSell >= 0 && taxFeeOnSell <= 50, "Sell tax must be between 0% and 50%"); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); _taxFeeOnSell = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setTelegram(string calldata _telegram) public onlyOwner { Telegram = _telegram; } function setWebsite(string calldata _website) public onlyOwner { Website = _website; } function setTwitter(string calldata _twitter) public onlyOwner { Twitter = _twitter; } function rescueStuckToken(address _token, uint _amount) external onlyOwner { IERC20(_token).transfer(msg.sender,_amount); } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"Telegram","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Twitter","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Website","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"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":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswapAndSend","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":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","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":"string","name":"_telegram","type":"string"}],"name":"setTelegram","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_twitter","type":"string"}],"name":"setTwitter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_website","type":"string"}],"name":"setWebsite","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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
6080604052670de0b6b3a76400006000196200001c9190620007fc565b6000196200002b919062000863565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573bb9da69657884cc3f239c39bb41bbd9dbca0f74d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb9da69657884cc3f239c39bb41bbd9dbca0f74d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506040518060400160405280601081526020017f742e6d652f4b454b57537465616c746800000000000000000000000000000000815250601690816200019a919062000b0e565b506040518060400160405280600c81526020017f6b656b776574682e66756e2f000000000000000000000000000000000000000081525060179081620001e1919062000b0e565b506040518060400160405280601881526020017f747769747465722e636f6d2f4b454b574d656d65636f696e00000000000000008152506018908162000228919062000b0e565b5066470de4df82000060195566470de4df820000601a55633b9aca00601b553480156200025457600080fd5b506000620002676200079260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200031c6200079260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000400573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000426919062000c5f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200048e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b4919062000c5f565b6040518363ffffffff1660e01b8152600401620004d392919062000ca2565b6020604051808303816000875af1158015620004f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000519919062000c5f565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200056f6200079a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200071c6200079260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405162000783919062000ce0565b60405180910390a35062000cfd565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200080982620007c3565b91506200081683620007c3565b925082620008295762000828620007cd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200087082620007c3565b91506200087d83620007c3565b925082820390508181111562000898576200089762000834565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200092057607f821691505b602082108103620009365762000935620008d8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000961565b620009ac868362000961565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009ef620009e9620009e384620007c3565b620009c4565b620007c3565b9050919050565b6000819050919050565b62000a0b83620009ce565b62000a2362000a1a82620009f6565b8484546200096e565b825550505050565b600090565b62000a3a62000a2b565b62000a4781848462000a00565b505050565b5b8181101562000a6f5762000a6360008262000a30565b60018101905062000a4d565b5050565b601f82111562000abe5762000a88816200093c565b62000a938462000951565b8101602085101562000aa3578190505b62000abb62000ab28562000951565b83018262000a4c565b50505b505050565b600082821c905092915050565b600062000ae36000198460080262000ac3565b1980831691505092915050565b600062000afe838362000ad0565b9150826002028217905092915050565b62000b19826200089e565b67ffffffffffffffff81111562000b355762000b34620008a9565b5b62000b41825462000907565b62000b4e82828562000a73565b600060209050601f83116001811462000b86576000841562000b71578287015190505b62000b7d858262000af0565b86555062000bed565b601f19841662000b96866200093c565b60005b8281101562000bc05784890151825560018201915060208501945060208101905062000b99565b8683101562000be0578489015162000bdc601f89168262000ad0565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c278262000bfa565b9050919050565b62000c398162000c1a565b811462000c4557600080fd5b50565b60008151905062000c598162000c2e565b92915050565b60006020828403121562000c785762000c7762000bf5565b5b600062000c888482850162000c48565b91505092915050565b62000c9c8162000c1a565b82525050565b600060408201905062000cb9600083018562000c91565b62000cc8602083018462000c91565b9392505050565b62000cda81620007c3565b82525050565b600060208201905062000cf7600083018462000ccf565b92915050565b614b5b8062000d0d6000396000f3fe6080604052600436106102285760003560e01c80637f2feddc11610123578063c2a5e5c2116100ab578063ea1644d51161006f578063ea1644d5146107d9578063f275f64b14610802578063f2fde38b1461082b578063f87f44b914610854578063fdc9d0f41461087d5761022f565b8063c2a5e5c21461070a578063c3c8cd8014610733578063c492f0461461074a578063dd62ed3e14610773578063e8e81fe4146107b05761022f565b806398a5c315116100f257806398a5c31514610613578063a2a957bb1461063c578063a9059cbb14610665578063a9490cb1146106a2578063bfd79284146106cd5761022f565b80637f2feddc146105555780638da5cb5b146105925780638f9a55c0146105bd57806395d89b41146105e85761022f565b8063313ce567116101b157806370a082311161017557806370a0823114610496578063715018a6146104d357806374010ece146104ea5780637b99a119146105135780637d1db4a51461052a5761022f565b8063313ce567146103d757806349bd5a5e146104025780636b9990531461042d5780636d8aa8f8146104565780636fc3eaec1461047f5761022f565b806318160ddd116101f857806318160ddd146102f057806323b872dd1461031b57806326cd1e30146103585780632fd689e31461038157806330e290e4146103ac5761022f565b8062b8cf2a1461023457806306fdde031461025d578063095ea7b3146102885780631694505e146102c55761022f565b3661022f57005b600080fd5b34801561024057600080fd5b5061025b6004803603810190610256919061358a565b6108a8565b005b34801561026957600080fd5b506102726109d2565b60405161027f9190613652565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa91906136aa565b610a0f565b6040516102bc9190613705565b60405180910390f35b3480156102d157600080fd5b506102da610a2d565b6040516102e7919061377f565b60405180910390f35b3480156102fc57600080fd5b50610305610a53565b60405161031291906137a9565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d91906137c4565b610a63565b60405161034f9190613705565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a91906136aa565b610b3c565b005b34801561038d57600080fd5b50610396610c54565b6040516103a391906137a9565b60405180910390f35b3480156103b857600080fd5b506103c1610c5a565b6040516103ce9190613652565b60405180910390f35b3480156103e357600080fd5b506103ec610ce8565b6040516103f99190613833565b60405180910390f35b34801561040e57600080fd5b50610417610cf1565b604051610424919061385d565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190613878565b610d17565b005b34801561046257600080fd5b5061047d600480360381019061047891906138d1565b610e07565b005b34801561048b57600080fd5b50610494610eb9565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190613878565b610f8a565b6040516104ca91906137a9565b60405180910390f35b3480156104df57600080fd5b506104e8610fdb565b005b3480156104f657600080fd5b50610511600480360381019061050c91906138fe565b61112e565b005b34801561051f57600080fd5b506105286111cd565b005b34801561053657600080fd5b5061053f6112af565b60405161054c91906137a9565b60405180910390f35b34801561056157600080fd5b5061057c60048036038101906105779190613878565b6112b5565b60405161058991906137a9565b60405180910390f35b34801561059e57600080fd5b506105a76112cd565b6040516105b4919061385d565b60405180910390f35b3480156105c957600080fd5b506105d26112f6565b6040516105df91906137a9565b60405180910390f35b3480156105f457600080fd5b506105fd6112fc565b60405161060a9190613652565b60405180910390f35b34801561061f57600080fd5b5061063a600480360381019061063591906138fe565b611339565b005b34801561064857600080fd5b50610663600480360381019061065e919061392b565b611403565b005b34801561067157600080fd5b5061068c600480360381019061068791906136aa565b6115fe565b6040516106999190613705565b60405180910390f35b3480156106ae57600080fd5b506106b761161c565b6040516106c49190613652565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190613878565b6116aa565b6040516107019190613705565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c91906139ed565b6116ca565b005b34801561073f57600080fd5b50610748611775565b005b34801561075657600080fd5b50610771600480360381019061076c9190613a90565b61184e565b005b34801561077f57600080fd5b5061079a60048036038101906107959190613af0565b611988565b6040516107a791906137a9565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906139ed565b611a0f565b005b3480156107e557600080fd5b5061080060048036038101906107fb91906138fe565b611aba565b005b34801561080e57600080fd5b50610829600480360381019061082491906138d1565b611b59565b005b34801561083757600080fd5b50610852600480360381019061084d9190613878565b611c0b565b005b34801561086057600080fd5b5061087b600480360381019061087691906139ed565b611d5d565b005b34801561088957600080fd5b50610892611e08565b60405161089f9190613652565b60405180910390f35b6108b0611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490613b7c565b60405180910390fd5b60005b81518110156109ce5760016010600084848151811061096257610961613b9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109c690613bfa565b915050610940565b5050565b60606040518060400160405280600981526020017f4b454b57204d454d450000000000000000000000000000000000000000000000815250905090565b6000610a23610a1c611e96565b8484611e9e565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610a70848484612067565b610b3184610a7c611e96565b610b2c85604051806060016040528060288152602001614afe60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ae2611e96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ea9092919063ffffffff16565b611e9e565b600190509392505050565b610b44611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc890613b7c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c0c929190613c42565b6020604051808303816000875af1158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f9190613c80565b505050565b601b5481565b60188054610c6790613cdc565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9390613cdc565b8015610ce05780601f10610cb557610100808354040283529160200191610ce0565b820191906000526020600020905b815481529060010190602001808311610cc357829003601f168201915b505050505081565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d1f611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da390613b7c565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e0f611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9390613b7c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610efa611e96565b73ffffffffffffffffffffffffffffffffffffffff161480610f705750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f58611e96565b73ffffffffffffffffffffffffffffffffffffffff16145b610f7957600080fd5b6000479050610f878161294e565b50565b6000610fd4600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ba565b9050919050565b610fe3611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613b7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611136611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90613b7c565b60405180910390fd5b8060198190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661120e611e96565b73ffffffffffffffffffffffffffffffffffffffff1614806112845750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661126c611e96565b73ffffffffffffffffffffffffffffffffffffffff16145b61128d57600080fd5b600061129830610f8a565b90506112a381612a28565b6112ac8161294e565b50565b60195481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b60606040518060400160405280600481526020017f4b454b5700000000000000000000000000000000000000000000000000000000815250905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661137a611e96565b73ffffffffffffffffffffffffffffffffffffffff1614806113f05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113d8611e96565b73ffffffffffffffffffffffffffffffffffffffff16145b6113f957600080fd5b80600b8190555050565b61140b611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90613b7c565b60405180910390fd5b600084101580156114aa575060048411155b6114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090613d7f565b60405180910390fd5b600082101580156114fb5750601e8211155b61153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190613e11565b60405180910390fd5b6000831015801561154c575060048311155b61158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613ea3565b60405180910390fd5b6000811015801561159d575060328111155b6115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d390613f35565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061161261160b611e96565b8484612067565b6001905092915050565b6017805461162990613cdc565b80601f016020809104026020016040519081016040528092919081815260200182805461165590613cdc565b80156116a25780601f10611677576101008083540402835291602001916116a2565b820191906000526020600020905b81548152906001019060200180831161168557829003601f168201915b505050505081565b60106020528060005260406000206000915054906101000a900460ff1681565b6116d2611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690613b7c565b60405180910390fd5b818160189182611770929190614102565b505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117b6611e96565b73ffffffffffffffffffffffffffffffffffffffff16148061182c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611814611e96565b73ffffffffffffffffffffffffffffffffffffffff16145b61183557600080fd5b600061184030610f8a565b905061184b81612a28565b50565b611856611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118da90613b7c565b60405180910390fd5b60005b8383905081101561198257816005600086868581811061190957611908613b9c565b5b905060200201602081019061191e9190613878565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061197a90613bfa565b9150506118e6565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a17611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90613b7c565b60405180910390fd5b818160169182611ab5929190614102565b505050565b611ac2611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4690613b7c565b60405180910390fd5b80601a8190555050565b611b61611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590613b7c565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b611c13611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9790613b7c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d65611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de990613b7c565b60405180910390fd5b818160179182611e03929190614102565b505050565b60168054611e1590613cdc565b80601f0160208091040260200160405190810160405280929190818152602001828054611e4190613cdc565b8015611e8e5780601f10611e6357610100808354040283529160200191611e8e565b820191906000526020600020905b815481529060010190602001808311611e7157829003601f168201915b505050505081565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0490614244565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f73906142d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161205a91906137a9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90614368565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213c906143fa565b60405180910390fd5b60008111612188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217f9061448c565b60405180910390fd5b6121906112cd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121fe57506121ce6112cd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125e957601560149054906101000a900460ff1661228d5761221f6112cd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122839061451e565b60405180910390fd5b5b6019548111156122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c99061458a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123765750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac9061461c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461246257601a548161241784610f8a565b612421919061463c565b10612461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612458906146e2565b60405180910390fd5b5b600061246d30610f8a565b90506000601b548210159050601b54821061248857601b5491505b8080156124a0575060158054906101000a900460ff16155b80156124fa5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156125125750601560169054906101000a900460ff165b80156125685750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125be5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125e6576125cc82612a28565b600047905060008111156125e4576125e34761294e565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126905750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127435750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156127425750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561275157600090506128d8565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156127fc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561281457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128bf5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156128d757600a54600c81905550600b54600d819055505b5b6128e484848484612c9f565b50505050565b6000838311158290612932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129299190613652565b60405180910390fd5b50600083856129419190614702565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156129b6573d6000803e3d6000fd5b5050565b6000600654821115612a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f8906147a8565b60405180910390fd5b6000612a0b612ccc565b9050612a208184612cf790919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612a5f57612a5e6133e9565b5b604051908082528060200260200182016040528015612a8d5781602001602082028036833780820191505090505b5090503081600081518110612aa557612aa4613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7091906147dd565b81600181518110612b8457612b83613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612beb30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e9e565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c4f959493929190614903565b600060405180830381600087803b158015612c6957600080fd5b505af1158015612c7d573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612cad57612cac612d41565b5b612cb8848484612d7e565b80612cc657612cc5612f49565b5b50505050565b6000806000612cd9612f5d565b91509150612cf08183612cf790919063ffffffff16565b9250505090565b6000612d3983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fbc565b905092915050565b6000600c54148015612d5557506000600d54145b612d7c57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612d908761301f565b955095509550955095509550612dee86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461308790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e8385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ecf8161312f565b612ed984836131ec565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612f3691906137a9565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612f91670de0b6b3a7640000600654612cf790919063ffffffff16565b821015612faf57600654670de0b6b3a7640000935093505050612fb8565b81819350935050505b9091565b60008083118290613003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffa9190613652565b60405180910390fd5b5060008385613012919061498c565b9050809150509392505050565b600080600080600080600080600061303c8a600c54600d54613226565b925092509250600061304c612ccc565b9050600080600061305f8e8787876132bc565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006130c983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ea565b905092915050565b60008082846130e0919061463c565b905083811015613125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311c90614a09565b60405180910390fd5b8091505092915050565b6000613139612ccc565b90506000613150828461334590919063ffffffff16565b90506131a481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6132018260065461308790919063ffffffff16565b60068190555061321c816007546130d190919063ffffffff16565b6007819055505050565b6000806000806132526064613244888a61334590919063ffffffff16565b612cf790919063ffffffff16565b9050600061327c606461326e888b61334590919063ffffffff16565b612cf790919063ffffffff16565b905060006132a582613297858c61308790919063ffffffff16565b61308790919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132d5858961334590919063ffffffff16565b905060006132ec868961334590919063ffffffff16565b90506000613303878961334590919063ffffffff16565b9050600061332c8261331e858761308790919063ffffffff16565b61308790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361335757600090506133b9565b600082846133659190614a29565b9050828482613374919061498c565b146133b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ab90614add565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613421826133d8565b810181811067ffffffffffffffff821117156134405761343f6133e9565b5b80604052505050565b60006134536133bf565b905061345f8282613418565b919050565b600067ffffffffffffffff82111561347f5761347e6133e9565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134c082613495565b9050919050565b6134d0816134b5565b81146134db57600080fd5b50565b6000813590506134ed816134c7565b92915050565b600061350661350184613464565b613449565b9050808382526020820190506020840283018581111561352957613528613490565b5b835b81811015613552578061353e88826134de565b84526020840193505060208101905061352b565b5050509392505050565b600082601f830112613571576135706133d3565b5b81356135818482602086016134f3565b91505092915050565b6000602082840312156135a05761359f6133c9565b5b600082013567ffffffffffffffff8111156135be576135bd6133ce565b5b6135ca8482850161355c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561360d5780820151818401526020810190506135f2565b60008484015250505050565b6000613624826135d3565b61362e81856135de565b935061363e8185602086016135ef565b613647816133d8565b840191505092915050565b6000602082019050818103600083015261366c8184613619565b905092915050565b6000819050919050565b61368781613674565b811461369257600080fd5b50565b6000813590506136a48161367e565b92915050565b600080604083850312156136c1576136c06133c9565b5b60006136cf858286016134de565b92505060206136e085828601613695565b9150509250929050565b60008115159050919050565b6136ff816136ea565b82525050565b600060208201905061371a60008301846136f6565b92915050565b6000819050919050565b600061374561374061373b84613495565b613720565b613495565b9050919050565b60006137578261372a565b9050919050565b60006137698261374c565b9050919050565b6137798161375e565b82525050565b60006020820190506137946000830184613770565b92915050565b6137a381613674565b82525050565b60006020820190506137be600083018461379a565b92915050565b6000806000606084860312156137dd576137dc6133c9565b5b60006137eb868287016134de565b93505060206137fc868287016134de565b925050604061380d86828701613695565b9150509250925092565b600060ff82169050919050565b61382d81613817565b82525050565b60006020820190506138486000830184613824565b92915050565b613857816134b5565b82525050565b6000602082019050613872600083018461384e565b92915050565b60006020828403121561388e5761388d6133c9565b5b600061389c848285016134de565b91505092915050565b6138ae816136ea565b81146138b957600080fd5b50565b6000813590506138cb816138a5565b92915050565b6000602082840312156138e7576138e66133c9565b5b60006138f5848285016138bc565b91505092915050565b600060208284031215613914576139136133c9565b5b600061392284828501613695565b91505092915050565b60008060008060808587031215613945576139446133c9565b5b600061395387828801613695565b945050602061396487828801613695565b935050604061397587828801613695565b925050606061398687828801613695565b91505092959194509250565b600080fd5b60008083601f8401126139ad576139ac6133d3565b5b8235905067ffffffffffffffff8111156139ca576139c9613992565b5b6020830191508360018202830111156139e6576139e5613490565b5b9250929050565b60008060208385031215613a0457613a036133c9565b5b600083013567ffffffffffffffff811115613a2257613a216133ce565b5b613a2e85828601613997565b92509250509250929050565b60008083601f840112613a5057613a4f6133d3565b5b8235905067ffffffffffffffff811115613a6d57613a6c613992565b5b602083019150836020820283011115613a8957613a88613490565b5b9250929050565b600080600060408486031215613aa957613aa86133c9565b5b600084013567ffffffffffffffff811115613ac757613ac66133ce565b5b613ad386828701613a3a565b93509350506020613ae6868287016138bc565b9150509250925092565b60008060408385031215613b0757613b066133c9565b5b6000613b15858286016134de565b9250506020613b26858286016134de565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b666020836135de565b9150613b7182613b30565b602082019050919050565b60006020820190508181036000830152613b9581613b59565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c0582613674565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c3757613c36613bcb565b5b600182019050919050565b6000604082019050613c57600083018561384e565b613c64602083018461379a565b9392505050565b600081519050613c7a816138a5565b92915050565b600060208284031215613c9657613c956133c9565b5b6000613ca484828501613c6b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cf457607f821691505b602082108103613d0757613d06613cad565b5b50919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613d696025836135de565b9150613d7482613d0d565b604082019050919050565b60006020820190508181036000830152613d9881613d5c565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203360008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dfb6022836135de565b9150613e0682613d9f565b604082019050919050565b60006020820190508181036000830152613e2a81613dee565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b6000613e8d6026836135de565b9150613e9882613e31565b604082019050919050565b60006020820190508181036000830152613ebc81613e80565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3530250000000000000000000000000000000000000000000000000000000000602082015250565b6000613f1f6023836135de565b9150613f2a82613ec3565b604082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613fc27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613f85565b613fcc8683613f85565b95508019841693508086168417925050509392505050565b6000613fff613ffa613ff584613674565b613720565b613674565b9050919050565b6000819050919050565b61401983613fe4565b61402d61402582614006565b848454613f92565b825550505050565b600090565b614042614035565b61404d818484614010565b505050565b5b818110156140715761406660008261403a565b600181019050614053565b5050565b601f8211156140b65761408781613f60565b61409084613f75565b8101602085101561409f578190505b6140b36140ab85613f75565b830182614052565b50505b505050565b600082821c905092915050565b60006140d9600019846008026140bb565b1980831691505092915050565b60006140f283836140c8565b9150826002028217905092915050565b61410c8383613f55565b67ffffffffffffffff811115614125576141246133e9565b5b61412f8254613cdc565b61413a828285614075565b6000601f8311600181146141695760008415614157578287013590505b61416185826140e6565b8655506141c9565b601f19841661417786613f60565b60005b8281101561419f5784890135825560018201915060208501945060208101905061417a565b868310156141bc57848901356141b8601f8916826140c8565b8355505b6001600288020188555050505b50505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061422e6024836135de565b9150614239826141d2565b604082019050919050565b6000602082019050818103600083015261425d81614221565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006142c06022836135de565b91506142cb82614264565b604082019050919050565b600060208201905081810360008301526142ef816142b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143526025836135de565b915061435d826142f6565b604082019050919050565b6000602082019050818103600083015261438181614345565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006143e46023836135de565b91506143ef82614388565b604082019050919050565b60006020820190508181036000830152614413816143d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006144766029836135de565b91506144818261441a565b604082019050919050565b600060208201905081810360008301526144a581614469565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000614508603f836135de565b9150614513826144ac565b604082019050919050565b60006020820190508181036000830152614537816144fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000614574601c836135de565b915061457f8261453e565b602082019050919050565b600060208201905081810360008301526145a381614567565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006146066023836135de565b9150614611826145aa565b604082019050919050565b60006020820190508181036000830152614635816145f9565b9050919050565b600061464782613674565b915061465283613674565b925082820190508082111561466a57614669613bcb565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006146cc6023836135de565b91506146d782614670565b604082019050919050565b600060208201905081810360008301526146fb816146bf565b9050919050565b600061470d82613674565b915061471883613674565b92508282039050818111156147305761472f613bcb565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614792602a836135de565b915061479d82614736565b604082019050919050565b600060208201905081810360008301526147c181614785565b9050919050565b6000815190506147d7816134c7565b92915050565b6000602082840312156147f3576147f26133c9565b5b6000614801848285016147c8565b91505092915050565b6000819050919050565b600061482f61482a6148258461480a565b613720565b613674565b9050919050565b61483f81614814565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61487a816134b5565b82525050565b600061488c8383614871565b60208301905092915050565b6000602082019050919050565b60006148b082614845565b6148ba8185614850565b93506148c583614861565b8060005b838110156148f65781516148dd8882614880565b97506148e883614898565b9250506001810190506148c9565b5085935050505092915050565b600060a082019050614918600083018861379a565b6149256020830187614836565b818103604083015261493781866148a5565b9050614946606083018561384e565b614953608083018461379a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061499782613674565b91506149a283613674565b9250826149b2576149b161495d565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149f3601b836135de565b91506149fe826149bd565b602082019050919050565b60006020820190508181036000830152614a22816149e6565b9050919050565b6000614a3482613674565b9150614a3f83613674565b9250828202614a4d81613674565b91508282048414831517614a6457614a63613bcb565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ac76021836135de565b9150614ad282614a6b565b604082019050919050565b60006020820190508181036000830152614af681614aba565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200963ca6a51712ac4fbef25dc3b4ad15f1b201b3023450db3435f693697eeda2764736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102285760003560e01c80637f2feddc11610123578063c2a5e5c2116100ab578063ea1644d51161006f578063ea1644d5146107d9578063f275f64b14610802578063f2fde38b1461082b578063f87f44b914610854578063fdc9d0f41461087d5761022f565b8063c2a5e5c21461070a578063c3c8cd8014610733578063c492f0461461074a578063dd62ed3e14610773578063e8e81fe4146107b05761022f565b806398a5c315116100f257806398a5c31514610613578063a2a957bb1461063c578063a9059cbb14610665578063a9490cb1146106a2578063bfd79284146106cd5761022f565b80637f2feddc146105555780638da5cb5b146105925780638f9a55c0146105bd57806395d89b41146105e85761022f565b8063313ce567116101b157806370a082311161017557806370a0823114610496578063715018a6146104d357806374010ece146104ea5780637b99a119146105135780637d1db4a51461052a5761022f565b8063313ce567146103d757806349bd5a5e146104025780636b9990531461042d5780636d8aa8f8146104565780636fc3eaec1461047f5761022f565b806318160ddd116101f857806318160ddd146102f057806323b872dd1461031b57806326cd1e30146103585780632fd689e31461038157806330e290e4146103ac5761022f565b8062b8cf2a1461023457806306fdde031461025d578063095ea7b3146102885780631694505e146102c55761022f565b3661022f57005b600080fd5b34801561024057600080fd5b5061025b6004803603810190610256919061358a565b6108a8565b005b34801561026957600080fd5b506102726109d2565b60405161027f9190613652565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa91906136aa565b610a0f565b6040516102bc9190613705565b60405180910390f35b3480156102d157600080fd5b506102da610a2d565b6040516102e7919061377f565b60405180910390f35b3480156102fc57600080fd5b50610305610a53565b60405161031291906137a9565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d91906137c4565b610a63565b60405161034f9190613705565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a91906136aa565b610b3c565b005b34801561038d57600080fd5b50610396610c54565b6040516103a391906137a9565b60405180910390f35b3480156103b857600080fd5b506103c1610c5a565b6040516103ce9190613652565b60405180910390f35b3480156103e357600080fd5b506103ec610ce8565b6040516103f99190613833565b60405180910390f35b34801561040e57600080fd5b50610417610cf1565b604051610424919061385d565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190613878565b610d17565b005b34801561046257600080fd5b5061047d600480360381019061047891906138d1565b610e07565b005b34801561048b57600080fd5b50610494610eb9565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190613878565b610f8a565b6040516104ca91906137a9565b60405180910390f35b3480156104df57600080fd5b506104e8610fdb565b005b3480156104f657600080fd5b50610511600480360381019061050c91906138fe565b61112e565b005b34801561051f57600080fd5b506105286111cd565b005b34801561053657600080fd5b5061053f6112af565b60405161054c91906137a9565b60405180910390f35b34801561056157600080fd5b5061057c60048036038101906105779190613878565b6112b5565b60405161058991906137a9565b60405180910390f35b34801561059e57600080fd5b506105a76112cd565b6040516105b4919061385d565b60405180910390f35b3480156105c957600080fd5b506105d26112f6565b6040516105df91906137a9565b60405180910390f35b3480156105f457600080fd5b506105fd6112fc565b60405161060a9190613652565b60405180910390f35b34801561061f57600080fd5b5061063a600480360381019061063591906138fe565b611339565b005b34801561064857600080fd5b50610663600480360381019061065e919061392b565b611403565b005b34801561067157600080fd5b5061068c600480360381019061068791906136aa565b6115fe565b6040516106999190613705565b60405180910390f35b3480156106ae57600080fd5b506106b761161c565b6040516106c49190613652565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190613878565b6116aa565b6040516107019190613705565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c91906139ed565b6116ca565b005b34801561073f57600080fd5b50610748611775565b005b34801561075657600080fd5b50610771600480360381019061076c9190613a90565b61184e565b005b34801561077f57600080fd5b5061079a60048036038101906107959190613af0565b611988565b6040516107a791906137a9565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906139ed565b611a0f565b005b3480156107e557600080fd5b5061080060048036038101906107fb91906138fe565b611aba565b005b34801561080e57600080fd5b50610829600480360381019061082491906138d1565b611b59565b005b34801561083757600080fd5b50610852600480360381019061084d9190613878565b611c0b565b005b34801561086057600080fd5b5061087b600480360381019061087691906139ed565b611d5d565b005b34801561088957600080fd5b50610892611e08565b60405161089f9190613652565b60405180910390f35b6108b0611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490613b7c565b60405180910390fd5b60005b81518110156109ce5760016010600084848151811061096257610961613b9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109c690613bfa565b915050610940565b5050565b60606040518060400160405280600981526020017f4b454b57204d454d450000000000000000000000000000000000000000000000815250905090565b6000610a23610a1c611e96565b8484611e9e565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610a70848484612067565b610b3184610a7c611e96565b610b2c85604051806060016040528060288152602001614afe60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ae2611e96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ea9092919063ffffffff16565b611e9e565b600190509392505050565b610b44611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc890613b7c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c0c929190613c42565b6020604051808303816000875af1158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f9190613c80565b505050565b601b5481565b60188054610c6790613cdc565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9390613cdc565b8015610ce05780601f10610cb557610100808354040283529160200191610ce0565b820191906000526020600020905b815481529060010190602001808311610cc357829003601f168201915b505050505081565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d1f611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da390613b7c565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e0f611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9390613b7c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610efa611e96565b73ffffffffffffffffffffffffffffffffffffffff161480610f705750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f58611e96565b73ffffffffffffffffffffffffffffffffffffffff16145b610f7957600080fd5b6000479050610f878161294e565b50565b6000610fd4600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ba565b9050919050565b610fe3611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613b7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611136611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90613b7c565b60405180910390fd5b8060198190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661120e611e96565b73ffffffffffffffffffffffffffffffffffffffff1614806112845750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661126c611e96565b73ffffffffffffffffffffffffffffffffffffffff16145b61128d57600080fd5b600061129830610f8a565b90506112a381612a28565b6112ac8161294e565b50565b60195481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b60606040518060400160405280600481526020017f4b454b5700000000000000000000000000000000000000000000000000000000815250905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661137a611e96565b73ffffffffffffffffffffffffffffffffffffffff1614806113f05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113d8611e96565b73ffffffffffffffffffffffffffffffffffffffff16145b6113f957600080fd5b80600b8190555050565b61140b611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90613b7c565b60405180910390fd5b600084101580156114aa575060048411155b6114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090613d7f565b60405180910390fd5b600082101580156114fb5750601e8211155b61153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190613e11565b60405180910390fd5b6000831015801561154c575060048311155b61158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613ea3565b60405180910390fd5b6000811015801561159d575060328111155b6115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d390613f35565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061161261160b611e96565b8484612067565b6001905092915050565b6017805461162990613cdc565b80601f016020809104026020016040519081016040528092919081815260200182805461165590613cdc565b80156116a25780601f10611677576101008083540402835291602001916116a2565b820191906000526020600020905b81548152906001019060200180831161168557829003601f168201915b505050505081565b60106020528060005260406000206000915054906101000a900460ff1681565b6116d2611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690613b7c565b60405180910390fd5b818160189182611770929190614102565b505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117b6611e96565b73ffffffffffffffffffffffffffffffffffffffff16148061182c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611814611e96565b73ffffffffffffffffffffffffffffffffffffffff16145b61183557600080fd5b600061184030610f8a565b905061184b81612a28565b50565b611856611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118da90613b7c565b60405180910390fd5b60005b8383905081101561198257816005600086868581811061190957611908613b9c565b5b905060200201602081019061191e9190613878565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061197a90613bfa565b9150506118e6565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a17611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90613b7c565b60405180910390fd5b818160169182611ab5929190614102565b505050565b611ac2611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4690613b7c565b60405180910390fd5b80601a8190555050565b611b61611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590613b7c565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b611c13611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9790613b7c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d65611e96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de990613b7c565b60405180910390fd5b818160179182611e03929190614102565b505050565b60168054611e1590613cdc565b80601f0160208091040260200160405190810160405280929190818152602001828054611e4190613cdc565b8015611e8e5780601f10611e6357610100808354040283529160200191611e8e565b820191906000526020600020905b815481529060010190602001808311611e7157829003601f168201915b505050505081565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0490614244565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f73906142d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161205a91906137a9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90614368565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213c906143fa565b60405180910390fd5b60008111612188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217f9061448c565b60405180910390fd5b6121906112cd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121fe57506121ce6112cd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125e957601560149054906101000a900460ff1661228d5761221f6112cd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122839061451e565b60405180910390fd5b5b6019548111156122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c99061458a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123765750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac9061461c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461246257601a548161241784610f8a565b612421919061463c565b10612461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612458906146e2565b60405180910390fd5b5b600061246d30610f8a565b90506000601b548210159050601b54821061248857601b5491505b8080156124a0575060158054906101000a900460ff16155b80156124fa5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156125125750601560169054906101000a900460ff165b80156125685750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125be5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125e6576125cc82612a28565b600047905060008111156125e4576125e34761294e565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126905750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127435750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156127425750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561275157600090506128d8565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156127fc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561281457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128bf5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156128d757600a54600c81905550600b54600d819055505b5b6128e484848484612c9f565b50505050565b6000838311158290612932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129299190613652565b60405180910390fd5b50600083856129419190614702565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156129b6573d6000803e3d6000fd5b5050565b6000600654821115612a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f8906147a8565b60405180910390fd5b6000612a0b612ccc565b9050612a208184612cf790919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612a5f57612a5e6133e9565b5b604051908082528060200260200182016040528015612a8d5781602001602082028036833780820191505090505b5090503081600081518110612aa557612aa4613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7091906147dd565b81600181518110612b8457612b83613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612beb30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e9e565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c4f959493929190614903565b600060405180830381600087803b158015612c6957600080fd5b505af1158015612c7d573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612cad57612cac612d41565b5b612cb8848484612d7e565b80612cc657612cc5612f49565b5b50505050565b6000806000612cd9612f5d565b91509150612cf08183612cf790919063ffffffff16565b9250505090565b6000612d3983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fbc565b905092915050565b6000600c54148015612d5557506000600d54145b612d7c57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612d908761301f565b955095509550955095509550612dee86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461308790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e8385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ecf8161312f565b612ed984836131ec565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612f3691906137a9565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612f91670de0b6b3a7640000600654612cf790919063ffffffff16565b821015612faf57600654670de0b6b3a7640000935093505050612fb8565b81819350935050505b9091565b60008083118290613003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffa9190613652565b60405180910390fd5b5060008385613012919061498c565b9050809150509392505050565b600080600080600080600080600061303c8a600c54600d54613226565b925092509250600061304c612ccc565b9050600080600061305f8e8787876132bc565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006130c983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ea565b905092915050565b60008082846130e0919061463c565b905083811015613125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311c90614a09565b60405180910390fd5b8091505092915050565b6000613139612ccc565b90506000613150828461334590919063ffffffff16565b90506131a481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6132018260065461308790919063ffffffff16565b60068190555061321c816007546130d190919063ffffffff16565b6007819055505050565b6000806000806132526064613244888a61334590919063ffffffff16565b612cf790919063ffffffff16565b9050600061327c606461326e888b61334590919063ffffffff16565b612cf790919063ffffffff16565b905060006132a582613297858c61308790919063ffffffff16565b61308790919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132d5858961334590919063ffffffff16565b905060006132ec868961334590919063ffffffff16565b90506000613303878961334590919063ffffffff16565b9050600061332c8261331e858761308790919063ffffffff16565b61308790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361335757600090506133b9565b600082846133659190614a29565b9050828482613374919061498c565b146133b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ab90614add565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613421826133d8565b810181811067ffffffffffffffff821117156134405761343f6133e9565b5b80604052505050565b60006134536133bf565b905061345f8282613418565b919050565b600067ffffffffffffffff82111561347f5761347e6133e9565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134c082613495565b9050919050565b6134d0816134b5565b81146134db57600080fd5b50565b6000813590506134ed816134c7565b92915050565b600061350661350184613464565b613449565b9050808382526020820190506020840283018581111561352957613528613490565b5b835b81811015613552578061353e88826134de565b84526020840193505060208101905061352b565b5050509392505050565b600082601f830112613571576135706133d3565b5b81356135818482602086016134f3565b91505092915050565b6000602082840312156135a05761359f6133c9565b5b600082013567ffffffffffffffff8111156135be576135bd6133ce565b5b6135ca8482850161355c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561360d5780820151818401526020810190506135f2565b60008484015250505050565b6000613624826135d3565b61362e81856135de565b935061363e8185602086016135ef565b613647816133d8565b840191505092915050565b6000602082019050818103600083015261366c8184613619565b905092915050565b6000819050919050565b61368781613674565b811461369257600080fd5b50565b6000813590506136a48161367e565b92915050565b600080604083850312156136c1576136c06133c9565b5b60006136cf858286016134de565b92505060206136e085828601613695565b9150509250929050565b60008115159050919050565b6136ff816136ea565b82525050565b600060208201905061371a60008301846136f6565b92915050565b6000819050919050565b600061374561374061373b84613495565b613720565b613495565b9050919050565b60006137578261372a565b9050919050565b60006137698261374c565b9050919050565b6137798161375e565b82525050565b60006020820190506137946000830184613770565b92915050565b6137a381613674565b82525050565b60006020820190506137be600083018461379a565b92915050565b6000806000606084860312156137dd576137dc6133c9565b5b60006137eb868287016134de565b93505060206137fc868287016134de565b925050604061380d86828701613695565b9150509250925092565b600060ff82169050919050565b61382d81613817565b82525050565b60006020820190506138486000830184613824565b92915050565b613857816134b5565b82525050565b6000602082019050613872600083018461384e565b92915050565b60006020828403121561388e5761388d6133c9565b5b600061389c848285016134de565b91505092915050565b6138ae816136ea565b81146138b957600080fd5b50565b6000813590506138cb816138a5565b92915050565b6000602082840312156138e7576138e66133c9565b5b60006138f5848285016138bc565b91505092915050565b600060208284031215613914576139136133c9565b5b600061392284828501613695565b91505092915050565b60008060008060808587031215613945576139446133c9565b5b600061395387828801613695565b945050602061396487828801613695565b935050604061397587828801613695565b925050606061398687828801613695565b91505092959194509250565b600080fd5b60008083601f8401126139ad576139ac6133d3565b5b8235905067ffffffffffffffff8111156139ca576139c9613992565b5b6020830191508360018202830111156139e6576139e5613490565b5b9250929050565b60008060208385031215613a0457613a036133c9565b5b600083013567ffffffffffffffff811115613a2257613a216133ce565b5b613a2e85828601613997565b92509250509250929050565b60008083601f840112613a5057613a4f6133d3565b5b8235905067ffffffffffffffff811115613a6d57613a6c613992565b5b602083019150836020820283011115613a8957613a88613490565b5b9250929050565b600080600060408486031215613aa957613aa86133c9565b5b600084013567ffffffffffffffff811115613ac757613ac66133ce565b5b613ad386828701613a3a565b93509350506020613ae6868287016138bc565b9150509250925092565b60008060408385031215613b0757613b066133c9565b5b6000613b15858286016134de565b9250506020613b26858286016134de565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b666020836135de565b9150613b7182613b30565b602082019050919050565b60006020820190508181036000830152613b9581613b59565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c0582613674565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c3757613c36613bcb565b5b600182019050919050565b6000604082019050613c57600083018561384e565b613c64602083018461379a565b9392505050565b600081519050613c7a816138a5565b92915050565b600060208284031215613c9657613c956133c9565b5b6000613ca484828501613c6b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cf457607f821691505b602082108103613d0757613d06613cad565b5b50919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613d696025836135de565b9150613d7482613d0d565b604082019050919050565b60006020820190508181036000830152613d9881613d5c565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203360008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dfb6022836135de565b9150613e0682613d9f565b604082019050919050565b60006020820190508181036000830152613e2a81613dee565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b6000613e8d6026836135de565b9150613e9882613e31565b604082019050919050565b60006020820190508181036000830152613ebc81613e80565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3530250000000000000000000000000000000000000000000000000000000000602082015250565b6000613f1f6023836135de565b9150613f2a82613ec3565b604082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613fc27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613f85565b613fcc8683613f85565b95508019841693508086168417925050509392505050565b6000613fff613ffa613ff584613674565b613720565b613674565b9050919050565b6000819050919050565b61401983613fe4565b61402d61402582614006565b848454613f92565b825550505050565b600090565b614042614035565b61404d818484614010565b505050565b5b818110156140715761406660008261403a565b600181019050614053565b5050565b601f8211156140b65761408781613f60565b61409084613f75565b8101602085101561409f578190505b6140b36140ab85613f75565b830182614052565b50505b505050565b600082821c905092915050565b60006140d9600019846008026140bb565b1980831691505092915050565b60006140f283836140c8565b9150826002028217905092915050565b61410c8383613f55565b67ffffffffffffffff811115614125576141246133e9565b5b61412f8254613cdc565b61413a828285614075565b6000601f8311600181146141695760008415614157578287013590505b61416185826140e6565b8655506141c9565b601f19841661417786613f60565b60005b8281101561419f5784890135825560018201915060208501945060208101905061417a565b868310156141bc57848901356141b8601f8916826140c8565b8355505b6001600288020188555050505b50505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061422e6024836135de565b9150614239826141d2565b604082019050919050565b6000602082019050818103600083015261425d81614221565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006142c06022836135de565b91506142cb82614264565b604082019050919050565b600060208201905081810360008301526142ef816142b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143526025836135de565b915061435d826142f6565b604082019050919050565b6000602082019050818103600083015261438181614345565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006143e46023836135de565b91506143ef82614388565b604082019050919050565b60006020820190508181036000830152614413816143d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006144766029836135de565b91506144818261441a565b604082019050919050565b600060208201905081810360008301526144a581614469565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000614508603f836135de565b9150614513826144ac565b604082019050919050565b60006020820190508181036000830152614537816144fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000614574601c836135de565b915061457f8261453e565b602082019050919050565b600060208201905081810360008301526145a381614567565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006146066023836135de565b9150614611826145aa565b604082019050919050565b60006020820190508181036000830152614635816145f9565b9050919050565b600061464782613674565b915061465283613674565b925082820190508082111561466a57614669613bcb565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006146cc6023836135de565b91506146d782614670565b604082019050919050565b600060208201905081810360008301526146fb816146bf565b9050919050565b600061470d82613674565b915061471883613674565b92508282039050818111156147305761472f613bcb565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614792602a836135de565b915061479d82614736565b604082019050919050565b600060208201905081810360008301526147c181614785565b9050919050565b6000815190506147d7816134c7565b92915050565b6000602082840312156147f3576147f26133c9565b5b6000614801848285016147c8565b91505092915050565b6000819050919050565b600061482f61482a6148258461480a565b613720565b613674565b9050919050565b61483f81614814565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61487a816134b5565b82525050565b600061488c8383614871565b60208301905092915050565b6000602082019050919050565b60006148b082614845565b6148ba8185614850565b93506148c583614861565b8060005b838110156148f65781516148dd8882614880565b97506148e883614898565b9250506001810190506148c9565b5085935050505092915050565b600060a082019050614918600083018861379a565b6149256020830187614836565b818103604083015261493781866148a5565b9050614946606083018561384e565b614953608083018461379a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061499782613674565b91506149a283613674565b9250826149b2576149b161495d565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149f3601b836135de565b91506149fe826149bd565b602082019050919050565b60006020820190508181036000830152614a22816149e6565b9050919050565b6000614a3482613674565b9150614a3f83613674565b9250828202614a4d81613674565b91508282048414831517614a6457614a63613bcb565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ac76021836135de565b9150614ad282614a6b565b604082019050919050565b60006020820190508181036000830152614af681614aba565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200963ca6a51712ac4fbef25dc3b4ad15f1b201b3023450db3435f693697eeda2764736f6c63430008120033
Deployed Bytecode Sourcemap
4083:15008:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13292:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6750:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7688:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5428:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7036:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7890:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18582:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5897:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5728:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6944:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5476:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13470:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17996:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12758:235;;;;;;;;;;;;;:::i;:::-;;7140:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1679:148;;;;;;;;;;;;;:::i;:::-;;18137:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13001:281;;;;;;;;;;;;;:::i;:::-;;5787:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5167:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1462:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5841:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6848:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17725:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16979:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7287:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5683:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5129:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18478:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12513:236;;;;;;;;;;;;;:::i;:::-;;18854:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7495:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18266:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18730:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12398:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1836:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18374:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5633:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13292:169;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13368:9:::1;13363:91;13387:5;:12;13383:1;:16;13363:91;;;13438:4;13421;:14;13426:5;13432:1;13426:8;;;;;;;;:::i;:::-;;;;;;;;13421:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13401:3;;;;;:::i;:::-;;;;13363:91;;;;13292:169:::0;:::o;6750:83::-;6787:13;6820:5;;;;;;;;;;;;;;;;;6813:12;;6750:83;:::o;7688:193::-;7790:4;7812:39;7821:12;:10;:12::i;:::-;7835:7;7844:6;7812:8;:39::i;:::-;7869:4;7862:11;;7688:193;;;;:::o;5428:41::-;;;;;;;;;;;;;:::o;7036:95::-;7089:7;4621:18;7109:14;;7036:95;:::o;7890:446::-;8022:4;8039:36;8049:6;8057:9;8068:6;8039:9;:36::i;:::-;8086:220;8109:6;8130:12;:10;:12::i;:::-;8157:138;8213:6;8157:138;;;;;;;;;;;;;;;;;:11;:19;8169:6;8157:19;;;;;;;;;;;;;;;:33;8177:12;:10;:12::i;:::-;8157:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8086:8;:220::i;:::-;8324:4;8317:11;;7890:446;;;;;:::o;18582:137::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18675:6:::1;18668:23;;;18692:10;18703:7;18668:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18582:137:::0;;:::o;5897:46::-;;;;:::o;5728:50::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6944:83::-;6985:5;4297:1;7003:16;;6944:83;:::o;5476:28::-;;;;;;;;;;;;;:::o;13470:92::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13549:5:::1;13534:4;:12;13539:6;13534:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13470:92:::0;:::o;17996:101::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18077:12:::1;18063:11;;:26;;;;;;;;;;;;;;;;;;17996:101:::0;:::o;12758:235::-;12824:19;;;;;;;;;;;12808:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12863:17;;;;;;;;;;;12847:33;;:12;:10;:12::i;:::-;:33;;;12808:72;12800:81;;;;;;12892:26;12921:21;12892:50;;12953:32;12966:18;12953:12;:32::i;:::-;12789:204;12758:235::o;7140:138::-;7206:7;7233:37;7253:7;:16;7261:7;7253:16;;;;;;;;;;;;;;;;7233:19;:37::i;:::-;7226:44;;7140:138;;;:::o;1679:148::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1786:1:::1;1749:40;;1770:6;::::0;::::1;;;;;;;;1749:40;;;;;;;;;;;;1817:1;1800:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1679:148::o:0;18137:121::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18229:11:::1;18214:12;:26;;;;18137:121:::0;:::o;13001:281::-;13074:19;;;;;;;;;;;13058:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13113:17;;;;;;;;;;;13097:33;;:12;:10;:12::i;:::-;:33;;;13058:72;13050:81;;;;;;13142:23;13168:24;13186:4;13168:9;:24::i;:::-;13142:50;;13203:33;13220:15;13203:16;:33::i;:::-;13247:29;13260:15;13247:12;:29::i;:::-;13039:243;13001:281::o;5787:46::-;;;;:::o;5167:43::-;;;;;;;;;;;;;;;;;:::o;1462:79::-;1500:7;1527:6;;;;;;;;;;;1520:13;;1462:79;:::o;5841:48::-;;;;:::o;6848:87::-;6887:13;6920:7;;;;;;;;;;;;;;;;;6913:14;;6848:87;:::o;17725:218::-;17833:19;;;;;;;;;;;17817:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;17872:17;;;;;;;;;;;17856:33;;:12;:10;:12::i;:::-;:33;;;17817:72;17809:81;;;;;;17917:18;17901:13;:34;;;;17725:218;:::o;16979:693::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17138:1:::1;17121:13;:18;;:40;;;;;17160:1;17143:13;:18;;17121:40;17113:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17237:1;17222:11;:16;;:37;;;;;17257:2;17242:11;:17;;17222:37;17214:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;17335:1;17317:14;:19;;:42;;;;;17358:1;17340:14;:19;;17317:42;17309:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;17437:1;17421:12;:17;;:39;;;;;17458:2;17442:12;:18;;17421:39;17413:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17530:13;17513:14;:30;;;;17572:14;17554:15;:32;;;;17612:11;17597:12;:26;;;;17650:12;17634:13;:28;;;;16979:693:::0;;;;:::o;7287:199::-;7392:4;7414:42;7424:12;:10;:12::i;:::-;7438:9;7449:6;7414:9;:42::i;:::-;7474:4;7467:11;;7287:199;;;;:::o;5683:38::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5129:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;18478:96::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18558:8:::1;;18548:7;:18;;;;;;;:::i;:::-;;18478:96:::0;;:::o;12513:236::-;12579:19;;;;;;;;;;;12563:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12618:17;;;;;;;;;;;12602:33;;:12;:10;:12::i;:::-;:33;;;12563:72;12555:81;;;;;;12647:23;12673:24;12691:4;12673:9;:24::i;:::-;12647:50;;12708:33;12725:15;12708:16;:33::i;:::-;12544:205;12513:236::o;18854:234::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18971:9:::1;18967:114;18990:8;;:15;;18986:1;:19;18967:114;;;19061:8;19027:18;:31;19046:8;;19055:1;19046:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19027:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;19007:3;;;;;:::i;:::-;;;;18967:114;;;;18854:234:::0;;;:::o;7495:184::-;7612:7;7644:11;:18;7656:5;7644:18;;;;;;;;;;;;;;;:27;7663:7;7644:27;;;;;;;;;;;;;;;;7637:34;;7495:184;;;;:::o;18266:100::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18349:9:::1;;18338:8;:20;;;;;;;:::i;:::-;;18266:100:::0;;:::o;18730:115::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18824:13:::1;18807:14;:30;;;;18730:115:::0;:::o;12398:104::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12482:12:::1;12468:11;;:26;;;;;;;;;;;;;;;;;;12398:104:::0;:::o;1836:160::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1951:8:::1;1922:38;;1943:6;::::0;::::1;;;;;;;;1922:38;;;;;;;;;;;;1980:8;1971:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1836:160:::0;:::o;18374:96::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18454:8:::1;;18444:7;:18;;;;;;;:::i;:::-;;18374:96:::0;;:::o;5633:43::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;228:98::-;281:7;308:10;301:17;;228:98;:::o;9034:369::-;9178:1;9161:19;;:5;:19;;;9153:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9259:1;9240:21;;:7;:21;;;9232:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9341:6;9311:11;:18;9323:5;9311:18;;;;;;;;;;;;;;;:27;9330:7;9311:27;;;;;;;;;;;;;;;:36;;;;9379:7;9363:32;;9372:5;9363:32;;;9388:6;9363:32;;;;;;:::i;:::-;;;;;;;;9034:369;;;:::o;9412:2367::-;9550:1;9534:18;;:4;:18;;;9526:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9627:1;9613:16;;:2;:16;;;9605:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9697:1;9688:6;:10;9680:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9770:7;:5;:7::i;:::-;9762:15;;:4;:15;;;;:32;;;;;9787:7;:5;:7::i;:::-;9781:13;;:2;:13;;;;9762:32;9758:1289;;;9852:11;;;;;;;;;;;9847:144;;9900:7;:5;:7::i;:::-;9892:15;;:4;:15;;;9884:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9847:144;10039:12;;10029:6;:22;;10021:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10108:4;:10;10113:4;10108:10;;;;;;;;;;;;;;;;;;;;;;;;;10107:11;:24;;;;;10123:4;:8;10128:2;10123:8;;;;;;;;;;;;;;;;;;;;;;;;;10122:9;10107:24;10099:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10198:13;;;;;;;;;;;10192:19;;:2;:19;;;10189:146;;10265:14;;10256:6;10240:13;10250:2;10240:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10232:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10189:146;10349:28;10380:24;10398:4;10380:9;:24::i;:::-;10349:55;;10419:12;10458:19;;10434:20;:43;;10419:58;;10522:19;;10498:20;:43;10495:138;;10598:19;;10575:42;;10495:138;10654:7;:18;;;;;10666:6;;;;;;;;;;10665:7;10654:18;:43;;;;;10684:13;;;;;;;;;;;10676:21;;:4;:21;;;;10654:43;:58;;;;;10701:11;;;;;;;;;;;10654:58;:87;;;;;10717:18;:24;10736:4;10717:24;;;;;;;;;;;;;;;;;;;;;;;;;10716:25;10654:87;:114;;;;;10746:18;:22;10765:2;10746:22;;;;;;;;;;;;;;;;;;;;;;;;;10745:23;10654:114;10650:386;;;10789:38;10806:20;10789:16;:38::i;:::-;10846:26;10875:21;10846:50;;10940:1;10919:18;:22;10915:106;;;10966:35;10979:21;10966:12;:35::i;:::-;10915:106;10770:266;10650:386;9796:1251;;9758:1289;11060:12;11075:4;11060:19;;11125:18;:24;11144:4;11125:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11153:18;:22;11172:2;11153:22;;;;;;;;;;;;;;;;;;;;;;;;;11125:50;11124:102;;;;11189:13;;;;;;;;;;;11181:21;;:4;:21;;;;:44;;;;;11212:13;;;;;;;;;;;11206:19;;:2;:19;;;;11181:44;11124:102;11120:597;;;11253:5;11243:15;;11120:597;;;11337:13;;;;;;;;;;;11329:21;;:4;:21;;;:55;;;;;11368:15;;;;;;;;;;;11354:30;;:2;:30;;;;11329:55;11326:162;;;11417:14;;11405:9;:26;;;;11460:12;;11450:7;:22;;;;11326:162;11548:13;;;;;;;;;;;11542:19;;:2;:19;;;:55;;;;;11581:15;;;;;;;;;;;11565:32;;:4;:32;;;;11542:55;11538:165;;;11630:15;;11618:9;:27;;;;11674:13;;11664:7;:23;;;;11538:165;11120:597;11730:41;11745:4;11751:2;11755:6;11763:7;11730:14;:41::i;:::-;9515:2264;9412:2367;;;:::o;2352:224::-;2472:7;2505:1;2500;:6;;2508:12;2492:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2532:9;2548:1;2544;:5;;;;:::i;:::-;2532:17;;2567:1;2560:8;;;2352:224;;;;;:::o;12280:109::-;12337:17;;;;;;;;;;;:26;;:34;12364:6;12337:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12280:109;:::o;8345:323::-;8440:7;8498;;8487;:18;;8465:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8586:19;8608:10;:8;:10::i;:::-;8586:32;;8636:24;8648:11;8636:7;:11;;:24;;;;:::i;:::-;8629:31;;;8345:323;;;:::o;11788:483::-;6047:4;6038:6;;:13;;;;;;;;;;;;;;;;;;11866:21:::1;11904:1;11890:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11866:40;;11935:4;11917;11922:1;11917:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11961:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11951:4;11956:1;11951:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11994:62;12011:4;12026:15;;;;;;;;;;;12044:11;11994:8;:62::i;:::-;12067:15;;;;;;;;;;;:66;;;12148:11;12174:1;12190:4;12217;12237:15;12067:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11855:416;6083:5:::0;6074:6;;:14;;;;;;;;;;;;;;;;;;11788:483;:::o;13571:282::-;13727:7;13722:28;;13736:14;:12;:14::i;:::-;13722:28;13761:44;13779:6;13787:9;13798:6;13761:17;:44::i;:::-;13821:7;13816:29;;13830:15;:13;:15::i;:::-;13816:29;13571:282;;;;:::o;16540:164::-;16582:7;16603:15;16620;16639:19;:17;:19::i;:::-;16602:56;;;;16676:20;16688:7;16676;:11;;:20;;;;:::i;:::-;16669:27;;;;16540:164;:::o;2834:132::-;2892:7;2919:39;2923:1;2926;2919:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2912:46;;2834:132;;;;:::o;8678:221::-;8738:1;8725:9;;:14;:30;;;;;8754:1;8743:7;;:12;8725:30;8757:7;8721:43;8797:9;;8777:17;:29;;;;8835:7;;8817:15;:25;;;;8868:1;8856:9;:13;;;;8890:1;8880:7;:11;;;;8678:221;:::o;13862:610::-;14009:15;14039:23;14077:12;14104:23;14142:12;14169:13;14196:19;14207:7;14196:10;:19::i;:::-;13994:221;;;;;;;;;;;;14244:28;14264:7;14244;:15;14252:6;14244:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14226:7;:15;14234:6;14226:15;;;;;;;;;;;;;;;:46;;;;14304:39;14327:15;14304:7;:18;14312:9;14304:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14283:7;:18;14291:9;14283:18;;;;;;;;;;;;;;;:60;;;;14354:16;14364:5;14354:9;:16::i;:::-;14381:23;14393:4;14399;14381:11;:23::i;:::-;14437:9;14420:44;;14429:6;14420:44;;;14448:15;14420:44;;;;;;:::i;:::-;;;;;;;;13983:489;;;;;;13862:610;;;:::o;8908:117::-;8964:17;;8952:9;:29;;;;9002:15;;8992:7;:25;;;;8908:117::o;16713:257::-;16764:7;16773;16793:15;16811:7;;16793:25;;16829:15;4621:18;16829:25;;16879:20;4621:18;16879:7;;:11;;:20;;;;:::i;:::-;16869:7;:30;16865:61;;;16909:7;;4621:18;16901:25;;;;;;;;16865:61;16945:7;16954;16937:25;;;;;;16713:257;;;:::o;2972:223::-;3092:7;3124:1;3120;:5;3127:12;3112:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3151:9;3167:1;3163;:5;;;;:::i;:::-;3151:17;;3186:1;3179:8;;;2972:223;;;;;:::o;14895:615::-;14995:7;15017;15039;15061;15083;15105;15141:23;15166:12;15180:13;15210:40;15222:7;15231:9;;15242:7;;15210:11;:40::i;:::-;15140:110;;;;;;15261:19;15283:10;:8;:10::i;:::-;15261:32;;15305:15;15322:23;15347:12;15376:46;15388:7;15397:4;15403:5;15410:11;15376;:46::i;:::-;15304:118;;;;;;15441:7;15450:15;15467:4;15473:15;15490:4;15496:5;15433:69;;;;;;;;;;;;;;;;;;;14895:615;;;;;;;:::o;2210:136::-;2268:7;2295:43;2299:1;2302;2295:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2288:50;;2210:136;;;;:::o;2025:179::-;2083:7;2103:9;2119:1;2115;:5;;;;:::i;:::-;2103:17;;2144:1;2139;:6;;2131:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2195:1;2188:8;;;2025:179;;;;:::o;14481:211::-;14534:19;14556:10;:8;:10::i;:::-;14534:32;;14577:13;14593:22;14603:11;14593:5;:9;;:22;;;;:::i;:::-;14577:38;;14651:33;14678:5;14651:7;:22;14667:4;14651:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14626:7;:22;14642:4;14626:22;;;;;;;;;;;;;;;:58;;;;14523:169;;14481:211;:::o;14701:147::-;14779:17;14791:4;14779:7;;:11;;:17;;;;:::i;:::-;14769:7;:27;;;;14820:20;14835:4;14820:10;;:14;;:20;;;;:::i;:::-;14807:10;:33;;;;14701:147;;:::o;15519:469::-;15688:7;15710;15732;15767:12;15782:30;15808:3;15782:21;15794:8;15782:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15767:45;;15823:13;15839:28;15863:3;15839:19;15851:6;15839:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15823:44;;15878:23;15904:28;15926:5;15904:17;15916:4;15904:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15878:54;;15951:15;15968:4;15974:5;15943:37;;;;;;;;;15519:469;;;;;;;:::o;15997:534::-;16191:7;16213;16235;16270:15;16288:24;16300:11;16288:7;:11;;:24;;;;:::i;:::-;16270:42;;16323:12;16338:21;16347:11;16338:4;:8;;:21;;;;:::i;:::-;16323:36;;16370:13;16386:22;16396:11;16386:5;:9;;:22;;;;:::i;:::-;16370:38;;16419:23;16445:28;16467:5;16445:17;16457:4;16445:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16419:54;;16492:7;16501:15;16518:4;16484:39;;;;;;;;;;15997:534;;;;;;;;:::o;2582:246::-;2640:7;2669:1;2664;:6;2660:47;;2694:1;2687:8;;;;2660:47;2717:9;2733:1;2729;:5;;;;:::i;:::-;2717:17;;2762:1;2757;2753;:5;;;;:::i;:::-;:10;2745:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2819:1;2812:8;;;2582:246;;;;;:::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:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:117::-;11160:1;11157;11150:12;11188:553;11246:8;11256:6;11306:3;11299:4;11291:6;11287:17;11283:27;11273:122;;11314:79;;:::i;:::-;11273:122;11427:6;11414:20;11404:30;;11457:18;11449:6;11446:30;11443:117;;;11479:79;;:::i;:::-;11443:117;11593:4;11585:6;11581:17;11569:29;;11647:3;11639:4;11631:6;11627:17;11617:8;11613:32;11610:41;11607:128;;;11654:79;;:::i;:::-;11607:128;11188:553;;;;;:::o;11747:529::-;11818:6;11826;11875:2;11863:9;11854:7;11850:23;11846:32;11843:119;;;11881:79;;:::i;:::-;11843:119;12029:1;12018:9;12014:17;12001:31;12059:18;12051:6;12048:30;12045:117;;;12081:79;;:::i;:::-;12045:117;12194:65;12251:7;12242:6;12231:9;12227:22;12194:65;:::i;:::-;12176:83;;;;11972:297;11747:529;;;;;:::o;12299:568::-;12372:8;12382:6;12432:3;12425:4;12417:6;12413:17;12409:27;12399:122;;12440:79;;:::i;:::-;12399:122;12553:6;12540:20;12530:30;;12583:18;12575:6;12572:30;12569:117;;;12605:79;;:::i;:::-;12569:117;12719:4;12711:6;12707:17;12695:29;;12773:3;12765:4;12757:6;12753:17;12743:8;12739:32;12736:41;12733:128;;;12780:79;;:::i;:::-;12733:128;12299:568;;;;;:::o;12873:698::-;12965:6;12973;12981;13030:2;13018:9;13009:7;13005:23;13001:32;12998:119;;;13036:79;;:::i;:::-;12998:119;13184:1;13173:9;13169:17;13156:31;13214:18;13206:6;13203:30;13200:117;;;13236:79;;:::i;:::-;13200:117;13349:80;13421:7;13412:6;13401:9;13397:22;13349:80;:::i;:::-;13331:98;;;;13127:312;13478:2;13504:50;13546:7;13537:6;13526:9;13522:22;13504:50;:::i;:::-;13494:60;;13449:115;12873:698;;;;;:::o;13577:474::-;13645:6;13653;13702:2;13690:9;13681:7;13677:23;13673:32;13670:119;;;13708:79;;:::i;:::-;13670:119;13828:1;13853:53;13898:7;13889:6;13878:9;13874:22;13853:53;:::i;:::-;13843:63;;13799:117;13955:2;13981:53;14026:7;14017:6;14006:9;14002:22;13981:53;:::i;:::-;13971:63;;13926:118;13577:474;;;;;:::o;14057:182::-;14197:34;14193:1;14185:6;14181:14;14174:58;14057:182;:::o;14245:366::-;14387:3;14408:67;14472:2;14467:3;14408:67;:::i;:::-;14401:74;;14484:93;14573:3;14484:93;:::i;:::-;14602:2;14597:3;14593:12;14586:19;;14245:366;;;:::o;14617:419::-;14783:4;14821:2;14810:9;14806:18;14798:26;;14870:9;14864:4;14860:20;14856:1;14845:9;14841:17;14834:47;14898:131;15024:4;14898:131;:::i;:::-;14890:139;;14617:419;;;:::o;15042:180::-;15090:77;15087:1;15080:88;15187:4;15184:1;15177:15;15211:4;15208:1;15201:15;15228:180;15276:77;15273:1;15266:88;15373:4;15370:1;15363:15;15397:4;15394:1;15387:15;15414:233;15453:3;15476:24;15494:5;15476:24;:::i;:::-;15467:33;;15522:66;15515:5;15512:77;15509:103;;15592:18;;:::i;:::-;15509:103;15639:1;15632:5;15628:13;15621:20;;15414:233;;;:::o;15653:332::-;15774:4;15812:2;15801:9;15797:18;15789:26;;15825:71;15893:1;15882:9;15878:17;15869:6;15825:71;:::i;:::-;15906:72;15974:2;15963:9;15959:18;15950:6;15906:72;:::i;:::-;15653:332;;;;;:::o;15991:137::-;16045:5;16076:6;16070:13;16061:22;;16092:30;16116:5;16092:30;:::i;:::-;15991:137;;;;:::o;16134:345::-;16201:6;16250:2;16238:9;16229:7;16225:23;16221:32;16218:119;;;16256:79;;:::i;:::-;16218:119;16376:1;16401:61;16454:7;16445:6;16434:9;16430:22;16401:61;:::i;:::-;16391:71;;16347:125;16134:345;;;;:::o;16485:180::-;16533:77;16530:1;16523:88;16630:4;16627:1;16620:15;16654:4;16651:1;16644:15;16671:320;16715:6;16752:1;16746:4;16742:12;16732:22;;16799:1;16793:4;16789:12;16820:18;16810:81;;16876:4;16868:6;16864:17;16854:27;;16810:81;16938:2;16930:6;16927:14;16907:18;16904:38;16901:84;;16957:18;;:::i;:::-;16901:84;16722:269;16671:320;;;:::o;16997:224::-;17137:34;17133:1;17125:6;17121:14;17114:58;17206:7;17201:2;17193:6;17189:15;17182:32;16997:224;:::o;17227:366::-;17369:3;17390:67;17454:2;17449:3;17390:67;:::i;:::-;17383:74;;17466:93;17555:3;17466:93;:::i;:::-;17584:2;17579:3;17575:12;17568:19;;17227:366;;;:::o;17599:419::-;17765:4;17803:2;17792:9;17788:18;17780:26;;17852:9;17846:4;17842:20;17838:1;17827:9;17823:17;17816:47;17880:131;18006:4;17880:131;:::i;:::-;17872:139;;17599:419;;;:::o;18024:221::-;18164:34;18160:1;18152:6;18148:14;18141:58;18233:4;18228:2;18220:6;18216:15;18209:29;18024:221;:::o;18251:366::-;18393:3;18414:67;18478:2;18473:3;18414:67;:::i;:::-;18407:74;;18490:93;18579:3;18490:93;:::i;:::-;18608:2;18603:3;18599:12;18592:19;;18251:366;;;:::o;18623:419::-;18789:4;18827:2;18816:9;18812:18;18804:26;;18876:9;18870:4;18866:20;18862:1;18851:9;18847:17;18840:47;18904:131;19030:4;18904:131;:::i;:::-;18896:139;;18623:419;;;:::o;19048:225::-;19188:34;19184:1;19176:6;19172:14;19165:58;19257:8;19252:2;19244:6;19240:15;19233:33;19048:225;:::o;19279:366::-;19421:3;19442:67;19506:2;19501:3;19442:67;:::i;:::-;19435:74;;19518:93;19607:3;19518:93;:::i;:::-;19636:2;19631:3;19627:12;19620:19;;19279:366;;;:::o;19651:419::-;19817:4;19855:2;19844:9;19840:18;19832:26;;19904:9;19898:4;19894:20;19890:1;19879:9;19875:17;19868:47;19932:131;20058:4;19932:131;:::i;:::-;19924:139;;19651:419;;;:::o;20076:222::-;20216:34;20212:1;20204:6;20200:14;20193:58;20285:5;20280:2;20272:6;20268:15;20261:30;20076:222;:::o;20304:366::-;20446:3;20467:67;20531:2;20526:3;20467:67;:::i;:::-;20460:74;;20543:93;20632:3;20543:93;:::i;:::-;20661:2;20656:3;20652:12;20645:19;;20304:366;;;:::o;20676:419::-;20842:4;20880:2;20869:9;20865:18;20857:26;;20929:9;20923:4;20919:20;20915:1;20904:9;20900:17;20893:47;20957:131;21083:4;20957:131;:::i;:::-;20949:139;;20676:419;;;:::o;21101:97::-;21160:6;21188:3;21178:13;;21101:97;;;;:::o;21204:141::-;21253:4;21276:3;21268:11;;21299:3;21296:1;21289:14;21333:4;21330:1;21320:18;21312:26;;21204:141;;;:::o;21351:93::-;21388:6;21435:2;21430;21423:5;21419:14;21415:23;21405:33;;21351:93;;;:::o;21450:107::-;21494:8;21544:5;21538:4;21534:16;21513:37;;21450:107;;;;:::o;21563:393::-;21632:6;21682:1;21670:10;21666:18;21705:97;21735:66;21724:9;21705:97;:::i;:::-;21823:39;21853:8;21842:9;21823:39;:::i;:::-;21811:51;;21895:4;21891:9;21884:5;21880:21;21871:30;;21944:4;21934:8;21930:19;21923:5;21920:30;21910:40;;21639:317;;21563:393;;;;;:::o;21962:142::-;22012:9;22045:53;22063:34;22072:24;22090:5;22072:24;:::i;:::-;22063:34;:::i;:::-;22045:53;:::i;:::-;22032:66;;21962:142;;;:::o;22110:75::-;22153:3;22174:5;22167:12;;22110:75;;;:::o;22191:269::-;22301:39;22332:7;22301:39;:::i;:::-;22362:91;22411:41;22435:16;22411:41;:::i;:::-;22403:6;22396:4;22390:11;22362:91;:::i;:::-;22356:4;22349:105;22267:193;22191:269;;;:::o;22466:73::-;22511:3;22466:73;:::o;22545:189::-;22622:32;;:::i;:::-;22663:65;22721:6;22713;22707:4;22663:65;:::i;:::-;22598:136;22545:189;;:::o;22740:186::-;22800:120;22817:3;22810:5;22807:14;22800:120;;;22871:39;22908:1;22901:5;22871:39;:::i;:::-;22844:1;22837:5;22833:13;22824:22;;22800:120;;;22740:186;;:::o;22932:543::-;23033:2;23028:3;23025:11;23022:446;;;23067:38;23099:5;23067:38;:::i;:::-;23151:29;23169:10;23151:29;:::i;:::-;23141:8;23137:44;23334:2;23322:10;23319:18;23316:49;;;23355:8;23340:23;;23316:49;23378:80;23434:22;23452:3;23434:22;:::i;:::-;23424:8;23420:37;23407:11;23378:80;:::i;:::-;23037:431;;23022:446;22932:543;;;:::o;23481:117::-;23535:8;23585:5;23579:4;23575:16;23554:37;;23481:117;;;;:::o;23604:169::-;23648:6;23681:51;23729:1;23725:6;23717:5;23714:1;23710:13;23681:51;:::i;:::-;23677:56;23762:4;23756;23752:15;23742:25;;23655:118;23604:169;;;;:::o;23778:295::-;23854:4;24000:29;24025:3;24019:4;24000:29;:::i;:::-;23992:37;;24062:3;24059:1;24055:11;24049:4;24046:21;24038:29;;23778:295;;;;:::o;24078:1403::-;24202:44;24242:3;24237;24202:44;:::i;:::-;24311:18;24303:6;24300:30;24297:56;;;24333:18;;:::i;:::-;24297:56;24377:38;24409:4;24403:11;24377:38;:::i;:::-;24462:67;24522:6;24514;24508:4;24462:67;:::i;:::-;24556:1;24585:2;24577:6;24574:14;24602:1;24597:632;;;;25273:1;25290:6;25287:84;;;25346:9;25341:3;25337:19;25324:33;25315:42;;25287:84;25397:67;25457:6;25450:5;25397:67;:::i;:::-;25391:4;25384:81;25246:229;24567:908;;24597:632;24649:4;24645:9;24637:6;24633:22;24683:37;24715:4;24683:37;:::i;:::-;24742:1;24756:215;24770:7;24767:1;24764:14;24756:215;;;24856:9;24851:3;24847:19;24834:33;24826:6;24819:49;24907:1;24899:6;24895:14;24885:24;;24954:2;24943:9;24939:18;24926:31;;24793:4;24790:1;24786:12;24781:17;;24756:215;;;24999:6;24990:7;24987:19;24984:186;;;25064:9;25059:3;25055:19;25042:33;25107:48;25149:4;25141:6;25137:17;25126:9;25107:48;:::i;:::-;25099:6;25092:64;25007:163;24984:186;25216:1;25212;25204:6;25200:14;25196:22;25190:4;25183:36;24604:625;;;24567:908;;24177:1304;;;24078:1403;;;:::o;25487:223::-;25627:34;25623:1;25615:6;25611:14;25604:58;25696:6;25691:2;25683:6;25679:15;25672:31;25487:223;:::o;25716:366::-;25858:3;25879:67;25943:2;25938:3;25879:67;:::i;:::-;25872:74;;25955:93;26044:3;25955:93;:::i;:::-;26073:2;26068:3;26064:12;26057:19;;25716:366;;;:::o;26088:419::-;26254:4;26292:2;26281:9;26277:18;26269:26;;26341:9;26335:4;26331:20;26327:1;26316:9;26312:17;26305:47;26369:131;26495:4;26369:131;:::i;:::-;26361:139;;26088:419;;;:::o;26513:221::-;26653:34;26649:1;26641:6;26637:14;26630:58;26722:4;26717:2;26709:6;26705:15;26698:29;26513:221;:::o;26740:366::-;26882:3;26903:67;26967:2;26962:3;26903:67;:::i;:::-;26896:74;;26979:93;27068:3;26979:93;:::i;:::-;27097:2;27092:3;27088:12;27081:19;;26740:366;;;:::o;27112:419::-;27278:4;27316:2;27305:9;27301:18;27293:26;;27365:9;27359:4;27355:20;27351:1;27340:9;27336:17;27329:47;27393:131;27519:4;27393:131;:::i;:::-;27385:139;;27112:419;;;:::o;27537:224::-;27677:34;27673:1;27665:6;27661:14;27654:58;27746:7;27741:2;27733:6;27729:15;27722:32;27537:224;:::o;27767:366::-;27909:3;27930:67;27994:2;27989:3;27930:67;:::i;:::-;27923:74;;28006:93;28095:3;28006:93;:::i;:::-;28124:2;28119:3;28115:12;28108:19;;27767:366;;;:::o;28139:419::-;28305:4;28343:2;28332:9;28328:18;28320:26;;28392:9;28386:4;28382:20;28378:1;28367:9;28363:17;28356:47;28420:131;28546:4;28420:131;:::i;:::-;28412:139;;28139:419;;;:::o;28564:222::-;28704:34;28700:1;28692:6;28688:14;28681:58;28773:5;28768:2;28760:6;28756:15;28749:30;28564:222;:::o;28792:366::-;28934:3;28955:67;29019:2;29014:3;28955:67;:::i;:::-;28948:74;;29031:93;29120:3;29031:93;:::i;:::-;29149:2;29144:3;29140:12;29133:19;;28792:366;;;:::o;29164:419::-;29330:4;29368:2;29357:9;29353:18;29345:26;;29417:9;29411:4;29407:20;29403:1;29392:9;29388:17;29381:47;29445:131;29571:4;29445:131;:::i;:::-;29437:139;;29164:419;;;:::o;29589:228::-;29729:34;29725:1;29717:6;29713:14;29706:58;29798:11;29793:2;29785:6;29781:15;29774:36;29589:228;:::o;29823:366::-;29965:3;29986:67;30050:2;30045:3;29986:67;:::i;:::-;29979:74;;30062:93;30151:3;30062:93;:::i;:::-;30180:2;30175:3;30171:12;30164:19;;29823:366;;;:::o;30195:419::-;30361:4;30399:2;30388:9;30384:18;30376:26;;30448:9;30442:4;30438:20;30434:1;30423:9;30419:17;30412:47;30476:131;30602:4;30476:131;:::i;:::-;30468:139;;30195:419;;;:::o;30620:250::-;30760:34;30756:1;30748:6;30744:14;30737:58;30829:33;30824:2;30816:6;30812:15;30805:58;30620:250;:::o;30876:366::-;31018:3;31039:67;31103:2;31098:3;31039:67;:::i;:::-;31032:74;;31115:93;31204:3;31115:93;:::i;:::-;31233:2;31228:3;31224:12;31217:19;;30876:366;;;:::o;31248:419::-;31414:4;31452:2;31441:9;31437:18;31429:26;;31501:9;31495:4;31491:20;31487:1;31476:9;31472:17;31465:47;31529:131;31655:4;31529:131;:::i;:::-;31521:139;;31248:419;;;:::o;31673:178::-;31813:30;31809:1;31801:6;31797:14;31790:54;31673:178;:::o;31857:366::-;31999:3;32020:67;32084:2;32079:3;32020:67;:::i;:::-;32013:74;;32096:93;32185:3;32096:93;:::i;:::-;32214:2;32209:3;32205:12;32198:19;;31857:366;;;:::o;32229:419::-;32395:4;32433:2;32422:9;32418:18;32410:26;;32482:9;32476:4;32472:20;32468:1;32457:9;32453:17;32446:47;32510:131;32636:4;32510:131;:::i;:::-;32502:139;;32229:419;;;:::o;32654:222::-;32794:34;32790:1;32782:6;32778:14;32771:58;32863:5;32858:2;32850:6;32846:15;32839:30;32654:222;:::o;32882:366::-;33024:3;33045:67;33109:2;33104:3;33045:67;:::i;:::-;33038:74;;33121:93;33210:3;33121:93;:::i;:::-;33239:2;33234:3;33230:12;33223:19;;32882:366;;;:::o;33254:419::-;33420:4;33458:2;33447:9;33443:18;33435:26;;33507:9;33501:4;33497:20;33493:1;33482:9;33478:17;33471:47;33535:131;33661:4;33535:131;:::i;:::-;33527:139;;33254:419;;;:::o;33679:191::-;33719:3;33738:20;33756:1;33738:20;:::i;:::-;33733:25;;33772:20;33790:1;33772:20;:::i;:::-;33767:25;;33815:1;33812;33808:9;33801:16;;33836:3;33833:1;33830:10;33827:36;;;33843:18;;:::i;:::-;33827:36;33679:191;;;;:::o;33876:222::-;34016:34;34012:1;34004:6;34000:14;33993:58;34085:5;34080:2;34072:6;34068:15;34061:30;33876:222;:::o;34104:366::-;34246:3;34267:67;34331:2;34326:3;34267:67;:::i;:::-;34260:74;;34343:93;34432:3;34343:93;:::i;:::-;34461:2;34456:3;34452:12;34445:19;;34104:366;;;:::o;34476:419::-;34642:4;34680:2;34669:9;34665:18;34657:26;;34729:9;34723:4;34719:20;34715:1;34704:9;34700:17;34693:47;34757:131;34883:4;34757:131;:::i;:::-;34749:139;;34476:419;;;:::o;34901:194::-;34941:4;34961:20;34979:1;34961:20;:::i;:::-;34956:25;;34995:20;35013:1;34995:20;:::i;:::-;34990:25;;35039:1;35036;35032:9;35024:17;;35063:1;35057:4;35054:11;35051:37;;;35068:18;;:::i;:::-;35051:37;34901:194;;;;:::o;35101:229::-;35241:34;35237:1;35229:6;35225:14;35218:58;35310:12;35305:2;35297:6;35293:15;35286:37;35101:229;:::o;35336:366::-;35478:3;35499:67;35563:2;35558:3;35499:67;:::i;:::-;35492:74;;35575:93;35664:3;35575:93;:::i;:::-;35693:2;35688:3;35684:12;35677:19;;35336:366;;;:::o;35708:419::-;35874:4;35912:2;35901:9;35897:18;35889:26;;35961:9;35955:4;35951:20;35947:1;35936:9;35932:17;35925:47;35989:131;36115:4;35989:131;:::i;:::-;35981:139;;35708:419;;;:::o;36133:143::-;36190:5;36221:6;36215:13;36206:22;;36237:33;36264:5;36237:33;:::i;:::-;36133:143;;;;:::o;36282:351::-;36352:6;36401:2;36389:9;36380:7;36376:23;36372:32;36369:119;;;36407:79;;:::i;:::-;36369:119;36527:1;36552:64;36608:7;36599:6;36588:9;36584:22;36552:64;:::i;:::-;36542:74;;36498:128;36282:351;;;;:::o;36639:85::-;36684:7;36713:5;36702:16;;36639:85;;;:::o;36730:158::-;36788:9;36821:61;36839:42;36848:32;36874:5;36848:32;:::i;:::-;36839:42;:::i;:::-;36821:61;:::i;:::-;36808:74;;36730:158;;;:::o;36894:147::-;36989:45;37028:5;36989:45;:::i;:::-;36984:3;36977:58;36894:147;;:::o;37047:114::-;37114:6;37148:5;37142:12;37132:22;;37047:114;;;:::o;37167:184::-;37266:11;37300:6;37295:3;37288:19;37340:4;37335:3;37331:14;37316:29;;37167:184;;;;:::o;37357:132::-;37424:4;37447:3;37439:11;;37477:4;37472:3;37468:14;37460:22;;37357:132;;;:::o;37495:108::-;37572:24;37590:5;37572:24;:::i;:::-;37567:3;37560:37;37495:108;;:::o;37609:179::-;37678:10;37699:46;37741:3;37733:6;37699:46;:::i;:::-;37777:4;37772:3;37768:14;37754:28;;37609:179;;;;:::o;37794:113::-;37864:4;37896;37891:3;37887:14;37879:22;;37794:113;;;:::o;37943:732::-;38062:3;38091:54;38139:5;38091:54;:::i;:::-;38161:86;38240:6;38235:3;38161:86;:::i;:::-;38154:93;;38271:56;38321:5;38271:56;:::i;:::-;38350:7;38381:1;38366:284;38391:6;38388:1;38385:13;38366:284;;;38467:6;38461:13;38494:63;38553:3;38538:13;38494:63;:::i;:::-;38487:70;;38580:60;38633:6;38580:60;:::i;:::-;38570:70;;38426:224;38413:1;38410;38406:9;38401:14;;38366:284;;;38370:14;38666:3;38659:10;;38067:608;;;37943:732;;;;:::o;38681:831::-;38944:4;38982:3;38971:9;38967:19;38959:27;;38996:71;39064:1;39053:9;39049:17;39040:6;38996:71;:::i;:::-;39077:80;39153:2;39142:9;39138:18;39129:6;39077:80;:::i;:::-;39204:9;39198:4;39194:20;39189:2;39178:9;39174:18;39167:48;39232:108;39335:4;39326:6;39232:108;:::i;:::-;39224:116;;39350:72;39418:2;39407:9;39403:18;39394:6;39350:72;:::i;:::-;39432:73;39500:3;39489:9;39485:19;39476:6;39432:73;:::i;:::-;38681:831;;;;;;;;:::o;39518:180::-;39566:77;39563:1;39556:88;39663:4;39660:1;39653:15;39687:4;39684:1;39677:15;39704:185;39744:1;39761:20;39779:1;39761:20;:::i;:::-;39756:25;;39795:20;39813:1;39795:20;:::i;:::-;39790:25;;39834:1;39824:35;;39839:18;;:::i;:::-;39824:35;39881:1;39878;39874:9;39869:14;;39704:185;;;;:::o;39895:177::-;40035:29;40031:1;40023:6;40019:14;40012:53;39895:177;:::o;40078:366::-;40220:3;40241:67;40305:2;40300:3;40241:67;:::i;:::-;40234:74;;40317:93;40406:3;40317:93;:::i;:::-;40435:2;40430:3;40426:12;40419:19;;40078:366;;;:::o;40450:419::-;40616:4;40654:2;40643:9;40639:18;40631:26;;40703:9;40697:4;40693:20;40689:1;40678:9;40674:17;40667:47;40731:131;40857:4;40731:131;:::i;:::-;40723:139;;40450:419;;;:::o;40875:410::-;40915:7;40938:20;40956:1;40938:20;:::i;:::-;40933:25;;40972:20;40990:1;40972:20;:::i;:::-;40967:25;;41027:1;41024;41020:9;41049:30;41067:11;41049:30;:::i;:::-;41038:41;;41228:1;41219:7;41215:15;41212:1;41209:22;41189:1;41182:9;41162:83;41139:139;;41258:18;;:::i;:::-;41139:139;40923:362;40875:410;;;;:::o;41291:220::-;41431:34;41427:1;41419:6;41415:14;41408:58;41500:3;41495:2;41487:6;41483:15;41476:28;41291:220;:::o;41517:366::-;41659:3;41680:67;41744:2;41739:3;41680:67;:::i;:::-;41673:74;;41756:93;41845:3;41756:93;:::i;:::-;41874:2;41869:3;41865:12;41858:19;;41517:366;;;:::o;41889:419::-;42055:4;42093:2;42082:9;42078:18;42070:26;;42142:9;42136:4;42132:20;42128:1;42117:9;42113:17;42106:47;42170:131;42296:4;42170:131;:::i;:::-;42162:139;;41889:419;;;:::o
Swarm Source
ipfs://0963ca6a51712ac4fbef25dc3b4ad15f1b201b3023450db3435f693697eeda27
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.